App测试理论

Tester_Qin 2019-10-31 11:47:31
01.Android与iOS的对比 Android开发语言:Java及C iOS开发语言:Objective-C IOS的特性:流畅度、稳定性、安全性高,碎片化低、应用发布相对Android慢、功耗大 Android优势:开源、门槛低、市场大、扩展性高,可玩性高 *2.Android架构 Linux系统及驱动-本地框架和Java运行环境-Java框架-Java应用程序 底层部分-核心部分-应用部分 硬件部分-数据库及框架-应用 *3.App测试流程. --测试资源确认及准备 --测试用例的设计与评审 --UI测试 (1) 确保原型图与效果图为最新版本,符合产品经理及用户要求; (2) 测试过程中一切以效果图为准,若有用户体验方面的建议,与产品经理确认,确认通过后,可以正式向开发提出用户体验方面的需求 (3) 由于测试环境中的数据为模拟数据,测试时必须预先考虑到正式环境中可能出现的数据类型。 --易用性测试 (1)界面与交互性测试:符合Android交互规范,符合用户使用习惯,操作方便简单,具有一致性。 (2)可用性测试:用户体验好,用户操作方便,用户使用错误率低。 --功能测试 (1) 功能测试时主要依据编写的功能测试用例进行软件功能的遍历; (2) 涉及的测试主要包括基本功能测试,安装、卸载、运行测试,异常处理(包括网络突然断开或者网速过慢、机器内存不足等异常情况的处理)测试。 --中断测试 (1)交互性测试:客户端作为手机特性测试,包含被打扰的情况13种,来电,来短信,低电量测试等,由前台切换到后台,再切回前台后,还要注意手机端硬件上 (2)异常性测试:主要包含了断网、断电、服务器异常等情况下,客户端能否正常处理,保证数据正确性。 --兼容性及适配测试 (1) 硬件的适配 (2) OS版本的兼容 (3) 不同分辨率屏幕的适配 (4) 兼容性测试必须在一定数量的真机上进行,选取典型的几种运用较多的真机 (5) 另外可以借助开源测试testin云测 --性能测试 (1) 客户端性能测试重点关注:安装卸载时间、启动时间、页面加载时间、主要功能占用的CPU、内存、流量、耗电量等,以及与同类产品相比较是否有优势; (2) 至于服务器端的性能,主要利用接口对服务器施加压力,重点关注响应时间、吞吐量、并发数、事物通过率等,可以视同工具loadrunner、jmeter进行测试。 --稳定性测试 (1) 通过随机事件流模拟人的操作 (2) Monkey主要用来检测系统ANR及Crash等问题 --测试分析及测试报告输出 4. ADB的主要功能有 ADB是一个客户端-服务器端程序,其中客户端是你用来操作的电脑,服务器端是android设备。 (1)运行设备的shell(命令行) (2)管理模拟器或设备的端口映射 (3)计算机和设备之间的上传/下载文件 (4)将本地apk软件安装至模拟器或android设备 5.adb 命令 1.adb devices:获取当前连接的Android设备列表及设备状态(模拟器、真机) 2.adb get-state : 获取设备的状态 3.adb install xxx.apk:安装app命令(覆盖安装是使用 -r 选项) 4.adb uninstall apk包名:卸载App命令 5.adb push <本地文件> <远程路径>:上传文件,把本地文件放到远程 6.adb pull <远程文件> <本地路径>:下载文件,从模拟器拉文件到本地 7.adb shell :可以使用命令进入并控制Android手机 8.adb kill-server :结束服务 9.adb start-server :启动服务 10.adb remount :获取 root 权限,并挂载系统文件系统为可读写状态 11.adb shell mount -o remount rw / , 修改系统读写权 12.adb –s <deviceid> logcat 日志 13.adb get-serialno 获得序列号(emulator-5554) 6.adb shell pm 命令 --adb shell pm list packages:列出安装在设备上的应用,查看所有包,没有类名 --pm install xxx.apk:将设备上的安装文件进行安装(先进adb shell 再输入命令) --pm uninstall 包名:删除应用程序 同adb uninstall (先进adb shell 再输入命令) 7.pm install 与adb install的区别 目标apk存放于PC端,请用adb install安装 目标apk存放于Android设备上,请用 pm intall安装 8.adb shell am 命令 adb shell am start –n 包名/ 类名:启动activity adb shell am force-stop 包名:关闭activity(强制关闭) adb shell input keyevent X:发送按键事件 adb shell input text 内容:发送文本内容,不能发送中文 adb shell screencap -p 路径 :截图命令 9.adb shell monkey随机运行程序 ---运行monkey,对此包进行300次无规律点击: adb shell monkey -p com.android.camera -v 300 --将日志导出到电脑的某一位置 adb shell -p 包名 -v 点击数 >电脑某一位置 10.adb shell monkey 参数 常规类参数 -v作用:命令行上的每一个-v都将增加反馈信息的详细级别。 事件类参数 -s(随机数种子)作用:用于指定伪随机数生成器的seed值; --throttle <毫秒> 作用:用于指定用户操作(即事件)间的延时,单位是毫秒; --pct-{+事件类别}{+事件类别百分比}; --pct-touch <percent>作用:调整触摸事件的百分比; --pct-motion <percent>作用:调整motion事件百分比; --pct-trackball <percent>作用:调整滚动球事件百分比; --pct-nav <percent>作用:调整基本的导航事件百分比; --pct-majornav <percent>作用:调整主要导航事件的百分比; --pct-syskeys <percent>作用:调整系统事件百分比; --pct-appswitch <percent>作用:调整Activity启动的百分比; --pct-anyevent作用:调整其他事件的百分比; --pct -anyevent 100 1000* 指定多个类型事件的百分比; 约束类参数 -p <allowed-package-name>作用:指定一个或多个包,Monkey将只允许访问这些包中的Activity。 --ignore-crashes 作用: 用于指定当应用程序崩溃时(Force& Close错误),Monkey依然会发送事件,直到事件计数完成。 --ignore-timeouts 作用:应用程序发生任何超时错误,Monkey将继续发送事件给系统,直到事件计数完成。 --ignore-security-exception作用:当程序发生许可错误,Monkey将继续发送事件给系统,直到事件计数完成。 --kill-process-after-error 当Monkey由于一个错误而停止时,出错的应用程序将继续处于运行状态,将会通知系统停止发生错误的进程。 --monitor-native-crashes 作用:监视并报告Andorid系统中本地代码的崩溃事件。 --kill-process-after-error,系统将停止运行。 --wait-dbg 作用:停止执行中的Monkey,直到有调试器和它相连接。 11.日志查看 日志: 1. 实时日志 adb logcat ddms 2. 状态信息日志 adb bugreport 3. ANR日志(ANR日志路径:/data/anr/traces.txt) 4. Monkey日志 adb shell monkey -p 包名 -v >导到哪里 12. 查看包名的方法有哪些 --/data/data (通过adb shell 命令进入手机查看 ) --DDMS工具 --ActivityManager:I *:s ( adb logcat ActivityManager:I *:s ) --adb shell pm list packages |findstr emm --aapt dump badging <file_path.apk> :如没有加环境变量,需cd到工具目录下(sdk/build-tools) 13.为什么要进行App专项测试 -- Crash问题(死机) --设备兼容性问题 --流量占用率的问题 --App在整个电量的占用比问题 --App在不同的网络环境下,出现的白屏问题 14.App专项测试有哪些方面 稳定性测试、兼容性测试(CTS)、流量测试、电量测试、弱网测试、性能测试 15.流量测试应该注意的测试项: --应用首次启动的流量提示 --应用后台连续运行2小时的平均流量值 --应用在运行极限的平均流量值(大数据传输) --针对场景法涉及的应用主流程方面的测试 --在首次登陆时的平均值(多台设备测试) 16. 使用tcpdump抓取流量数据包,抓取步骤 --将tcpdump文件拷贝到 /data/local/目录: adb push tcpdump /data/local --修改文件权限: adb shell chmod 777 /data/local/tcpdump --判断是否有root权限:adb shell 在# 后输入:/data/local/tcpdump -s 0 -w /data/capture.pcap -v --将抓到的数据包capture.pcap拖到本地(指定到d:):adb pull /data/capture.pcap D:\ --使用Wireshark网络协议分析器,分析抓到的流量包 --在wireshark工具中,使用filter做过滤,根据wireshark显示过滤器的语法 17.如何模拟弱网测试 使用代理方式,主要思路就是手机和PC/Mac电脑都连接同一个WiFi,使用电脑上的WiFi的限速功能来实现模拟弱网络的情况 --模拟2g网络时,下载速度限制在2kb/s-7kb/s之间 --模拟edge网络时、 网速限制在5kb/s-20kb/s之间 --模拟3g网络时、网速限制在20kb/s-200kb/s之间 --模拟4g网络时、网速限制在150kb/s-2M之间 18.安全测试 --安装包是否支持反编译代码 --安装包是否签名 --权限设置的检查 --敏感信息测试 --账户安全性测试 19.性能测试 启动时间、 内存是否泄露、用户响应、图形动画、文件和网络I/O等 20.monkeyrunner如何连接手机 monkeyrunner工具提供了一个API,使用此API写出的程序可以在Android代码之外控制Android设备和模拟器。 *21. Monkey与MonkeyRunner区别: Monkey:伪随机事件流 MonkeyRunner:是在工作站上通过API定义的特定命令和事件控制设备或模拟器。 MonkeyRunner主要应用于功能测试和回归测试 22.monkeyrunner --导入模块: from com.android.monkeyrunner import MonkeyRunner from com.android.monkeyrunner import MonkeyDevice from com.android.monkeyrunner import MonkeyImage --连接当前设备,并返回一个MonkeyDevice对象 device = MonkeyRunner.waitForConnection() --安装、卸载 device.installPackage('D:/003-APP/Emmagee2.4.apk') device.removePackage ('com.netease.qa.emmagee') --启动一个Activity device.startActivity(component='com.netease.qa.emmagee/.activity.MainPageActivity') --截图 result = device.takeSnapshot() result.writeToFile('D:\\test.png','png') --时延(秒) MonkeyRunner.sleep(3) --滑动屏幕 device.drag((250,850),(250,110),3) [x,y,时间-在几秒内拖动] --触击屏幕 device.touch(507,72,"DOW_AND_UP") --执行adb shell命令 device.shell("input text group01") --系统按键 device.press('KEYCODE_HOME','DOWN_AND_UP') device.press('KEYCODE_BACK','DOWN_AND_UP') --输入 device.type('helloworld')
...全文
107 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
baidu_30083363 2019-11-14
  • 打赏
  • 举报
回复
谢谢分享谢谢
Tester_Qin 2019-11-08
  • 打赏
  • 举报
回复
我也是个菜鸟
萌新诚心求教 2019-11-07
  • 打赏
  • 举报
回复
优秀,萌新膜拜大佬

488

社区成员

发帖
与我相关
我的任务
社区描述
硬件使用 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