最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

4.2-1 app测试

业界 admin 9浏览 0评论

(一)app测试类型

app手工测试,app ui自动化测试,app接口测试,app性能测试

(1)app手工测试

app手工测试:就是在app上进行手工测试(手点)

(2)appui自动化测试

app自动化测试使用代码或工具来代替手工测试(python+appium)

(3)app接口测试和web测试一样,

(4)app性能测试 (monkey性能测试)

(二)app测试流程:(和H模型一样)

1、看需求,分析需求

 3、写用例 (自动化脚本的编写)

4、搭建环境(部署好app自动化环境)

5.测试(通过jenkins打包生成最新的apk包,下载后安装到模拟器或手机中)

6、测试,开发修改bug

7、重新提交版本,在打包,在进行测试

8、输出测试报告

(三)web测试和app测试区别?( 重点)

(1)单纯从功能测试的层面上来讲的化,app测试、web测试在流程和功能测试上是没有区别

(2)根据两者载体不一样,区别:

web项目:b/s 架构,基于浏览器的;web测试只要更新服务器端,客户端就会同步更新

app项目 :c/s 架构  必须在客户端;app修改了服务端,则客户端用户所有核心版本都要进行回归测试一遍。

(3)性能方面:

web项目  需检测响应时间,cpu,

app项目   需检测响应时间,cpu,还要考虑流量,电量

(4)兼容性方面

web项目:

浏览器(火狐、谷歌、IE等)、版本:ie8、ie10

操作系统(Windows7、Windows10、Windows10、LLinux等)

app项目:

设备系统: iOS(ipad、iphone)、Android(三星、华为、联想等) 、Windows(Win7、Win8)、OSX(Mac)、鸿蒙系统、mac

手机设备可根据 手机型号、分辨率不同

相对于 Wed 项目,

(四)APP有专项测试

APP有专项测试:

干扰测试:中断,来电,短信,关机,重启等

弱网络测试(模拟2g、3g、4g,wifi网络状态以及丢包情况);网络切换测试(网络断开后重连、3g切换到4g/wifi 等)

安装、更新、卸载

安装:需考虑安装时的中断、弱网、安装后删除安装文件等情况(手动安装、自动安装)

卸载:需考虑 卸载后是否删除app相关的文件

更新:分强制更新、非强制更新、增量包更新、断点续传、弱网状态下更新

界面操作:关于手机端测试,需注意手势,横竖屏切换,多点触控,前后台切换

安全测试:安装包是否可反编译代码、安装包是否签名、权限设置,例如访问通讯录等

边界测试:可用存储空间少、没有SD卡/双SD卡、飞行模式、系统时间有误、第三方依赖(QQ、微信登录)等

权限测试:设置某个App是否可以获取该权限,例如是否可访问通讯录、相册、照相机等

(五)app系统分类

在市面上app测试流行,分为安卓端和ios端(ios端必须要maos系统,鸿蒙系统,还要企业级的证书,再公司一般不会用ios做自动化)

开发人员都是用模拟器

(1、模拟手机种类多,2、连接稳定 3、运行稳定 )

面试题:app中ios和安卓区别?

① 两者运行机制不同:IOS采用的是沙盒运行机制,安卓采用的是虚拟机运行机制。

iphone沙盒机制解释:应用程序位于文件系统的严格限制部分,程序不能直接访问其他应用程序。以杀毒软件中的沙盒技术解释一下。“沙盒”技术是发现可疑行为后让程序继续运行,当发现的确是病毒时才会终止。“沙盒”技术的实践运用流程是:让疑似病毒文件的可疑行为在虚拟的“沙盒”里充分表演,“沙盒”会记下它的每一个动作;当疑似病毒充分暴露了其病毒属性后,“沙盒”就会执行“回滚”机制:将病毒的痕迹和动作抹去,恢复系统到正常状态。

安卓虚拟机机制解释:android本身不是为触摸屏打造的,所以所有的应用都是运行在一个虚拟的环境中,由底层传输数据到虚拟机中,再由虚拟机传递给用户UI,任何程序都就可以轻松访问其他程序文件。

