5.移动APP测试


1. APP测试基础

    1-1. 灰度测试:先给一部分用户使用,通过用户反馈修复一些不足,再逐步放开客户群体

    1-2. APP测试点:功能测试、安全测试、用户体验测试、交叉事件测试、兼容性测试、性能测试、
                安装/卸载/升级测试、UI测试

    1-3. App测试与web测试的区别
            1. 系统架构:web端系统更新服务器,不需要更新客户端;APP更新了服务端,客户端也要更新并测试;
            2. 兼容性:Web端要考虑不同的浏览器内核进行测试(IE、chrome、Firefox),
                   APP的兼容性要考虑选择主流的机型,不同的分辨率、尺寸, 以及不同的操作系统;
            3. App要考虑交叉事件测试,安装,卸载,前后台切换测试;
            4. App还要考虑界面操作,如:横竖屏切换,多点触控,事件触发区域。

    1-4. 为什么要限速/模拟弱网?
        主要是模拟app端(也包括pc端)在网速较低的情况下,是否有bug,对用户体验是否有影响。


2. ADB的使用

         SDK 软件开发工具包
         ADT Android Debug Tools
         ADB Android Debug Bridge

        ADB是一个 客户端-服务器端 程序, 其中客户端是你用来操作的电脑, 服务器端是android设备.


    DOS窗口打开ADB

        指定盘符位置按住shift键,右键打开命令窗口,切换到以下路径,输入adb验证是否可用 
            Andriod_SDK\platform-tools

        或通过环境变量添加path路径,即...\Andriod_SDK\platform-tools,打开cmd,输入adb验证是否可用


    2-1. 连接Android设备        adb connect 设备名        例如:adb connect 127.0.0.1:62001

                常用模拟器(了解)
                网易mumu模拟器:adb connect 127.0.0.1:7555
                夜神模拟器:adb connect 127.0.0.1:62001/62025
                蓝叠模拟器:adb connect 127.0.0.1:5555
                雷电模拟器:adb connect 127.0.0.1:5555
                逍遥模拟器:adb connect 127.0.0.1:21503

            断开连接: adb disconnect 设备名

    2-2. 查看设备        adb devices            查看当前连接到计算机的android设备

    2-3. 安装软件        adb install 包名        将指定的apk文件安装到设备上(包名不要有中文)

              adb install 路径\-release.apk        或先输入adb install,再将apk包拖到DOS窗口

            若显示success,说明安装apk包成功,若显示Failure,则安装失败。
            检查错误,排错后,再执行命令:abd install -r 包名.apk

    2-4. 获取app的包名和activity名称

            输入下面的命令后打开软件,查看cmp后面的值

            adb logcat -v time | findstr START        脚本中,cmp= 后面的值就是 包名
            
                Ctrl + C 退出
            
            查看当前运行的APP的包名和打开的Activity
            adb shell "dumpsys window | grep mCurrentFocus" 

    2-5. 卸载软件        adb uninstall 包名

            获取包名(单个设备)
            adb shell pm list packages -3    (3指的第三方)

            获取包名(多个设备)
             adb -s 设备名 shell pm list packages -3

    2-6. 把本地文件上传到Android设备            adb push 本地文件路径 Android设备路径

            例:把E:\android\test.txt 上传到安卓服务器的/storage/sdcard0/目录
                    adb push E:\android\test.txt /storage/sdcard0/

              PS:文件管理器,依次进入storage/sdcard0,就能查看到刚才上传的文件
                      也可以使用命令adb shell,进入shell模式下,使用Linux命令查看,使用exit命令退出

              注:只能上传文件,无法上传文件夹
    


    2-7. 把Android设备的文件下载到本地            adb pull Android设备上的文件路径 本地路径

            例:把安卓服务器的/storage/sdcard0/test.txt下载到本地磁盘中的E:\android\目录
                adb pull /storage/sdcard0/test.txt E:\android


    2-8. monkey的使用  
 
             启动软件并且触发500个事件        adb shell monkey -p your.package.name -v 500

            如果正常跑完500次,会看到 Events injected: 500
            如果后面的数字小于500,表示monkey中途失败了

            延迟500毫秒,触发200个事件    adb shell monkey -p your.package.name --throttle 500 -v 200

            ( cls清屏 )


    2-9. 使用monkey做回归测试
              
              monkey命令还可以带-s参数,-s后面加上monkey上一次运行时候的产生seed值,
              就可以让monkey重复上一次运行时的操作路径,从而实现回归测试。

              例如跑30次,每次延时0.5秒:
              adb shell monkey -p app-weichi-release.apk --throttle 500 -s 45544215878 -v 30

            稳定性测试一般跑十万次就可以了

    2-10. 测试期间收集logcat日志(logcat日志,记录了用户的在系统上的所有操作)
        
                a. 先清空系统上原有的logcat日志:adb logcat -c
                b. 把logcat日志重定向导入指定位置:adb logcat -v time > E:\share\logcat.log    
    
            如果monkey停止后,不需要收集日志了,则需要终止 Ctrl + C


    2-11. 收集monkey日志

                把monkey日志导入到E盘的share目录下的monkey.log文件中:
                adb shell monkey -p your.package.name -v 500 > E:\share\monkey.log 
                        


    2-12. ANR或crash异常    

            monkey运行过程中,可能会出现异常,一般有以下两方面原因:

        1. 应用程序不响应(当系统5秒内无法响应用户输入事件,报application not responding,ANR);
                    系统出现类似这样的提示:APP提示无法响应,是结束进行还是继续等待    

            导致ANR的原因有:
                a、线程堵塞; logcat日志搜索关键字anr或anr in
                b、CPU不足;
                c、内存不足。
            
        2. 应用程序崩溃(crash)或接收到任何失控异常;
                    系统出现类似这样的提示:很抱歉,“xxx”已停止运行

            导致crash的原因有:
                a、程序存在空指针; (logcat日志搜索java.lang.NullPointerException)
                b、数组越界;  比如list1=['a','b','c'], list1[6]是没有值的 
                c、CPU不足;
                d、内存不足。(运行初期报Native crash,可能内存不足,monkey日志搜索Out of memory)

        
        monkey在运行过程中出现异常停止的问题分析思路,参考:        
            《APP稳定性测试问题定位思路_monkey篇.docx》

        补:ANR的跟踪日志在/data/anr/traces.txt文件里,把此文件下载下来给开发定位即可。


    2-13. app问题定位:

        a)当monkey日志运行次数小于设定次数,说明monkey运行中途挂了,打开logcat日志定位问题:
            ①如果能搜索到anr in,说明ANR无响应,把/data/anr/traces.txt文件取下来,
                连同anr in旁边的进程号一起发给开发
            ②如果能搜索到nullpoint,说明crash崩溃,把日志截给开发定位

        b)程序在运行初期报 Native crash ,可能是内存不足导致,日志关键词Out Of memory(简称OOM)

