移动app应用测试方法与测试思路(德鲁)

  1 三种移动端产品类型的介绍
  2     移动端应用的测试其自身特色,和其余传统测试又有一些独特
  3     测试方法和思路。
  4     
  5     移动端应用又能够进一步细分为三大类:
  6     Web APP 指的是移动端的Web浏览器,其实和PC端的Web浏览器
  7     没有任何区别,只不过Web浏览器所依附的操做系统再也不是Windows
  8     和Linux了,而是IOS和Android了。
  9     
 10     Web App 采用的技术主要是,传统的HTML,JavaScript,CSS等
 11     Web技术栈,固然如今HTML5也获得了普遍的应用。另外,WebAPP
 12     所访问的页面内容都是放在服务器端的,本质就是Web网页,因此
 13     天生跨平台。
 14     
 15     Native App指的是移动端的原生应用,对于Android是apk,对于Android是apk,
 16     对于IOS就是ipa。NativeApp是一只基于手机操做系统(IOS和android),
 17     并使用原生程序编写运行的第三方应用程序。
 18     
 19     Native App的开发,Android使用的语言一般是Java,IOS使用的
 20     语言是Objective-C。一般来讲,Native App能够提供比较好的
 21     用户体验以及性能,并且能够方便地操做手机本地资源。
 22     
 23     Hybrid App,是介于Web App和Native App 两种之间的一种App形式。
 24     Hybrid App 利用了Web App和Native App的优势,经过一个
 25     原生实现的NativeContainer展现HTML5的页面。更通俗的讲法
 26     能够归结为,在原生移动应用中嵌入了Webview,而后经过该Webview
 27     来访问网页。
 28     Hybrid App具备维护更新简单,用户体验优异以及较好的跨平台性,
 29     是目前主流的移动应用开发模式。
 30     
 31 三类不一样移动应用的测试方法
 32     根据它们的特性来总结出它们的测试方法:
 33     
 34 Web App,显然其本质就是Web浏览器的测试,全部GUI自动化
 35     测试的方法和技术,好比数据驱动,页面对象模型,业务流
 36     封装等,都适用于Web App的测试。
 37     
 38     若是Web页面是基于自适应网页涉及(即符合ResponsiveWeb
 39     设计的规范),并且测试框架若是支持Responsive Page,那么
 40     原则上以前开发的运行在PC Web 端的GUI自动化测试用例,不作
 41     任何修改就能够直接在移动端的浏览器上直接执行,固然运行的
 42     前提是你的移动端浏览器必须支持WebDriver。其中,自适应网页
 43     设计(Responsive Web Design)是指,同一个网页能自动识别
 44     屏幕分辨率,并做出相应调整的网页设计技术。
 45 
 46 Native App的测试,虽然不一样的平台会使用不一样的自动化测试
 47     方案,iOS通常采用XCUITest Driver,而Android通常采用
 48     UiAutomator2 或者 Espresso 等,可是数据驱动,页面
 49     对象以及业务流程封装的思想依旧适用,彻底能够把这些方法
 50     应用到测试用例设计中。
 51     
 52     Hybrid App的测试,状况会稍微复杂一点,对Native Container
 53     的测试,可能须要用到XCUITest或者UiAutomator2这样的原生
 54     测彷佛框架,而对Container中HTML5的测试,基本和传统的网页
 55     测试没什么区别,因此本来基于GUI的测试思想和方法都能继续
 56     适用。
 57     
 58     惟一须要注意的是,Native Container 和 Webview 分别属于两个
 59     不一样的上下文(Context),Native Container默认的Context为
 60     “NATIVE APP”,而Webview默认的Context为“WEBVIEW_+被测进程名称”
 61     
 62     
 63     
 64 Web测试和APP测试的区别
 65 
 66     相同点:WEB测试和App测试从流程上来讲,没有区别,都须要
 67     经历测试计划方法,用例设计,测试执行,缺陷管理,测试报告
 68     等相关活动。从技术上来讲,WEB测试和APP测试其测试类型也基本
 69     类似,都须要进行功能测试,性能测试,安全性测试,GUI测试
 70     等测试类型。
 71     
 72     不一样点:它们的主要区别在于具体测试的细节和方法有却别。
 73     
 74     性能测试:在WEB测试只须要测试响应时间这个要素,在App测试
 75     中须要考虑流量测试和耗电量测试。
 76     
 77     兼容性测试:在WEB端是兼容浏览器,在App端兼容的是手机设备。
 78     并且相对应的兼容性测试工具也不相同,WEB由于是测试兼容
 79     浏览器。因此须要使用不一样的浏览器进行兼容性测试(经常使用的是
 80     兼容IE6,IE8,chrome,Firefox)若是是手机端,那么就须要
 81     兼容不一样品牌,不一样分辨率,不一样Android版本甚至不一样操做系统
 82     的兼容。(常见的兼容方式是兼容市场占用率前N位的手机便可),
 83     有时候也可使用到兼容性测试工具,但WEB兼容性工具多使用IETest
 84     等工具,而App兼容性测试会使用Testin这样的商业工具也能够作
 85     测试。
 86     
 87     安装测试:WEB测试基本上没有客户端层面的安装测试,可是App
 88     测试是存在客户端层面的安装测试,那么就具有相关的测试点。
 89     
 90     App测试基于手机设备,还有一些手机设备的专项测试。如交叉
 91     事件测试,操做类型测试,网络测试(弱网测试,网络切换)交叉
 92     时间测试:就是在操做某个软件的时候,来电话,来短信,电量
 93     不足提示等外部时间。操做类型测试:如横屏测试,手势测试
 94     网络测试;包含弱网和网络切换测试。须要测试弱网所形成的
 95     用户体验,重点要考虑回退和刷新是否会形成二次提交。弱网
 96     络的模拟,听说能够用360wifi实现设置。升级测试:升级测试的
 97     提醒机制,升级取消是否会影响原有功能的使用,升级后用户数据是否
 98     被清除了。
 99     