② 两者后台制度不同:IOS中任何第三方程序都不能在后台运行;安卓中任何程序都能在后台运行,直到没有内存才会关闭。

③ IOS中用于UI指令权限最高,安卓中数据处理指令权限最高。

④ ios系统流畅性更具优势。Android系统采用虚拟机的运行机制,需要消耗更多系统资源。Android系统使用一段时间后容易出现卡顿,而ios系统则很少出现卡顿现象,并且Android系统的桌面灵敏性不如ios系统。

⑤ Android的编程语言是JAVA,而iOS的则为Objective-C。Objective-C的优势是效率高但比较“唯一”,而JAVA的优势则是跨平台不过运行效率相对偏低。

⑥ 操作界面来讲,ios系统界面单一。而Android的界面可以根据自己的喜好来设置,更加多样化。

⑦ 省电的角度来讲,ios系统更加省电。这是系统机制决定的。Android会占用更多的资源来支撑系统运行,导致了它会比较费电。

(六)app测试包(后缀名是apk的包)(ios的后缀名:.ipa)

 在网上可以看到的包,下载包是(生产包)已经上线的包;
 app 的包下载(灰度包,测试包),开发提交代码,合并代码,通过jenkins 构建,生成测试包:
生成的方式:

第一种:一个连接(url)的方式  (下载灰度包)  

第二种:二维码的形式  (下载灰度包)

(七)熟悉adb命令

ADB常用的指令:

查看当前连接设备 : adb devices

进入到shell : adb shell

查看日志 : adb logcat

安装apk文件 : adb install xxx.apk

卸载APP : adb uninstall +包名

查看包名 : appt d badging +包的路径

往手机SDCard传递文件:adb push 文件名 手机端SDCard路径

从手机端下载文件 : adb pull + 文件

查看手机端安装的所有包名:adb shell pm list packages

启动Activity : adb shell am start 包名/完整Activity路径

屏幕截图 : adb shell screencap

启动adb server命令 :adb start-server

停止adb server命令 :adb kill-server

查看adb版本 :adb version

(八)app测试中遇到的问题

(1)、app出现ANR(无响应),是什么原因导致的?

那么导致ANR的根本原因是什么呢?简单的总结有以下两点:

1.主线程执行了耗时操作,比如数据库操作或网络编程

2.其他进程(就是其他程序)占用CPU导致本进程得不到CPU时间,比如其他进程的频繁读写操作可能会导致这个问题。

细分的话,导致ANR的原因有如下几点:

a.耗时的网络访问

b.大量的数据读写

c.数据库操作频繁

d.硬件操作(比如camera)

e.调用thread的join()方法、sleep()方法、wait()方法或者等待线程锁的时候

f.service binder的数量达到上限

g.system server中发生WatchDog ANR

h.service忙导致超时无响应

i.其他线程持有锁,导致主线程等待超时

j.其它线程终止或崩溃导致主线程一直等待。

(2)、App出现crash(崩溃)原因有哪些?

为什么App会出现崩溃呢?

App崩溃相关的几个因素:内存管理错误,程序逻辑错误,设备兼容,网络因素等,

如下:

a.内存管理错误:可能是可用内存过低,app所需的内存超过设备的限制,app跑不起来导致App crash。

或是内存泄露,程序运行的时间越长,所占用的内存越大,最终用尽全部内存,导致整个系统崩溃。

亦或非授权的内存位置的使用也可能会导致App crash。

b.程序逻辑错误:数组越界、堆栈溢出、并发操作、逻辑错误。

e. app新添加一个未经测试的新功能,调用了一个已释放的指针,运行的时候就会crash。

c.设备兼容:由于设备多样性,app在不同的设备上可能会有不同的表现。

e.网络因素:可能是网速欠佳,无法达到app所需的快速响应时间,导致app crash。或者是不同网络的切换也可能会影响app的稳定性。

