- 功能测试:手机软件的基本功能。倒不一定完全由测试人员来完全执行,但却是所有测试中最重要的,需要测试人员做很好的测试策略和职责划分。
- 稳定性测试:大多数手机应用是需要保证能够稳定运行一定时间的(尤其是对于一些记事类应用),而且在应用的运行状态发生切换后需要继续保持当前的状态,不出现闪退。
- 性能测试:这部分分为两个方面,一部分是后台服务的性能测试(API的响应时间和响应报文大小),一部分是应用自身的性能情况(占用CPU、内存、I/O、电量情况,以及页面到页面之间的切换速度,如果是游戏或动画,还要保证能够在一定的帧率以上)。
- 安全测试:关键的机密数据连接有没有走加密连接;本地数据库有没有做加密处理,是否会被其他恶意应用读取;后台服务的接口是否安全,会不会受SQL注入的影响;应用有没有做混淆,会不会被逆向以及会不会在渠道方被修改重新签名挂马;敏感数据是否存在了SD Card上等等。
- 地理位置定位测试:大多数业务软件(电商类)都支持获取用户的地理位置信息,方便做一些本地业务的定制(尤其是对于O2O行业),至少需要考虑到三方面:1. 城市是否能准确定位;2. 定位位置精度是否符合要求;3. 地理位置名称解析过程无误。
- 应用升级兼容性测试:需要保证应用能够在升级或跨版本升级后一些关键数据得以保留,而不必用户重新设置,诸如用户账户认证信息、亮度设置、用于标示设备的UUID和一些关键的应用功能开关设置等等。
- 设备兼容性测试:随着Android设备的快速分化以及iOS设备的缓慢分化,应用需要适配在不同配置的硬件平台上(不同的CPU体系结构、不同的RAM配置、不同的Flash存储、不同的传感器配置、不同的网络模式等等),同时还要兼顾不同的OS版本,所以需要很大的精力放在系统兼容性和设备兼容性测试上。
- 耦合应用测试:对于今天的移动应用,“孤岛”模式的应用已经不复存在。大多数应用需要跟其他应用进行交互,从而达到“社交化”或“分享”以及“支付”的功能,这样,它在运行时跟其他软件的交互就存在一定的不确定性,这时如果应用有版本升级,我们需要关注升级后的耦合应用跟我们的应用之间的交互是否还依旧有效。
- PUSH跳转测试:现今的移动应用同样还存在通过推送服务来让用户到达特定页面的特征。这样我们需要对PUSH服务能否到达特定页面并正确展示特定页面做测试。
- 统计上报测试:对于大多数应用来说,收集一些用户数据有助于他们对用户行为作出分析,从而对比是不是一些新功能的加入能提高用户的活跃度或转化率。这些信息都需要一定的上报方案才能获取、入库和分析。所以对于QA来说,这部分工作并不弱于一般功能测试。
---------------------------------------------
补充说的网络环境,网络方面可以重点关注三类测试:
- 功能测试(用户体验方面)。在有些2G/3G网络上请求延迟会比较大,建立连接速度慢,以及不断进行大量的分散请求也会导致功耗增大、反复建立连接导致完成所有请求/响应时间长,这些都需要关注到。同时,应用内提供一套支持节约流量的使用模式也是一种可取的途径。另外,应用自身也可以考虑加上一定的离线工作模式,如将一些关键数据在WiFi连接时或有网时进行预取。参考豆瓣电台离线模式或虾米的歌单离线收听。不过此类测试可以通过一些工具来模拟网络延迟大或是丢包严重的情况,用2G/3G网络直接测试的环境构造成本会比较大。
- 适当的性能测试。功能测试已经能发现很多用户体验方面的问题,但这是大概的。如果要特别精细地定位问题瓶颈,需要通过性能测试详细分析延迟出现在哪里,是在建立连接的过程还是服务端响应的过程,或者是应用本地处理返回的数据上。
- 由于运营商在2G/3G网络环境上的复杂配置,很多情况下应用到服务端的连接会出现各种各样的怪象,导致用户无法在操作应用端时成功将请求发往服务端。这部分无法直接通过测试来保证(除非你**真的**有足够的资源可以做好众测)。建议跟运维组联系部署或租用全国范围内的电信、联通、移动网络监控(监控到关键域名下URL的响应)。
一、 什么是App性能测试
性能(performance):是系统实现其功能的能力。例如,响应时间、吞吐能力、事务处理数。
性能测试,是指在特定负载情况下,确定系统的响应速度和稳定性的表现。它也可以研究、测量、验证系统的其他特征,比如可扩展性、可靠性和资源使用率。通俗的讲:通过模拟生产运行的业务压力量和使用场景组合,测试系统的性能是否满足生成性能要求,即在特定的运行条件下验证系统的能力状况。
按App构成特点,将性能测试分为客户端性能、服务器性能两大块。
二、 性能测试的关键指标
客户端性能的关键指标有:
CPU占用率、内存占用率、流量耗用量、FPS(每秒传输帧数) (见下图)<img src="https://i-blog.csdnimg.cn/blog_migrate/42c0dadb0208fbfaba278b349d3135f3.png" data-rawwidth="1075" data-rawheight="398" class="origin_image zh-lightbox-thumb" width="1075" data-original="https://pic4.zhimg.com/90ac2d68e93b78723776c2ec4af0de0b_r.png">
服务器端性能的关键指标有:
响应时间、并发用户数、吞吐量等;
三、 如何做性能测试
1. 明确测试目标;了解性能测试需求;
2. 编写性能测试计划;
3. 分析性能测试需求;
4. 编写性能测试方案、设计测试场景;
5. 相关资源准备(人力资源、硬件资源、软件资源);
6. 测试程序开发;脚本维护、测试数据准备、测试监控准备;
7. 执行性能测试并收集测试结果;
8. 分析结果;
9. 系统调优及再测试;
四、 性能测试五大误区
Ø 误区 1:性能测试不是手游测试的主要矛盾,兼容性才是
开发者过高的预估了兼容性测试的重要性,而过低忽略性能测试。其实很多问题的原因就是性能导致的,例如“游戏玩到一半,突然来了个电话,再返回时游戏界面崩溃”、或者“在你好不容易在手机上打了一大段字,正要发送时,来了条短信,而记事软件已经崩溃,辛辛苦苦编辑的内容早就没了” 这类问题非常容易引起玩家的反感,造成流失。
Ø 误区 2:性能测试要像功能测试一样,覆盖到所有功能
性能测试的主要目的是为了系统调优。不可能对所有的系统功能都进行性能测试。在测试设计时需要结合当时的实际系统,先分析软件可能存在的瓶颈,此时可依据80/20 原则分析:对系统资源的利用、数据大量传输、数据转换、用户使用频率、逻辑复杂度等进行分析,选择要执行的功能和场景,再依此制定性能测试的方案。
Ø 误区 3:做性能测试主要就是测试工具的使用
我做不好性能测试,是因为对测试工具不熟悉;测试工具可以自动生成我所需要的报表;依靠性能测试工具就能准确定位系统颈;测试工具在测试中只起到辅助性作用。而测试方案、测试场景的分析、问题的定位这才是性能测试的关键。不要期望测试工具能够生成你想要的所有东西(报表、瓶颈分析),工具只能近可能多的提供给我们分析的依据。
Ø 误区 4:提高一下硬件配置就可以提高性能了,因此性能测试不重要
随着软件规模的扩大,提高硬件配置只是解决性能问题的一个基本手段。因为如果软件自身存在性能问题,再多的资源可能也不够用,例如:内存泄漏问题,随着时间的增加,内存终究会被耗尽,最后导致系统崩溃;数据库链接数等配置信息、数据库死锁是和硬件很难挂钩的;算法逻辑问题导致程序缓慢。即使要提高已经配置,也要首先用性能测试的方式得出哪些硬件可能存在瓶颈。
Ø 误区 5:随便找个环境下进行一下性能测试就可以了
做性能问题分析可以在类生产环境上进行,配置可以有些差别,一般性能测试还是在类生产环境进行,原因有两个:1)性能测试要尽可能早的完成,提早发现问题并整改;2)在生产环境进行测试可能会造成脏数据。
五、 WeTest性能测试
提供android版本和云端版本2种性能测试方案,这里着重介绍下本地版本。使用3步即可:
1) 打开WeTest腾讯质量开放平台 下载WeTest APP,并安装(手机需越狱或Root);<img src="https://i-blog.csdnimg.cn/blog_migrate/c247867c74528cbc531ba1dde454b564.jpeg" data-rawwidth="525" data-rawheight="869" class="origin_image zh-lightbox-thumb" width="525" data-original="https://pic4.zhimg.com/1a52f37d95a29c6b2591fe839c97ba0b_r.jpg">
2) 运行手机上的WeTest APP,选择手游后点“开始测试”;<img src="https://i-blog.csdnimg.cn/blog_migrate/693a50a77f41491f7eb3f59fb49cb0bf.jpeg" data-rawwidth="959" data-rawheight="538" class="origin_image zh-lightbox-thumb" width="959" data-original="https://pic4.zhimg.com/0e3f540043a6d44ce65bf7274a0b1c7b_r.jpg">
<img src="https://i-blog.csdnimg.cn/blog_migrate/7c219f825f623b54284e0e7026cb0508.jpeg" data-rawwidth="958" data-rawheight="539" class="origin_image zh-lightbox-thumb" width="958" data-original="https://pic1.zhimg.com/528ecf210e11d7267dac48abe3e30838_r.jpg">3) 上传并查看报告
结束测试后,打开WeTestAPP点击“上传”按钮。<img src="https://i-blog.csdnimg.cn/blog_migrate/cf9c6207d6f264a70631c975cae8b49a.jpeg" data-rawwidth="526" data-rawheight="884" class="origin_image zh-lightbox-thumb" width="526" data-original="https://pic3.zhimg.com/ba88370d16fac92a71a61dbb30869026_r.jpg">
登录WeTest腾讯质量开放平台点击“我的主页”里面,左侧的“手游测试报告”,在页面中就会出现“性能测试”结果报告,点击查看,就可以查看完整的测试报告;<img src="https://i-blog.csdnimg.cn/blog_migrate/200e7b8273e696ddde0efe4159b9f440.png" data-rawwidth="437" data-rawheight="458" class="origin_image zh-lightbox-thumb" width="437" data-original="https://pic1.zhimg.com/bda042e1789d9e355681838d1c1fdab4_r.png">
<img src="https://i-blog.csdnimg.cn/blog_migrate/3131a0b0ad4c704598a7799bd60c0a94.png" data-rawwidth="451" data-rawheight="257" class="origin_image zh-lightbox-thumb" width="451" data-original="https://pic2.zhimg.com/2d1d233553c538d15091ea7a77e54fe1_r.png">
彩蛋>>没有这些工具前,我们是怎么测试的?
这里分享一个案例。测试人员使用组合式的方式,分别从不同的工具上采集核心数据,并且数据不全,也不专业。
Wimat负责CPU部分,而360负责流量采集部分。其实Wimat使用方式如下:<img src="https://i-blog.csdnimg.cn/blog_migrate/09ce4132b442cb1baeb9c258528efcb2.jpeg" data-rawwidth="220" data-rawheight="336" class="content_image" width="220">
<img src="https://i-blog.csdnimg.cn/blog_migrate/37b9e1209956fae32814127a2f8195cd.jpeg" data-rawwidth="236" data-rawheight="336" class="content_image" width="236">1)勾选所要监控的对象并设置好监控时间后,点击开始,WiMAT会在后台启动一个服务,由这个服务
监控各项指数的变化并写到结果文件里;
2)这时候可以打开或切换到要测试的应用程序,运行一些测试用例;
3)结束后切换回WiMAT界面,点击停止结束监控,WiMAT会告诉你结果文件的存储位置
360手机卫士对流量监测的使用方法如下:
1)进入安全保护tab页,选择流量监控;
2)进入后再切换到统计排行tab页;<img src="https://i-blog.csdnimg.cn/blog_migrate/a7639a0a0a6a21411ca96173ed71b7d3.jpeg" data-rawwidth="233" data-rawheight="347" class="content_image" width="233">
<img src="https://i-blog.csdnimg.cn/blog_migrate/c4d4fed4df119d6b469f4e0a96bae1e1.jpeg" data-rawwidth="230" data-rawheight="347" class="content_image" width="230">一、 什么是App性能测试
性能(performance):是系统实现其功能的能力。例如,响应时间、吞吐能力、事务处理数。
性能测试,是指在特定负载情况下,确定系统的响应速度和稳定性的表现。它也可以研究、测量、验证系统的其他特征,比如可扩展性、可靠性和资源使用率。通俗的讲:通过模拟生产运行的业务压力量和使用场景组合,测试系统的性能是否满足生成性能要求,即在特定的运行条件下验证系统的能力状况。
按App构成特点,将性能测试分为客户端性能、服务器性能两大块。
二、 性能测试的关键指标
客户端性能的关键指标有:
CPU占用率、内存占用率、流量耗用量、FPS(每秒传输帧数) (见下图)<img src="https://i-blog.csdnimg.cn/blog_migrate/42c0dadb0208fbfaba278b349d3135f3.png" data-rawwidth="1075" data-rawheight="398" class="origin_image zh-lightbox-thumb" width="1075" data-original="https://pic4.zhimg.com/90ac2d68e93b78723776c2ec4af0de0b_r.png">
服务器端性能的关键指标有:
响应时间、并发用户数、吞吐量等;
三、 如何做性能测试
1. 明确测试目标;了解性能测试需求;
2. 编写性能测试计划;
3. 分析性能测试需求;
4. 编写性能测试方案、设计测试场景;
5. 相关资源准备(人力资源、硬件资源、软件资源);
6. 测试程序开发;脚本维护、测试数据准备、测试监控准备;
7. 执行性能测试并收集测试结果;
8. 分析结果;
9. 系统调优及再测试;
四、 性能测试五大误区
Ø 误区 1:性能测试不是手游测试的主要矛盾,兼容性才是
开发者过高的预估了兼容性测试的重要性,而过低忽略性能测试。其实很多问题的原因就是性能导致的,例如“游戏玩到一半,突然来了个电话,再返回时游戏界面崩溃”、或者“在你好不容易在手机上打了一大段字,正要发送时,来了条短信,而记事软件已经崩溃,辛辛苦苦编辑的内容早就没了” 这类问题非常容易引起玩家的反感,造成流失。
Ø 误区 2:性能测试要像功能测试一样,覆盖到所有功能
性能测试的主要目的是为了系统调优。不可能对所有的系统功能都进行性能测试。在测试设计时需要结合当时的实际系统,先分析软件可能存在的瓶颈,此时可依据80/20 原则分析:对系统资源的利用、数据大量传输、数据转换、用户使用频率、逻辑复杂度等进行分析,选择要执行的功能和场景,再依此制定性能测试的方案。
Ø 误区 3:做性能测试主要就是测试工具的使用
我做不好性能测试,是因为对测试工具不熟悉;测试工具可以自动生成我所需要的报表;依靠性能测试工具就能准确定位系统颈;测试工具在测试中只起到辅助性作用。而测试方案、测试场景的分析、问题的定位这才是性能测试的关键。不要期望测试工具能够生成你想要的所有东西(报表、瓶颈分析),工具只能近可能多的提供给我们分析的依据。
Ø 误区 4:提高一下硬件配置就可以提高性能了,因此性能测试不重要
随着软件规模的扩大,提高硬件配置只是解决性能问题的一个基本手段。因为如果软件自身存在性能问题,再多的资源可能也不够用,例如:内存泄漏问题,随着时间的增加,内存终究会被耗尽,最后导致系统崩溃;数据库链接数等配置信息、数据库死锁是和硬件很难挂钩的;算法逻辑问题导致程序缓慢。即使要提高已经配置,也要首先用性能测试的方式得出哪些硬件可能存在瓶颈。
Ø 误区 5:随便找个环境下进行一下性能测试就可以了
做性能问题分析可以在类生产环境上进行,配置可以有些差别,一般性能测试还是在类生产环境进行,原因有两个:1)性能测试要尽可能早的完成,提早发现问题并整改;2)在生产环境进行测试可能会造成脏数据。
五、 WeTest性能测试
提供android版本和云端版本2种性能测试方案,这里着重介绍下本地版本。使用3步即可:
1) 打开WeTest腾讯质量开放平台 下载WeTest APP,并安装(手机需越狱或Root);<img src="https://i-blog.csdnimg.cn/blog_migrate/c247867c74528cbc531ba1dde454b564.jpeg" data-rawwidth="525" data-rawheight="869" class="origin_image zh-lightbox-thumb" width="525" data-original="https://pic4.zhimg.com/1a52f37d95a29c6b2591fe839c97ba0b_r.jpg">
2) 运行手机上的WeTest APP,选择手游后点“开始测试”;<img src="https://i-blog.csdnimg.cn/blog_migrate/693a50a77f41491f7eb3f59fb49cb0bf.jpeg" data-rawwidth="959" data-rawheight="538" class="origin_image zh-lightbox-thumb" width="959" data-original="https://pic4.zhimg.com/0e3f540043a6d44ce65bf7274a0b1c7b_r.jpg">
<img src="https://i-blog.csdnimg.cn/blog_migrate/7c219f825f623b54284e0e7026cb0508.jpeg" data-rawwidth="958" data-rawheight="539" class="origin_image zh-lightbox-thumb" width="958" data-original="https://pic1.zhimg.com/528ecf210e11d7267dac48abe3e30838_r.jpg">3) 上传并查看报告
结束测试后,打开WeTestAPP点击“上传”按钮。<img src="https://i-blog.csdnimg.cn/blog_migrate/cf9c6207d6f264a70631c975cae8b49a.jpeg" data-rawwidth="526" data-rawheight="884" class="origin_image zh-lightbox-thumb" width="526" data-original="https://pic3.zhimg.com/ba88370d16fac92a71a61dbb30869026_r.jpg">
登录WeTest腾讯质量开放平台点击“我的主页”里面,左侧的“手游测试报告”,在页面中就会出现“性能测试”结果报告,点击查看,就可以查看完整的测试报告;<img src="https://i-blog.csdnimg.cn/blog_migrate/200e7b8273e696ddde0efe4159b9f440.png" data-rawwidth="437" data-rawheight="458" class="origin_image zh-lightbox-thumb" width="437" data-original="https://pic1.zhimg.com/bda042e1789d9e355681838d1c1fdab4_r.png">
<img src="https://i-blog.csdnimg.cn/blog_migrate/3131a0b0ad4c704598a7799bd60c0a94.png" data-rawwidth="451" data-rawheight="257" class="origin_image zh-lightbox-thumb" width="451" data-original="https://pic2.zhimg.com/2d1d233553c538d15091ea7a77e54fe1_r.png">
彩蛋>>没有这些工具前,我们是怎么测试的?
这里分享一个案例。测试人员使用组合式的方式,分别从不同的工具上采集核心数据,并且数据不全,也不专业。
Wimat负责CPU部分,而360负责流量采集部分。其实Wimat使用方式如下:<img src="https://i-blog.csdnimg.cn/blog_migrate/09ce4132b442cb1baeb9c258528efcb2.jpeg" data-rawwidth="220" data-rawheight="336" class="content_image" width="220">
<img src="https://i-blog.csdnimg.cn/blog_migrate/37b9e1209956fae32814127a2f8195cd.jpeg" data-rawwidth="236" data-rawheight="336" class="content_image" width="236">1)勾选所要监控的对象并设置好监控时间后,点击开始,WiMAT会在后台启动一个服务,由这个服务
监控各项指数的变化并写到结果文件里;
2)这时候可以打开或切换到要测试的应用程序,运行一些测试用例;
3)结束后切换回WiMAT界面,点击停止结束监控,WiMAT会告诉你结果文件的存储位置
360手机卫士对流量监测的使用方法如下:
1)进入安全保护tab页,选择流量监控;
2)进入后再切换到统计排行tab页;<img src="https://i-blog.csdnimg.cn/blog_migrate/a7639a0a0a6a21411ca96173ed71b7d3.jpeg" data-rawwidth="233" data-rawheight="347" class="content_image" width="233">
<img src="https://i-blog.csdnimg.cn/blog_migrate/c4d4fed4df119d6b469f4e0a96bae1e1.jpeg" data-rawwidth="230" data-rawheight="347" class="content_image" width="230">