赞
踩
在进行APP测试之前,需要准备下列步骤。通过以下网站可以查找。
移动观象台:http://mi.talkingdata.com/terminals.html
1.1 确定APP的设备
选定被测试的设备终端。
1.2 确定APP的版本
确定被测试的APP的版本号和操作系统类型
1.3 确定操作系统
确定运行被测试设备的操作系统
1.4 准备表格记录APP的设备和版本
测试工作开始前,需要确定App需要测试的操作系统版本和设备列表
编号 | OS | OS Version | 分类 | Model | 制造商 | 屏幕尺寸 | 分辨率 |
---|---|---|---|---|---|---|---|
001 | iOS | 7.1 | iPhone | 5S | Apple | 4 | |
002 | iOS | 8.1 | iPhone | 6S | Apple | 4.7 | |
003 | iOS | 8.0.2 | iPhone | 6 | Apple | 4.7 | |
004 | iOS | 8.1.2 | iPhone | 6 Plus | Apple | 5.5 | |
005 | iOS | 8.0.2 | iPad | Air 2 | Apple | 9.7 | |
006 | iOS | 8.1.2 | iTouch | 5 | Apple | 4 | |
007 | Android | 5.1 | Phone | One XL | HTC | 4.7 | 1280*720 |
008 | Android | 4.5 | Phone | PRO 5 | Meizu | 5.7 | 1920*1080 |
009 | Android | 4.2 | Phone | Galaxy S6 | Samsung | ||
010 | Android | 4.4.2 | Phone | Galaxy S5 | Samsung | ||
011 | Android | 4.4.2 | Phone | MX 4 | Meizu | ||
012 | Android | 4.4.4 | Phone | Nexus 5 | |||
013 | Android | 4.4.4 | Phone | Mi 4 | Xiaomi | ||
014 | Android | 4.2.2 | Tablet | Galaxy Tab3 | Samsung |
2.1 “移动”测试App
由于现在3G和4G网络都已经非常普及,需要优先测试App在这两种网络环境下的表现。同时需要测试4G信号无法覆盖的时候,App切换到3G、2G的环境下进行测试甚至到无网络的环境下测试。当网络恢复的时候,App是否会自动切换回来,并且执行网络断开前用户的操作。
一般可以选择在地铁、公交、电梯、隧道灯代表性的场所进行测试。
一般可以选择在地铁、公交、电梯、隧道灯代表性的场所进行测试。
测试APP在网络异常的情况下,是否发生 ANR 和 Crash
2.2 App的多任务和意外情况处理
测试App的同时接听电话,是否还能够继续使用App。
步骤:
1. 正常打开被测APP
2.运行APP的功能
3.突然被其他应用打断(意外,短信、电话、通知)
4.切换到该应用、或者、忽略该应用
5.被测APP能够继续之前的操作,不发生ANR或者Crash
2.3 测试App的手势操作
2.4 测试App的用户体验
2.5 测试App的消息显示和通知显示*
通知显示的方式:
测试要点
2.6 测试App能否及时显示和同步数据
Web端 + PC端 + APP端
2.7 测试App能否响应不同的设备用户界面
测试App是否适应用户界面,必须使用真实设备进行测试。比如测试HTC Sense用户界面底部的黑色导航栏,测试小米MIUI系统桌面的角标提醒功能,测试iOS的角标提醒,测试魅族Flyme的SmartBar操作等。
2.8 测试App中高内存使用的功能
查看App是否有对应的异步加载功能等
主要测试场景:
检查APP是否读入全部图片到内存中
2.9 测试App的流量和电量消耗
2.10 测试App的增量升级
2.11 测试App支持的文件格式
2.12 安装卸载测试
2.13 应用召唤
不同应用之间的应用召唤
测试步骤:
【支付宝支付】
1.打开被测试的应用程序APP
2.使用APP指定的功能
3.APP支付选择“支付宝”
4.测试是否提示“允许打开支付宝”(iOS测试)
5.测试支付宝没有安装的情况下,APP是否有正确提示(未安装支付宝)
6.测试支付宝正确安装的情况下,未登录支付宝,是否提示登录页面
7.测试支付宝正确安装的情况下,已登录支付宝,是否提示支付页面
易测是一款基于无线客户端研发场景的通用测试工具, 它通过在研发人员的自持机上提供各种辅助能力&标准化的专项测试服务来提升研发质量&效率。
易测:http://mqc.aliyun.com/download.htm?spm=0.0.0.0.LKnIoR
4.1 ADB 命令
adb:
adb 的全称为Android Debug Bridge,就是起到调试桥的作用。通过adb我们可以在Eclipse中方面通过DDMS来调试Android程序,说白了就是debug工具。adb的工作方式比较特殊,采用监听Socket TCP 5554等端口的方式让IDE和Qemu通讯,默认情况下adb会daemon相关的网络端口,所以当我们运行Eclipse或Android Studio时adb进程就会自动运行。
借助adb工具,我们可以管理设备或手机模拟器的状态。还可以进行很多手机操作,如安装软件、系统升级、运行shell命令等等。其实简而言说,adb就是连接Android手机与PC端的桥梁,可以让用户在电脑上对手机进行全面的操作
adb 在sdk的platform-tools目录中
Android SDK 下载网站 http://www.androiddevtools.cn/(非官方)
ADB 是连接 Windows 命令行(也可以是Linux或者Mac)到 Andriod手机(模拟器)的Android操作系统的 桥梁(调试桥)
ADB的测试环境搭建:
然后打开 Windows 命令窗口
cd C:\Users\Linty\AppData\Local\Android\android-sdk\platform-tools
ADB连接夜神模拟器示例:
ADB环境的搭建步骤(连接夜神模拟器):
1.打开Android模拟器(夜神模拟器)
也可以打开Android手机(已经ROOT),在勾选“允许USB调试”的选项后,连接手机
2.解压缩 platform-tools_r22-windows.zip 到 C:\
3.打开 cmd
4.进入解压后的文件夹
cd C:\platform-tools_r22-windows\platform-tools
5.连接夜神模拟器
adb connect 127.0.0.1:62001
连接成功后,提示 connected to 127.0.0.1:62001
6.进入 ADB Shell 模式
adb shell
成功后,进入ADB 的SHELL模式
root@android:/ #
ADB的两种模式:
模式一:进入 ADB SHELL 模式 adb shell
模式二:直接 adb + 命令 来执行 ADB命令
1.adb连接前
显示当前运行的全部连接到当前电脑的设备,包括手机和模拟器等:
adb devices
连接指定的模拟器或设备
adb connect 127.0.0.1:62001
断开指定的模拟器或设备
adb disconnect
启动ADB
adb start-server
关闭ADB
adb kill-server
2.进入 adb的shell环境
进入adb的shell环境
adb shell
查看包名
adb shell
root@android:/ # ls data/data
记录无线通讯日志
adb shell
root@android:/ # logcat -b radio
删除系统应用
adb shell
root@android:/ # cd system/app
root@android:/ # rm xxxx.apk
退出adb的shell环境
root@android:/ # exit
3.adb命令模式
安装应用程序
adb install -r C:\xxxxx.apk
获取设备中的文件
adb pull <remote> <local>
adb pull /addroid/lib/libwebcore.so c:\tmp
向设备中写入文件
adb push <local> <remote>
adb push C:\test.txt /tmp/test.txt
卸载应用程序
adb shell
cd data/app
rm apk包
exit
adb uninstall apk包的主包名
获取管理员权限
adb root
获取设备的序列号
adb get-serialno
进入SQLite环境
adb shell
sqlite3
QLite的基本操作,SQLite没有用户的概 念 。
Snap1.jpg
示例:安装TPshop的Android客户端
步骤如下:
1.用ADB连接上设备
adb connect 127.0.0.1:62001
2.用ADB的方式安装APP
adb install -r C:\tmp\soubaoShopMobile-debug.apk
3.安装成功,在ADB SHELL环境中 执行 Monkey(压力测试工具)
# 进入 ADB SHELL 环境
adb shell
# 获取 TPSHOP 的APP的包名
root@android:/ # ls data/data | gerp soubao
com.soubao.tpshop
# 执行 Monkey
root@android:/ # monkey -p com.soubao.tpshop -v -v -v 5000 -throttle 5000 --pct-motion 80% > sdcard/monkey_tpshop.log
4.用ADB 获取日志到本地C盘的tmp目录中
# 退出 ADB SHELL 环境
root@android:/ # exit
# 用 ADB PULL 获取文件
adb pull sdcard/monkey_tpshop.log
[100%] sdcard/monkey_tpshop.log
5.用ADB的方式卸载
adb shell
root@android:/ # ls data/data | grep soubao
# 获取到 app的包名
com.soubao.tpshop
# 退出 adb shell
root@android:/ # exit
adb uninstall com.soubao.tpshop
Monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕、滑动Trackball、按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常。
顾名思义,Monkey就是猴子, Monkey测试,就像一只猴子, 在电脑面前,乱敲键盘在测试。 猴子什么都不懂, 只知道乱敲,通过Monkey程序模拟用户触摸屏幕、滑动Trackball、 按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常
Monkey 主要用于Android 的压力测试 自动的一个压力测试小工具, 主要目的就是为了测试app 是否会Crash.
Monkey程序由Android系统自带,使用Java语言写成,在Android文件系统中的存放路径是:/system/framework/monkey.jar;
Monkey.jar程序是由一个名为“monkey”的Shell脚本来启动执行,shell脚本在Android文件系统中的存放路径是:/system/bin/monkey;
可以在命令行中输入
这样就可以通过在CMD窗口中执行: adb shell monkey {+命令参数}来进行Monkey测试了。
0.00255359997618565.png
查看Monkey命令帮助
adb shell monkey –help
类别 | 选项 | 说明 |
---|---|---|
常规 | –help | 列出简单的用法。 |
-v | 命令行的每一个 -v 将增加反馈信息的级别。 Level 0( 缺省值 ) 除启动提示、测试完成和最终结果之外,提供较少信息。 Level 1 提供较为详细的测试信息,如逐个发送到 ActivITy 的事件。 Level 2提供更加详细的设置信息,如测试中被选中的或未被选中的Activity 。 | |
事件 | -s < seed > | 伪随机数生成器的seed 值。如果用相同的 seed 值再次运行 Monkey ,它将生成相同的事件序列。 |
–throttle < milliseconds > | 在事件之间插入固定延迟。通过这个选项可以减缓 Monkey 的执行速度。如果不指定该选项, Monkey 将不会被延迟,事件将尽可能快地被产成。 | |
–pct-touch < percent > | 调整触摸事件的百分比(触摸事件是一个down-up事件,它发生在屏幕上的某单一位置)。 | |
–pct-motion < percent > | 调整动作事件的百分比(动作事件由屏幕上某处的一个down事件、一系列的伪随机事件和一个up事件组成)。 | |
–pct-trackball < percent > | 调整轨迹事件的百分比(轨迹事件由一个或几个随机的移动组成,有时还伴随有点击)。 | |
–pct-nav < ercent > | 调整“基本”导航事件的百分比(导航事件由来自方向输入设备的up/down/left/right组成)。 | |
–pct-majornav < percent > | 调整“主要”导航事件的百分比(这些导航事件通常引发图形界面中的动作,如:5-way键盘的中间按键、回退按键、菜单按键) | |
–pct-syskeys < percent > | 调整“系统”按键事件的百分比(这些按键通常被保留,由系统使用,如Home、Back、Start Call、End Call及音量控制键)。 | |
–pct-appswitch < percent > | 调整启动Activity的百分比。在随机间隔里,Monkey将执行一个startActivity()调用,作为最大程度覆盖包中全部Activity的一种方法。 | |
–pct-anyevent < percent > | 调整其它类型事件的百分比。它包罗了所有其它类型的事件,如:按键、其它不常用的设备按钮、等等。 | |
约束限制 | -p < allowed-package-name> | 如果用此参数指定了一个或几个包,Monkey将只允许系统启动这些包里的Activity。如果你的应用程序还需要访问其它包里的Activity(如选择取一个联系人),那些包也需要在此同时指定。如果不指定任何包,Monkey将允许系统启动全部包里的Activity。要指定多个包,需要使用多个 -p选项,每个-p选项只能用于一个包。 |
-c < main-category> | 如果用此参数指定了一个或几个类别,Monkey将只允许系统启动被这些类别中的某个类别列出的Activity。如果不指定任何类别,Monkey将选择下列类别中列出的Activity:Intent.CATEGORY_LAUNCHER或Intent.CATEGORY_MONKEY。要指定多个类别,需要使用多个-c选项,每个-c选 项只能用于一个类别。 | |
调试 | –dbg-no-events | 设置此选项,Monkey将执行初始启动,进入到一个测试Activity,然后不会再进一步生成事件。为了得到最佳结果,把它与-v、一个或几个包约束、以及一个保持Monkey运行30秒或更长时间的非零值联合起来,从而提供一个环境,可以监视应用程序所调用的包之间的转换。 |
–hprof | 设置此选项,将在Monkey事件序列之前和之后立即生成profiling报告。这将会在data/misc中生成大文件(~5Mb),所以要小心使用它。 | |
–ignore-crashes | –help | |
常规 | 通常,当应用程序崩溃或发生任何失控异常时,Monkey将停止运行。如果设置此选项,Monkey将继续向系统发送事件,直到计数完成。 | |
–ignore-timeouts | 通常,当应用程序发生任何超时错误(如“Application Not Responding”对话框)时,Monkey将停止运行。如果设置此选项,Monkey将继续向系统发送事件,直到计数完成。 | |
–ignore-security-exceptions | 通常,当应用程序发生许可错误(如启动一个需要某些许可的Activity)时,Monkey将停止运行。如果设置了此选项,Monkey将继续向系统发送事件,直到计数完成。 | |
–kill-process-after-error | 通常,当Monkey由于一个错误而停止时,出错的应用程序将继续处于运行状态。当设置了此选项时,将会通知系统停止发生错误的进程。注意,正常的(成功的)结束,并没有停止启动的进程,设备只是在结束事件之后,简单地保持在最后的状态。 | |
–monitor-native-crashes | 监视并报告Android系统中本地代码的崩溃事件。如果设置了–kill-process-after-error,系统将停止运行。 | |
–wait-dbg | 停止执行中的Monkey,直到有调试器和它相连接. |
实际使用的时候 Monkey的 -p -v -throttle –pct-motion 使用比较多
下面一个实例
adb shell
ls data/data
monkey -p im.tower.android -v -v -v 5000 -throttle 500 –pct-motion 80% > sdcard\monkey.log
使用monkey进行Tower的压力测试,使用级别2,操作5000个随机命令,并且每个命令延迟5秒钟,滑动的命令占80%。
正常情况, 如果Monkey测试顺利执行完成, 在log的最后, 会打印出当前执行事件的次数和所花费的时间;
// Monkey finished 代表执行完成\
Monkey 测试出现错误后,一般的分析步骤
看Monkey的日志 (注意第一个swith以及异常信息等)
程序无响应的问题: 在日志中搜索 “ANR”
崩溃问题:在日志中搜索 “Exception” (如果出现空指针, NullPointerException) 肯定是有bug
Monkey 执行中断, 在log最后也能看到当前执行次数
主要的测试内容:
1.易测安全扫描:上传APP到易测平台,由阿里云扫描并发报告。
2.权限的测试:
1.检查APP申请的权限,列出所有权限
2.对所有的权限进行场景描述
3.消息的控制:
1.显示消息的形式
2.显示消息的时机(锁屏是否显示)
随着移动互联网的发展,移动测试技术越来越成熟,很多优秀的开源测试框架涌现出来。作为一个移动测试工程师,我们不仅要夯实自己的技术能力,也要学会从开源框架吸取经验。俗话说,站在巨人的肩膀上,我们会看得更远。移动端的测试框架主要分为自动化测试框架,性能测试框架,稳定性测试框架和安全测试框架这几种类型。下面我们分这几个类型介绍10个最常用的移动端测试框架。
6.1 自动化测试框架
官方网站:http://appium.io/
Github下载地址:https://github.com/appium/appium
说到移动端的自动化框架,最有名的当属Appium。Appium是一个开源的跨平台移动端UI自动化测试框架,它支持native,hybrid和web app的测试。目前有超过100个贡献者在github上维护和优化Appium的源代码。关于Appium的中文资料也非常多,比较齐全的是乙醇的博客,总结了11篇博文介绍Appium的用法,可以访问http://www.cnblogs.com/nbkhic/tag/appium/ 来查看。另外在testerhome上也有专门针对Appium的讨论社区,在上面你可以跟各种行业大牛沟通和交流。https://testerhome.com/topics/node23
官方网站:http://baiduqa.github.io/Cafe/
Github下载地址:https://github.com/BaiduQA/Cafe
Cafe,是一款来自百度QA部门的Android平台自动化测试框架,框架覆盖了Android自动化测试的各种需求,致力于实现跨进程测试、快速测试、深度测试,解决了Android自动化测试中的诸多难题,比如业界一直没有解决的跨进程测试问题。主要亮点有:基于hook录制体系,遍历测试,跨app测试,pc agent设计,使用android 漏洞提权。
Github下载地址:https://github.com/taobao-chenxu/athrun-framework
Athrun 无线测试框架是淘宝自动化测试团队开发的UI自动化测试框架,支持Android和iOS移动App的UI自动化测试。Athrun以Mobile自动化为基础,以PC2Mobile为切入点,是淘宝Mobile测试日常工作必备的平台。目前Athrun支持:Android上的自动化测试,包括自动化测试框架,持续集成体系。覆盖率工具和自动录制回放工具,也在试用完善中。iOS上的自动化测试,包括注入式自动化框架AppFramework,和基于录制的非注入式自动化框架Athrun_IOS,还有持续集成体系。目前两个框架在淘宝测试内都有用户群,都还在不断使用和演进过程中。AppFramework将会支持socket通信方式。
6.2 性能测试框架
1)网易Emmagee
Github下载地址:https://github.com/NetEase/Emmagee
Wiki: https://github.com/NetEase/Emmagee/wiki
Issues: https://github.com/NetEase/Emmagee/issues
FAQ: https://github.com/NetEase/Emmagee/wiki/FAQ
Emmagee是一个实用的手工Android端性能测试工具,它可以实时监控Android App的CPU,内存,网络流量,电量等。如果手机Root的话,还可以监控top activity及堆信息。此外,它还能根据用户需要设置收集数据的时间间隔。最终以csv文件的方式将报告保存在本地。
2)腾讯APT
Github下载地址:https://github.com/stormzhang/APT
Tencent APT Mirror, APT是一个Android平台高效性能测试组件,提供丰富实用的功能,适用于开发自测、定位性能瓶颈;测试人员完成性能基准测试、竞品对比测试。APT是一个eclipse插件,可以实时监控Android手机上多个应用的CPU、内存数据曲线,并保存数据;另外还支持自动获取内存快照、PMAP文件分析等,方便开发人员自测或者测试人员完成性能测试,快速发现产品问题。
6.3 稳定性测试框架
1)CrashMonkey4IOS
Github下载地址:https://github.com/vigossjjj/CrashMonkey4IOS
CrashMonkey4IOS是一个iOS稳定性测试工具。它主要支持以下功能:
2)CrashMonkey4Android
Github下载地址:https://github.com/DoctorQ/CrashMonkey4Android
CrashMonkey4Android,是一个依靠Cts框架,对原生Monkey进行改造后的产物,拥有以下新增功能:
3)ui-auto-monkey
Github下载地址:https://github.com/jonathanpenn/ui-auto-monkey
UI AutoMonkey是一个简单的面向iOS应用程序的压力测试插件框架。 你可以通过它向你的应用程序连续发出一系列随机的点击,滑动,旋转屏幕,锁屏,解锁等事件。同时它会通过instrument对你的App的性能状况进行实时监控。当应用程序发生crash,它会收集相关的crash日志并存储在本地。
6.4 安全测试框架
1)Mobile-Security-Framework-MobSF
Github下载地址:https://github.com/penghaibo203/Mobile-Security-Framework-MobSF
Mobile Security Framework (移动安全框架) 是一款智能、一体化的开源移动应用(Android/iOS)自动渗透测试框架,它能进行静态、动态的分析。
该框架支持二进制文件(APK & IPA)和源码压缩包。该框架的另一个特点是其可扩展性,你可以轻松制定自定义规则。测试结束后程序会生成一份清晰的报告。我们会进一步拓展次框架以支持Tizen、WindowsPhone等平台。
2)AndroBugs_Framework
官方网站:http://www.androbugs.com/
Github下载地址:https://github.com/jackcn2004/AndroBugs_Framework
AndroBugs框架是一款高效的Android漏洞扫描器,可以帮助开发人员或渗透测试人员在Android应用程序查找潜在的安全漏洞。它是基于Python语言开发的,无需安装,配置相关环境即可使用。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。