******************************************************************************************

3. 连接真机        安卓驱动下载:https://adbdriver.com/downloads/

    步骤:手机连接电脑 → 安装驱动 → 连点7次版本号打开开发者选项 → 勾选USB调试 → 手机端允许授权

C:\Users\Administrator>adb devices
List of devices attached
727f22be        device (有线,插线即连接)

C:\Users\Administrator>adb tcpip 5555
restarting in TCP mode port: 5555

C:\Users\Administrator>adb connect 192.168.0.9:5555
* daemon not running. starting it now at tcp:5037 *
* daemon started successfully *
connected to 192.168.0.9:5555

C:\Users\Administrator>adb devices
List of devices attached
192.168.0.9:5555        device  (无线)

4.真机投屏
    可使用scrcpy软件进行投屏,多设备时cmd进入scrcpy目录(或加环境变量),输入以下指令:
        scrcpy -s 设备号1
        scrcpy -s 设备号2


*********************************************************************************************************
5. APP测试常见问题


1. 当monkey异常终止,如何协助开发定位问题?
    运行monkey做稳定性测试的同时,需要把应用的logcat日志取下来,monkey在运行中出现异常,一般是两种原因导致的,一个是crash,程序崩溃,一个是ANR,程序没有响应;
        当monkey异常终止,就进入logcat日志,搜索关键字“anr in”,如果搜到了,说明出现了ANR异常,接下来把/data/anr/目录下的trace.txt文件取下来,将出现问题的进程号对应的日志发给开发定位;
        如果没搜索到“anr in”关键字,就搜索“nullpointer”,存在该关键字,说明出现了CRASH异常,就把nullpointer异常关键字上下的日志发给开发定位。