100         从系统架构的层面,WEB测试只要更新了服务器端,客户端
101     就会同步更新。并且客户端是能够保证每个用户的客户端彻底
102     一致的。可是APP端是不可以保证彻底一致的,除非用户更新客户
103     端。若是是APP下修改了服务器端,意味着客户端用户所使用的核心
104     版本都须要进行回归测试一遍。
105     
106         如此看来,移动端的测试除了使用的测试框架不一样之外,
107     测试设计自己和GUI测试用殊途同归之妙,对于移动端还应该
108     有其余的不一样测试思路和方法。
109     
110 移动应用专项测试的思路和方法
111     
112     对于移动应用,顺利完成所有业务功能测试每每是不够的,
113     当移动应用被大量用户安装和使用时,就会暴露出不少以前
114     彻底没有预料到的问题。
115     好比:
116     1.流量使用过多
117     2.耗电量过大;
118     3.在某些设备终端上出现崩溃或闪退的现象;
119     4.多个移动应用相互切换后,行为异常;
120     5.在某些设备字段上没法顺利安装或卸载;
121     6.弱网络环境下,没法正常使用;
122     7.App 运行时进入低电量模式;
123     8.App运行时第三方安全软件弹出告警;
124     9.App运行时发生网络切换,好比,由WiFi切换到移动4G网络,
125     或者从4G网络切换到3G网络等。
126     。。。
127     
128     其实你能够发现,这些须要覆盖的场景,也是咱们从此测试的
129     测试用例集,每一场都是一个测试用例的集合。
130     
131 2.兼容性测试
132     兼容性测试顾名思义就是,要确保App在各类终端设备,各类操做
133     系统,各类屏幕分辨率,各类网络环境下,功能的正确性。常见的
134     App兼容性测试每每须要覆盖如下的测试场景:
135     1.不一样操做系统的兼容性,包括主流的Android和iOS版本;
136     2.主流的设备分辨率下的兼容性;
137     3.主流移动终端机型的兼容性;
138     4.同一操做系统中,不一样语言设置时的兼容性;
139     5.不一样网络链接下的兼容性,好比Wifi,GPRS,EDGE,CDMA200等;
140     6.在单一设备上,与主流热门App的兼容性,好比微信,抖音,淘宝等;
141     
142     兼容性测试一般都须要在各类真机上执行相同或者相似的测试用例,
143     因此每每采用自动化测试的手段。同时,因为须要覆盖大量的真
144     实设备,除了大公司会基于Appium+SeleniumGrid+OpenST去搭建本身
145     的移动设备私有云平台,其余公司通常都会使用第三方的移动设备
146     云平台完成兼容性测试。第三方的移动设备云测平台,国外最知名的
147     是SauceLab,国内主流的是Testin。
148     
149     3.流量测试
150         因为App常常须要在移动互联网环境下运行,而移动互联网
151     一般安装实际使用流量计费,因此若是你的App耗费的流量过多,
152     第一会致使用户流量费用增长,第二会致使功能加载缓慢。
153         流量测试,一般包含如下几个方面的内容:
154         1.App执行业务操做引发的流量;
155         2.App在后台运行时的消耗流量;
156         3.App安装完成后首次启动耗费的流量;
157         4.App安装包自己的大小;
158         5.App内购买或者升级须要的流量;
159         
160         流量测试,每每借助于Android和iOS自带的工具进行流量
161         统计,也能够是使用tcpdump,Wireshark和Fiddler等网络
162         分析工具。
163         
164         对于Android系统,网络流量信息一般存储在/proc/net/dev目录下,
165         也能够直接利用ADB工具获取实时的流量信息。Android的轻量级
166         性能监控小工具Emmagee,相似于Windows系统性能监视器,可以
167         实时显示App运行过程当中CPU,内存和流量等信息。
168         
169         对于iOS系统,可使用Xcode自带的性能分析工具集中的Network
170         Activity,分析具体的流量使用状况。
171         
172         可是,流量测试的最终目的,并非获得App的流量数据,而是要
173         想办法减小App产生的流量。减小App消耗的流量不是测试工程师的
174         工做,但了解一些经常使用的方法,也将有助于你的测试平常工做:
175         1.启用数据压缩,尤为是图片;
176         2.使用优化的数据格式,好比一样信息量的JSON文件就要比XML文件小;
177         3.遇到既须要加密又须要压缩的场景,必定是先压缩再加密;
178         4.减小单次GUI操做触发的后台调用数量;
179         5.每次回传数据尽量只包括必要的数据;
180         6.启用客户端的缓存机制;
181         。。。
182         
183         4.耗电量测试
184             耗电量也是一个移动应用可否成功的关键因素之一。在
185             目前的生态环境下,能提供相似服务或者功能的App每每有
186             不少,若是功能相似的状况下,App特别耗电,让设备发热比较
187             严重,那么你的用户必定会卸载你的App而改用其余App。最
188             典型的就是地图等导航类的应用,对耗电量特别敏感。
189             
190         耗电量测试一般从三个方面来考量:
191             App运行但没有执行业务操做时的耗电量;
192             App运行且密集执行业务操做时的耗电量
193             App后台运行的耗电量
194         
195         耗电量检测即有基于硬件的方法,也有基于软件的方法。
196         我所经历过的项目都是采用软件的方法,Android和iOS
197         都有各自本身的方法:Android经过adb命令“adb shell
198         dumpsys battery”来获取应用的耗电量信息耗电测试中,
199         Google推出的history batterian工具很好分析耗电状况;
200         
201         iOS经过Apple的官方工具Sysdiagnose来收集耗电量信息,而后 
202         ,能够进一步经过Instrument工具链中的Energy Diagnostice
203         进行耗电量分析。
204     5.弱网络测试    
205         与传统桌面应用不一样,移动应用的网络环境比较
206 多样,并且常常出现须要在不一样网络之间切换的场景,即便是在同一网络环境下,也会出现网络链接状态时好时坏的状况,好比时高时低的延迟、常常丢包、频繁断线,在乘坐地铁、穿越隧道,和地下车库的场景下常常会发生。
207   因此,移动应用的测试须要保证在复杂网络环境下的质量。在测试阶段,模拟这些网络环境,在 App 发布前尽量多地发现并修复问题。推荐开源移动网络测试工具:FacebookAugmented TrafficControl(ATC)。
208   ATC 最好用的地方在于,它可以在移动终端设备上经过Web界面随时切换不一样的网络环境,同时多个移动终端设备能够链接到同一个Wifi,各自模拟不一样的网络环境,相互之间不会有任何影响。也就是说,只要搭建一套ATC就能知足你全部的网络模拟需求。
209   6. 边界测试
210   边界测试是指,移动 App在一些临界状态下的行为功能的验证测试,基本思路是须要找出各类潜在的临界场景,并对每一类临界场景作验证和测试。
211   主要的场景有:
212   1)系统内存占用大于 90% 的场景;
213   2)系统存储占用大于 95% 的场景;
214   3)飞行模式来回切换的场景;
215   4)App不具备某些系统访问权限的场景,好比App因为隐私设置不能访问相册或者通信录等;
216   5)长时间使用 App,系统资源是否有异常,好比内存泄漏、过多的连接数等;
217   6)出现 ANR 的场景;
218   7)操做系统时间早于或者晚于标准时间的场景;
219   8)时区切换的场景;
220   …
221   耗电量测试,流量测试,以及app性能测试,如何界定数据是否正常?例如流量消耗是到哪一个值以为有优化空间,内存CPU到哪一个值不正常须要优化
222   其实并无明确的标准,主要基于一些历史统计数据,主要的作法是和现有版本,以及同类app作比较。
223         
224     
225     
226 结合实际状况测试点组合场景
227 
228   结合一些实际状况测试点简单组合下场景场景:
229   好比:
230   出现崩溃:
231   1)设备碎片化:因为设备极具多样性,App在不一样的设备上可能有表现不一样;
232   2)带宽限制:带宽不佳的网络对App所需的快速响应时间可能不够;
233   3)网络的变化:不一样网络间的切换可能会影响App的稳定性;
234   4)内存管理:可用内存太低,或非受权的内存位置的使用可能会致使App失败;
235   5)用户过多:链接数量过多可能会致使App崩溃;
236   6)代码错误:没有通过测试的新功能,可能会致使App在生产环境中失败;
237   7)第三方服务:广告或弹出屏幕可能会致使App崩溃;
238   App的安装与卸载
239   就是其余web里边没有的场景,最基本的药考虑不一样操做系统,考虑不一样的操做系统版本,考虑不一样手机厂商再操做系统版本修改上的不一样,等等
240   安装过程当中:
241   1)各个选项是否符合概要设计说明;
242   2)安装向导的ui测试;
243   3)是否支持取消,以及取消后的操做流程(是否有残留);
244   4)意外状况处理(司机、重启、断电、断网);
245   5)安装空间不足
246   安装完成后:
247   1)是否正常运行;
248   2)安装过程后的文件夹和文件是否写在了指定的目录里边;
249   3)是否生成了多余的目录结构和文件;
250   升级:
251   1)升级后功能是否和需求说明同样
252   2)测试与升级模块相关的模块的功能是否
253   3)升级界面的ui测试(强制/非强制)
254   4)升级安装意外状况的测试(死机、重启、断电)
255   5)版本验证:1.0版-2.0或者1.0-3.0
256   6)升级中用户数据、设置、状态的保留,注意新版本已去掉的状态或设置;
257   7)是否能够隔开版本覆盖安装;
258   8)是否能够覆盖安装更低版本;
259   9)若是升级有忽略本次版本升级,那么当有新的升级版本时,是否还有提示升级;
260   10)大版本更新不升级没法使用;
261   卸载:
262   1)系统直接卸载以及卸载时候ui界面测试;
263   2)直接删除文件夹,再卸载;
264   3)卸载过程当中是否支持取消,取消后的软件状态;
265   4)卸载时候意外的状况处理(死机、断网、断电、重启);
266   5)卸载安装,安装目录清理,SD卡存储数据不被清理;
267   6)在没有更新或者网络时,须要给予用户正确的信息表达;
268   App的启动与中止
269   1)首次启动是否出现欢迎界面,能否进入App,停留时间是否合理;
270   2)首次启动后拉取的信息是否正确;
271   3)再次启动时间是否符合预期;
272   4)再次启动app功能是否异常
273   5)再次启动后状态检查:如初始化信息、初始状态、启动对网络;
274   6)再次启动进程服务检查:进程名、进程数、服务名、服务数、第三方调用的SDK如GPS;
275   7)再次带登录的应用是否再次启动的时候正常登陆;
276   8)出现崩溃是否能够再次启动;
277   9)手动终止进程、服务是否能够在此启动;
278   10)其余系统软件工具中止进程、清理软件数据,是否能够启动;
279   中断测试
280   1)锁屏中断:停留在程序操做界面进行锁屏,恢复后检查操做是否正常;
281   2)先后台切换:停留在程序操做界面,经过Home键,进行程序的先后台切换;
282   3)加载中断:页面接口请求、界面框架加载时,经过Home键、返回键、快速切换操做进行中断;
283   4)系统异常中断:如关机、断电、来电;
284   流畅度
285   列表滑动、返回进入、快速点击(这个肉眼很差评判,能够借助GT,通常打分在90分以上是比较好的)
286   软件兼容
287   通用软件;
288   输入法;
289   安全软件;
290   通讯类;
291   竞品软件 同类软件,是否出现冲突;
292 
293 
294 总结
295 
296   移动应用根据技术架构的不一样,主要分为 Web App、Native App 和 Hybrid App 三大类,这三类应用的测试方法本质上都属于 GUI 测试的范畴。
297   从业务功能测试的角度看,移动应用的测试用例设计和传统 PC 端的 GUI 自动化测试策略比较相似,只是测试框架不一样,数据驱动、页面对象模型和业务流程封装依旧适用;
298   各类专项测试是移动应用的测试重点,也有别于传统 GUI 测试。专项测试包括:交叉事件测试、兼容性测试、流量测试、耗电量测试、弱网络测试和边界测试;
299 
300 
301 
302     
303     
304     
相关文章
相关标签/搜索