(3)app闪退有哪些原因?

闪退的原因分为种:

一、软件本身有问题;二、系统出现问题。

1、软件问题

(1)app 不兼容系统当前系统版本

(2)app有了新版本,没有更新(软件对手机分辨率有一定的要求)

(3)软件有bug

(4)下载和更新不是官网下载的,是第三方软件下载的

(5)网络差(软件对网速的要求比较高,如果用户使用 2 G/3 G 网络)

(6)分辨率不兼容(软件对手机分辨率有一定的要求)

 (7)手机被植入病毒

2、系统出现问题

(1)手机内存不足,比如:打开很多app,导致后台反应出现问题

(2)软件授权出现问题

(3)设备已经越狱,导致系统不稳定,闪退成了常事)

4)手机 缓存垃圾太多

(5)安装路径位置错误(比如:安装外置存储卡)

(6)手机配置问题  (比如手机配置低)

解决办法:

1、卸载重新下载新版本,(安装并设置手机储存空间为安装路径即可)

2、及时更新新的版本

3、拒绝从第三方下载(卸载非官方下载的软件)

4、重启应用 

5、检查应用兼容性

6、检查应用权限(授予必要的权限即可。 )

7、卸载重装应用

8、清理机存储空间

9、 恢复出厂设置

10、检查网络(切换好的网络环境)

(4)、app白屏现象有哪些原因引起?

1、手机使用过长

2、手机本身质量问题

3、手机运行内存小,或不足

4、软件和设备不兼容

5、运行过多软件

6、手机版本问题

(九)常见app面试题:

1、app web端和app端的区别?

2、appium的原理?

3、app的搭建流程  

4、常用的adb命令 

 5、app测试的关注点?(专项测试)

6、app自动化测试中你要到什么问题,如何解决的?

7、app自动化测试流程 ?

8、app的日志如何抓取? 

9、测试过程中遇到app出现crash或者ANR,你会怎么处理? 

10、请说明Android手机和IOS手机,系统有什么区别?

(一)app测试类型

app手工测试,app ui自动化测试,app接口测试,app性能测试

(1)app手工测试

app手工测试:就是在app上进行手工测试(手点)

(2)appui自动化测试

app自动化测试使用代码或工具来代替手工测试(python+appium)

(3)app接口测试和web测试一样,

(4)app性能测试 (monkey性能测试)

(二)app测试流程:(和H模型一样)

1、看需求,分析需求

 3、写用例 (自动化脚本的编写)

4、搭建环境(部署好app自动化环境)

5.测试(通过jenkins打包生成最新的apk包,下载后安装到模拟器或手机中)

6、测试,开发修改bug

7、重新提交版本,在打包,在进行测试

8、输出测试报告

(三)web测试和app测试区别?( 重点)

(1)单纯从功能测试的层面上来讲的化,app测试、web测试在流程和功能测试上是没有区别

(2)根据两者载体不一样,区别:

web项目:b/s 架构,基于浏览器的;web测试只要更新服务器端,客户端就会同步更新

app项目 :c/s 架构  必须在客户端;app修改了服务端,则客户端用户所有核心版本都要进行回归测试一遍。

(3)性能方面:

web项目  需检测响应时间,cpu,

app项目   需检测响应时间,cpu,还要考虑流量,电量

(4)兼容性方面

web项目:

浏览器(火狐、谷歌、IE等)、版本:ie8、ie10

操作系统(Windows7、Windows10、Windows10、LLinux等)

app项目:

设备系统: iOS(ipad、iphone)、Android(三星、华为、联想等) 、Windows(Win7、Win8)、OSX(Mac)、鸿蒙系统、mac

手机设备可根据 手机型号、分辨率不同

相对于 Wed 项目,

(四)APP有专项测试

APP有专项测试:

干扰测试:中断,来电,短信,关机,重启等

弱网络测试(模拟2g、3g、4g,wifi网络状态以及丢包情况);网络切换测试(网络断开后重连、3g切换到4g/wifi 等)