2. App的性能测试怎么做的?
    App的性能分为服务器端的性能和手机端的性能。
    服务器端的性能,用Jmeter工具进行测试,和web的端性能测试方法一样的。

    手机端App的稳定性测试,使用monkey跑10万次,如果出了问题,再定位原因,具体步骤是:
    1、在跑monkey前,先清空手机的logcat日志:adb logcat -c
    2、接下来,获取logcat日志:adb logcat -v time > E:\share\logcat.log
    3、使用monkey运行被测应用:adb shell monkey -p 包名 -v 100000 > E:\share\monkey.log
    4、测试完成后查看monkey日志,如果说它跑的次数跟我设的次数不一样.就说明monkey中途跑失败了。
       查看logcat日志有没有nullpoint或anr in的关键字,
       如果有nullpoint,表示app在测试过程中crash了,把nullpoint前后的日志截取下来,发给开发定位;
       如果有anr in,表示app在测试过程中出现了ANR(程序无响应),
       要把/data/anr/traces.txt文件取下来,再把ANR进程号对应的日志发给开发定位问题。


3. 如何判断前端还是后端的问题
    一、客户端问题
        1、文字,图片有误;
        2、无法输入,按钮不可用;
        3、抓包信息显示客户端发送的信息有误。

    二、服务器端问题
        1、通过抓包检查服务器返回的信息,如果信息有误,就可以断定是服务器的问题;
        2、客户端向服务器发送信息后,服务器无响应。


4. 开发修复了问题,你怎么验证?(即monkey怎样做回归测试)
        按照之前的轨迹(seed)去跑monkey,命令:adb shell monkey -p 包名 -s seed值 -v 次数


5. Android APP内存不足时,系统如何结束进程获得内存?
      系统会自动杀掉长时间没被使用的进程来获得内存。


6. Android的四大组件是什么? Activity、Service、Broadcast Receiver、Content Provider


7. 你怎么做app测试的?
    测试前,先熟悉app的原型图和业务需求,确定测试点,开发做完接口之后,先做接口测试,
    App开发好后,先做一个冒烟测试,看看软件的基本功能是否可用,
    如果正常,再做功能测试,UI测试,兼容性测试,交叉事件测试,安装卸载测试等。


8. 跑monkey时,app点了第三方链接跳转到其他应用时怎么办?
    测试版的app,会让开发将跳转到其他应用的功能屏蔽了再测。


9. IOS的稳定性是怎么测试的,也是用monkey测试的吗?
    monkey只能测试安卓系统的稳定性,苹果手机可以在testin云测试平台上租手机来测试。


10. APP的环境架构
    一般情况下,APP的web应用服务器会采用Nginx,数据库采用MySQL。
    但这要看情况,也有用tomcat等其他容器做web服务器的,数据库也有用oracle或其他类型的数据库。
    一般访问量不大的app,一台web服务器,一个数据库服务器就够了,
    访问量大,安全性要求高的,服务器会多些。


11. App测试前的准备工作?
    测试任务开始前,检查各项测试资源、产品功能需求文档、产品原型图、测试设备(手机)


12. 一个购物系统,弱网环境下,点击下单按钮,没有响应,再次点击,下了两次单?
    原因:第一次的请求返回较慢,但服务已经处理成功。
    解决方法:在数据加载过程中,设置加载进度提示,把页面对外暴露的控件置为“不可操作”状态,当数据加载完再释放。

        或者做防抖,就是指触发事件后在单位时间内只能执行一次动作,如果在单位时间内又触发了事件,则会重新计算动作执行时间。 
    类似的还有节流,就是指连续触发事件,但是在单位时间内只执行一次动作。
        (https://www.jianshu.com/p/c8b86b09daf0)


13. H5怎么测试?(用html5开发的APP)
    H5开发的app就是web app,用手机浏览器就能打开,不管是什么类型的app,
    都根据app的八大测试点来测试就对了,某些具体的测试点和原生app会不一样,
    比如,兼容性测试,就要考虑在不同手机系统的浏览器下进行测试。


14. 云测试平台介绍
    现在在企业中做APP的兼容性测试,安全测试,自动化测试,越来越倾向于使用商用的云测试平台,平台有大量的真实机器供有偿使用,且价格相对低廉。比较好的云测试平台有testin云测平台


15. 怎么知道应用崩溃是不是内存不足导致的?
    程序在运行初期报 Native crash ,可能是内存不足导致的。logcat日志关键词Out Of memory

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值