移动端app测试
对于手机项目(应用软件),主要是进行系统测试。
而针对手机应用软件的系统测试,我们通常从如下几个角度开展测试工作:
- 功能模块测试;
- 交叉事件测试;
- 性能测试;
- 安全测试;
- 容量测试;
- 兼容性测试;
- 接口测试;
- 易用性/用户体验测试;
- 硬件环境测试
- 安装/卸载测试;
- 升级/更新测试;
1、功能模块测试:根据软件需求说明书或者用户需求验证app的各个功能是否实现,采用如下方法实现并评估功能测试过程:
- 采用时间、地点、对象、行为、和背景五元素或业务分析等方法、提炼app的用户使用场景,对比说明和需求,整理出内在,外在及非功能直接相关需求,构建测试点和用例,并明确测试标准,若用户需求中无明确标准遵循,则需要参考行业或相关国际标准或准则。
- 根据被测试功能点的特性列出相应类型的测试用例对其进行覆盖,如:涉及输入的地方需要考虑等价、边界、负面、异常或非法、场景回滚、关联测试等测试类型对其进行覆盖。
- 在测试实现的各个阶段跟踪测试实现与需求输入的覆盖情况,及时修正业务或需求理解错误地方。
运行
1)App安装完成后的试运行,可正常打开软件。
2)App打开测试,是否有加载状态进度提示。
3)App打开速度测试,速度是否可观。
4)App页面间的切换是否流畅,逻辑是否正确
5)注册
--同表单编辑页面
--用户名密码长度
--注册后的提示页面
--前台注册页面和后台的管理页面数据是否一致
--注册后,在后台管理中页面提示
6)登录
--使用合法的用户登录系统。
--系统是否允许多次非法的登陆,是否有次数限制。
--使用已经登陆的账号登陆系统是否正确处理。
--使用禁用的账号登陆系统是否正确处理。
--用户名、口令(密码)错误或漏填时能否登陆。
--删除或修改后的用户,原用户登陆。
--不输入用户口令和用户、重复点(确定或取消按钮)是否允许登陆。
--登陆后,页面中登陆信息。
--页面中有注销按钮。
--登陆超时的处理。
7)注销
--注销原模块,新的模块系统能否正确处理。
--终止注销能否返回原模块,原用户。
--注销原用户,新用户系统能否正确处理。
--使用错误的账号、口令、无权限的被禁用的账号进行注销
应用的前后台切换
1) APP切换到后台,再回到app,检查是否停留在上一次操作界面。
2) APP切换到后台,再回到app,检查功能及应用状态是否正常,IOS4和IOS5的版本的处理机制有的不一样。
3) app切换到后台,再回到前台时,注意程序是否崩溃,功能状态是否正常,尤其是对于从后台切换回前台数据有自动更新的时候。
4) 手机锁屏解屏后进入app注意是否会崩溃,功能状态是否正常,尤其是对于从后台切换回前台数据有自动更新的时候。
5) 当App使用过程中有电话进来中断后再切换到app,功能状态是否正常
6) 当杀掉app进程后,再开启app,app能否正常启动。
7) 出现必须处理的提示框后,切换到后台,再切换回来,检查提示框是否还存在,有时候会出现应用自动跳过提示框的缺陷。
8) 对于有数据交换的页面,每个页面都必需要进行前后台切换、锁屏的测试,这种页面最容易出现崩溃。
免登录
很多应用提供免登录功能,当应用开启时自动以上一次登录的用户身份来使用app.
1) app有免登录功能时,需要考虑IOS版本差异。
2) 考虑无网络情况时能否正常进入免登录状态。
3) 切换用户登录后,要校验用户登录信息及数据内容是否相应更新,确保原用户退出。
4) 根据MTOP的现有规则,一个帐户只允许登录一台机器。所以,需要检查一个帐户登录多台手机的情况。原手机里的用户需要被踢出,给出友好提示。
5) app切换到后台,再切回前台的校验
6) 切换到后台,再切换回前台的测试
7) 密码更换后,检查有数据交换时是否进行了有效身份的校验
8) 支持自动登录的应用在进行数据交换时,检查系统是否能自动登录成功并且数据操作无误。
9) 检查用户主动退出登录后,下次启动app,应停留在登录界面
数据更新
根据应用的业务规则,以及数据更新量的情况,来确定最优的数据更新方案。
1) 需要确定哪些地方需要提供手动刷新,哪些地方需要自动刷新,哪些地方需要手动+自动刷新。
2) 确定哪些地方从后台切换回前台时需要进行数据更新。
3) 根据业务、速度及流量的合理分配,确定哪些内容需要实时更新,哪些需要定时更新。
4) 确定数据展示部分的处理逻辑,是每次从服务端请求,还是有缓存到本地,这样才能有针对性的进行相应测试。
5) 检查有数据交换的地方,均有相应的异常处理。
离线浏览
很多应用会支持离线浏览,即在本地客户端会缓存一部分数据供用户查看。
1) 在无网络情况可以浏览本地数据
2) 退出app再开启app时能正常浏览
3) 切换到后台再切回前台可以正常浏览
4) 锁屏后再解屏回到应用前台可以正常浏览
5) 在对服务端的数据有更新时会给予离线的相应提示
App更新
1) 当客户端有新版本时,有更新提示。
2) 当版本为非强制升级版时,用户可以取消更新,老版本能正常使用。用户在下次启动app时,仍能出现更新提示。
3) 当版本为强制升级版时,当给出强制更新后用户没有做更新时,退出客户端。下次启动app时,仍出现强制升级提示。
4) 当客户端有新版本时,在本地不删除客户端的情况下,直接更新检查是否能正常更新。
5) 当客户端有新版本时,在本地不删除客户端的情况下,检查更新后的客户端功能是否是新版本。
6) 当客户端有新版本时,在本地不删除客户端的情况下,检查资源同名文件如图片是否能正常更新成最新版本。如果以上无法更新成功的,也都属于缺陷。
定位、照相机服务
1) App有用到相机,定位服务时,需要注意系统版本差异
2) 有用到定位服务、照相机服务的地方,需要进行前后台的切换测试,检查应用是否正常。
3) 当定位服务没有开启时,使用定位服务,会友好性弹出是否允许设置定位提示。当确定允许开启定位时,能自动跳转到定位设置中开启定位服务。
4) 测试定位、照相机服务时,需要采用真机进行测试。
时间测试
客户端可以自行设置手机的时区、时间,因此需要校验该设置对app的影响。
--中国为东8区,所以当手机设置的时间非东8区时,查看需要显示时间的地方,时间是否展示正确,应用功能是否正常。时间一般需要根据服务器时间再转换成客户端对应的时区来展示,这样的用户体验比较好。比如发表一篇微博在服务端记录的是10:00,此时,华盛顿时间为22:00,客户端去浏览时,如果设置的是华盛顿时间,则显示的发表时间即为22:00,当时间设回东8区时间时,再查看则显示为10:00。
PUSH测试
1) 检查push消息是否按照指定的业务规则发送
2) 检查不接受推送消息时,检查用户不会再接收到push.
3) 如果用户设置了免打扰的时间段,检查在免打扰时间段内,用户接收不到PUSH。
在非免打扰时间段,用户能正常收到push。
4) 当push消息是针对登录用户的时候,需要检查收到的push与用户身份是否相符,没有错误地将其它人的消息推送过来。一般情况下,只对手机上最后一个登录用户进行消息推送。
5) 测试push时,需要采用真机进行测试。
2、交叉事件测试:又叫事件冲突测试,是指一个功能正在执行过程中,同时另外一个事件或操作对该过程进行干扰测试。如:App在前/后台运行状态时与来电、文件ixaz、音乐收听等关键运用的交互情况测试等。
- 多个App同时运行是否影响正常功能。
- App运行时前/后台切换是否影响正常功能。
- App运行时拨打/接听电话。
- App运行时发送/接收信息。
- App运行时发送/收取邮件。
- App运行时切换网络(2G/3G/WIFI).
- App运行浏览网页。
- App运行时使用蓝牙传送/接收数据。
- App运行时使用相机、计算器手机自带设备。
- App运行时插拔充电器。
执行干扰的冲突事件不能导致软件应用软件异常、手机死机或者花屏等严重问题,还需要注意各交叉事件的优先级别,检验系统是否能依据各事件的优先级别依次进行处理。不能因执行优先级别高的事件而导致优先级别较低的事件吊死。另外有中英文模式切换的手机要注意中英文模式切换后的功能实现存在的问题。
3、性能测试:评估App的时间和空间特性 ;
- 极限测试:在各种边界压力情况下,如电池、存储、网速等,验证App是否能正确响应。
--内存满时安装App
--运行App时手机断电
--运行App时断掉网络
- 响应能力测试:测试App中的各类操作是否满足用户响应时间要求 。
--App安装、卸载的响应时间
--App各类功能性操作的影响时间
- 压力测试:反复/长期操作下、系统资源是否占用异常。
--App反复进行安装卸载,查看系统资源是否正常
--其他功能反复进行操作,查看系统资源是否正常
- 性能评估:评估典型用户应用场景下,系统资源的使用情况。
- Benchmark测试(基线测试):与竞争产品的Benchmarking, 产品演变对比测试等。
4、安全测试:
- 软件权限
--扣费风险:包括发送短信、拨打电话、连接网络等
--隐私泄露风险:包括访问手机信息、访问联系人信息等
--对App的输入有效性校验、认证、授权、敏感数据存储、数据加密等方面进行检测
--限制/允许使用手机功能接人互联网
--限制/允许使用手机发送接受信息功能
--限制/允许应用程序来注册自动启动应用程序
--限制或使用本地连接
--限制/允许使用手机拍照或录音
--限制/允许使用手机读取用户数据
-- 限制/允许使用手机写人用户数据
--检测App的用户授权级别、数据泄漏、非法授权访问等
- 安装与卸载安全性
--应用程序应能正确安装到设备驱动程序上
--能够在安装设备驱动程序上找到应用程序的相应图标
--是否包含数字签名信息
--JAD文件和JAR包中包含的所有托管属性及其值必需是正确的
--JAD文件显示的资料内容与应用程序显示的资料内容应一致
--安装路径应能指定
--没有用户的允许, 应用程序不能预先设定自动启动
--卸载是否安全, 其安装进去的文件是否全部卸载
--卸载用户使用过程中产生的文件是否有提示
--其修改的配置信息是否复原
--卸载是否影响其他软件的功能
--卸载应该移除所有的文件
- 数据安全性
--当将密码或其他的敏感数据输人到应用程序时, 其不会被储存在设备中, 同时密码也不会被解码
--输人的密码将不以明文形式进行显示
--密码, 信用卡明细, 或其他的敏感数据将不被储存在它们预输人的位置上
--不同的应用程序的个人身份证或密码长度必需至少在4一8 个数字长度之间
--当应用程序处理信用卡明细, 或其他的敏感数据时, 不以明文形式将数据写到其它单独的文件或者临时文件中。以
--防止应用程序异常终止而又没有侧除它的临时文件, 文件可能遭受人侵者的袭击, 然后读取这些数据信息。
--当将敏感数据输人到应用程序时, 其不会被储存在设备中
--备份应该加密, 恢复数据应考虑恢复过程的异常
移动端app测试的更多相关文章
- 【转】移动端App测试实用指南
转自:互联网那点事 英文原文: http://mobile.smashingmagazine.com/2012/10/22/a-guide-to-mobile-app-testing/ 测试人员常被看 ...
- 【转】【CDC翻客】移动端App测试实用指南
译者注:本文从测试人员的角度出发,提出了100多个在测试移动App过程中需要考虑的问题.不管你是测试人员.开发.产品经理或是交互设计师,在进行移动App开发时,这些问题都很有参考价值.我和Queen ...
- 移动端APP测试概要
APP测试点总结(全面) 一.功能性测试: ——根据产品需求文档编写测试用例. ——软件设计文档编写用例. 注意:就是根据产品需求文档编写测试用例而进行测试. 二.兼容性测试: ——android版本 ...
- 教你如何进行移动端APP测试
1.安全测试(权限) 1)软件权限:其中包括发送信息,拨打电话,链接网络,访问手机信息,联系人信息等等 2)数据在本地的存储.传输等 3)执行某些操作时导致的输入有效性验证.授权.数据加密等方面 4) ...
- 移动端 - APP测试要点
功能测试 1.运行 1)App安装完成后的试运行,可正常打开软件. 2)App打开测试,是否有加载状态进度提示. 3)App页面间的切换是否流畅,逻辑是否正确. 2.注册 1)同表单编辑页面 2)用户 ...
- web端,app端,小程序端测试差异详解
前置解释:1.单纯从功能测试的层面上来讲的话,APP 测试.web 测试和H5测试在流程和功能测试上是没有区别的2.Web项目或pc项目都是在电脑上进行测试的.常见的PC项目架构有BS架构和CS架构的 ...
- web测试与app测试的区别
才开始做测试就接触的web端,后来也接触app端,所以在这里对于自己工作中所接触到的做一些总结(总要养成总结的好习惯). 对于web端和移动端app,功能方面的测试,例如测试设计方法这些都大同小异,都 ...
- App测试
(1)App独特测试点: 客户端兼容性测试:系统版本.不同深度定制的rom.屏幕分辨率.中断测试.安装.卸载.升级.对其他程序的干扰等 需要的一些工具: appnium / lr / jmeter ...
- APP测试要点
APP测试的时候,建议让开发打好包APK和IPA安装包,测试人员自己安装应用,进行测试.在测试过程中需要注意的测试点如下: 1.安装和卸载 ●应用是否可以在IOS不同系统版本或android不同系统版 ...
随机推荐
- GDI+画图类Graphics的使用
一:基础定义 #region 定义线尾.线头为箭头.字体和笔刷 Pen p = );//定义画笔 蓝色,宽度为1(坐标显示颜色) p.EndCap = LineCap.ArrowAnchor;//定义 ...
- doxygen学习笔记
下载doxygen:http://www.cnblogs.com/duxiuxing/p/4301015.html 学习思路 doxygen能够根据代码和注释生成文档.可想而知,doxygen对注释的 ...
- [Design Pattern] Command Pattern 简单案例
Command Pattern, 即命令模式,把一个命令包裹在一个对象里面,将命令对象传递给命令的执行方,属于行为类的设计模式 下面是命令模式的一个简单案例. Stock 代表被操作的对象.Order ...
- python_安装工具easy_install和pip
前言 用python就必须知道easy_install和pip这两个东西啦 easy_insall提供了在线一键安装模块或包的方便方式,而pip是easy_install的改进版,提供更好的提示信息, ...
- 【safari挖的那些坑】iOS safari 浏览器 时间乱码(ios时间显示NaN) 问题解决
通常 iOS下时间错误表现形式 问题一: 这个界面运用了大量的日期类型的计算,当我们用JavaScript实例化一个日期对象时,我们可以这样用: var date =new Date(); 上面这段代 ...
- poj 3229 The Best Travel Design ( 图论+状态压缩 )
The Best Travel Design Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 1359 Accepted: ...
- struts2,hibernate,spring整合笔记(4)--struts与spring的整合
饭要一口一口吃,程序也要一步一步写, 很多看起来很复杂的东西最初都是很简单的 下面要整合struts和spring spring就是我们的管家,原来我们费事费神的问题统统扔给她就好了 先写一个测试方法 ...
- 使用Intent实现Activity的显式跳转
[正文] 这里以按钮实现活动跳转为例,为实现这个功能,我们需要三个步骤: 1.点击按钮才发生页面跳转,因此,第一步我们先要找到要点击的按钮 如何拿到按钮对象呢?通过资源id,前面我们提到过,在R.id ...
- 阿里云ECS安全改造:改用AWS EC2私钥方式登录
阿里云ECS有多烂,用过AWS的人都知道,ECS有什么问题呢,简单总结一下: 1)ubuntu居然root直接访问 2)端口全开 3)WEB控制台无法定义安全组及关闭端口 4)云盾黑洞 的确用起来很糟 ...
- 95秀-自定义对话框 dialog 合集
普通的确认对话框 NormalDialog.java import android.app.Dialog; import android.content.Context; import android ...