安装、更新、卸载

安装:需考虑安装时的中断、弱网、安装后删除安装文件等情况(手动安装、自动安装)

卸载:需考虑 卸载后是否删除app相关的文件

更新:分强制更新、非强制更新、增量包更新、断点续传、弱网状态下更新

界面操作:关于手机端测试,需注意手势,横竖屏切换,多点触控,前后台切换

安全测试:安装包是否可反编译代码、安装包是否签名、权限设置,例如访问通讯录等

边界测试:可用存储空间少、没有SD卡/双SD卡、飞行模式、系统时间有误、第三方依赖(QQ、微信登录)等

权限测试:设置某个App是否可以获取该权限,例如是否可访问通讯录、相册、照相机等

(五)app系统分类

在市面上app测试流行,分为安卓端和ios端(ios端必须要maos系统,鸿蒙系统,还要企业级的证书,再公司一般不会用ios做自动化)

开发人员都是用模拟器

(1、模拟手机种类多,2、连接稳定 3、运行稳定 )

面试题:app中ios和安卓区别?

① 两者运行机制不同:IOS采用的是沙盒运行机制,安卓采用的是虚拟机运行机制。

iphone沙盒机制解释:应用程序位于文件系统的严格限制部分,程序不能直接访问其他应用程序。以杀毒软件中的沙盒技术解释一下。“沙盒”技术是发现可疑行为后让程序继续运行,当发现的确是病毒时才会终止。“沙盒”技术的实践运用流程是:让疑似病毒文件的可疑行为在虚拟的“沙盒”里充分表演,“沙盒”会记下它的每一个动作;当疑似病毒充分暴露了其病毒属性后,“沙盒”就会执行“回滚”机制:将病毒的痕迹和动作抹去,恢复系统到正常状态。

安卓虚拟机机制解释:android本身不是为触摸屏打造的,所以所有的应用都是运行在一个虚拟的环境中,由底层传输数据到虚拟机中,再由虚拟机传递给用户UI,任何程序都就可以轻松访问其他程序文件。

② 两者后台制度不同:IOS中任何第三方程序都不能在后台运行;安卓中任何程序都能在后台运行,直到没有内存才会关闭。

③ IOS中用于UI指令权限最高,安卓中数据处理指令权限最高。

④ ios系统流畅性更具优势。Android系统采用虚拟机的运行机制,需要消耗更多系统资源。Android系统使用一段时间后容易出现卡顿,而ios系统则很少出现卡顿现象,并且Android系统的桌面灵敏性不如ios系统。

⑤ Android的编程语言是JAVA,而iOS的则为Objective-C。Objective-C的优势是效率高但比较“唯一”,而JAVA的优势则是跨平台不过运行效率相对偏低。

⑥ 操作界面来讲,ios系统界面单一。而Android的界面可以根据自己的喜好来设置,更加多样化。

⑦ 省电的角度来讲,ios系统更加省电。这是系统机制决定的。Android会占用更多的资源来支撑系统运行,导致了它会比较费电。

(六)app测试包(后缀名是apk的包)(ios的后缀名:.ipa)

 在网上可以看到的包,下载包是(生产包)已经上线的包;
 app 的包下载(灰度包,测试包),开发提交代码,合并代码,通过jenkins 构建,生成测试包:
生成的方式:

第一种:一个连接(url)的方式  (下载灰度包)  

第二种:二维码的形式  (下载灰度包)

(七)熟悉adb命令

ADB常用的指令:

查看当前连接设备 : adb devices

进入到shell : adb shell

查看日志 : adb logcat

安装apk文件 : adb install xxx.apk

卸载APP : adb uninstall +包名

查看包名 : appt d badging +包的路径

往手机SDCard传递文件:adb push 文件名 手机端SDCard路径

从手机端下载文件 : adb pull + 文件

查看手机端安装的所有包名:adb shell pm list packages

启动Activity : adb shell am start 包名/完整Activity路径

屏幕截图 : adb shell screencap

启动adb server命令 :adb start-server

停止adb server命令 :adb kill-server

查看adb版本 :adb version

(八)app测试中遇到的问题

(1)、app出现ANR(无响应),是什么原因导致的?

那么导致ANR的根本原因是什么呢?简单的总结有以下两点:

1.主线程执行了耗时操作,比如数据库操作或网络编程

2.其他进程(就是其他程序)占用CPU导致本进程得不到CPU时间,比如其他进程的频繁读写操作可能会导致这个问题。

细分的话,导致ANR的原因有如下几点:

a.耗时的网络访问

b.大量的数据读写

c.数据库操作频繁

d.硬件操作(比如camera)

e.调用thread的join()方法、sleep()方法、wait()方法或者等待线程锁的时候

f.service binder的数量达到上限

g.system server中发生WatchDog ANR

h.service忙导致超时无响应

i.其他线程持有锁,导致主线程等待超时

j.其它线程终止或崩溃导致主线程一直等待。

(2)、App出现crash(崩溃)原因有哪些?

为什么App会出现崩溃呢?

App崩溃相关的几个因素:内存管理错误,程序逻辑错误,设备兼容,网络因素等,

如下:

a.内存管理错误:可能是可用内存过低,app所需的内存超过设备的限制,app跑不起来导致App crash。

或是内存泄露,程序运行的时间越长,所占用的内存越大,最终用尽全部内存,导致整个系统崩溃。

亦或非授权的内存位置的使用也可能会导致App crash。

b.程序逻辑错误:数组越界、堆栈溢出、并发操作、逻辑错误。

e. app新添加一个未经测试的新功能,调用了一个已释放的指针,运行的时候就会crash。

c.设备兼容:由于设备多样性,app在不同的设备上可能会有不同的表现。

e.网络因素:可能是网速欠佳,无法达到app所需的快速响应时间,导致app crash。或者是不同网络的切换也可能会影响app的稳定性。

(3)app闪退有哪些原因?

闪退的原因分为种:

一、软件本身有问题;二、系统出现问题。

1、软件问题

(1)app 不兼容系统当前系统版本

(2)app有了新版本,没有更新(软件对手机分辨率有一定的要求)

(3)软件有bug

(4)下载和更新不是官网下载的,是第三方软件下载的

(5)网络差(软件对网速的要求比较高,如果用户使用 2 G/3 G 网络)

(6)分辨率不兼容(软件对手机分辨率有一定的要求)

 (7)手机被植入病毒

2、系统出现问题

(1)手机内存不足,比如:打开很多app,导致后台反应出现问题

(2)软件授权出现问题

(3)设备已经越狱,导致系统不稳定,闪退成了常事)

4)手机 缓存垃圾太多

(5)安装路径位置错误(比如:安装外置存储卡)

(6)手机配置问题  (比如手机配置低)

解决办法:

1、卸载重新下载新版本,(安装并设置手机储存空间为安装路径即可)

2、及时更新新的版本

3、拒绝从第三方下载(卸载非官方下载的软件)

4、重启应用 

5、检查应用兼容性

6、检查应用权限(授予必要的权限即可。 )

7、卸载重装应用

8、清理机存储空间

9、 恢复出厂设置

10、检查网络(切换好的网络环境)

(4)、app白屏现象有哪些原因引起?

1、手机使用过长

2、手机本身质量问题

3、手机运行内存小,或不足

4、软件和设备不兼容

5、运行过多软件

6、手机版本问题

(九)常见app面试题:

1、app web端和app端的区别?

2、appium的原理?

3、app的搭建流程  

4、常用的adb命令 

 5、app测试的关注点?(专项测试)

6、app自动化测试中你要到什么问题,如何解决的?

7、app自动化测试流程 ?

8、app的日志如何抓取? 

9、测试过程中遇到app出现crash或者ANR,你会怎么处理? 

10、请说明Android手机和IOS手机,系统有什么区别?

发布评论

评论列表 (0)

  1. 暂无评论