首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

纯干货:软件测试理论和APP测试实践案例

sefd

一、软件测试的系统流程

软件工程模型基本就是业务建模-〉系统分析-〉概要设计-〉详细设计-〉编码-〉测试-〉部署。其中测试过程按4个步骤进行,即单元测试、集成测试、系统及发版测试和回归测试。

(1)单元测试,集中对每一个程序单元进行测试,检查各个程序模块是否正确地实现了预定的功能,属于白盒测试,测试范围为单元内部的源代码和程序结构(如数据结构,逻辑控制,异常处理等)。

(2)集成测试把已测试过的模块组装起来,检查模块间接口是否正确,检查各个模块之间的通信和相互调用是否符合需求。属于灰盒测试,测试范围为模块接口之间的数据传递,以及模块组合后的功能。

(3)系统测试把被测软件系统和计算机硬件、数据库、外设、前端和后端以及其它软件结合在一起,在实际运行环境下对软件系统进行一系列的组装测试和运行测试。目的在于检测软件对《需求规格说明书》的符合程度。属于黑盒测试,只关心输入和输出结果,测试范围为整个系统。

(4)回归测试:是软件上线后的维护阶段或者是研发修复Bug之后进行确认测试。目的在于验证缺陷已经得到修复,并检测是否引入新的缺陷。

二、测试用例及编写方法

测试用例是一份描述具体测试步骤的文档,包括测试的输入参数、条件及配置、预期的输出结果等,用以判断被测软件的工作是否正常。

2.1、测试用例设计的三大原则

(1)设计测试用例要力求最大的覆盖率,参考《需求规格说明书》对每个功能点进行操作上的细化,尽可能趋向最大需求覆盖率。

(2)用例要对测试功能点、测试条件、测试步骤、输入值和预期结果准确描述。

(3)在设计测试用例的时候,除了满足系统基本功能需求外,还应该考虑各种异常情况、边界情况和承受压力的能力等。

2.2、设计测试用例设计方法

设计测试用例时要根据具体的产品和需求所明书,比如NetSignC接口普遍得就是根据输入和输出参数的不同情况设计用例,但也有通用的情况。

(1)等价类划分。把程序的输入域划分成若干部分子集,然后从每个部分中选取少数代表性数据作为测试用例。每一类的代表性数据在测试中的作用等价于这一类中的其他值,比如传输IP地址时,可以分为A类地址、B类地址和C类地址。既能减少用例总数,又能提高测试覆盖率。

(2)边界值分析法。通常边界值分析法是作为对等价类划分法的补充,其测试条件来自等价类的边界。因为很多错误是发生在输入或输出范围的边界上,而不是发生在输入/输出范围的中间区域。因此针对各种边界情况设计测试用例,可以查出更多的错误。

(3)错误推断法。基于测试人员的经验和直觉推测程序中所有可能存在的各种错误,从而有针对性的设计测试用例。比如字符串和普通的字符数组结尾’\0’的区别,内存拷贝函数stycpy和memecpy必须要进行+1或-1的操作。

三、APP测试中经常出现的基础案例

3.1、APP的安装、卸载测试

(1)软件在不同操作系统及版本(Android的EMUI\Flyme\MIUI、iOS、WindowsPhone)下安装是否正常;

(2)软件安装后的是否能够正常运行,安装后的文件夹及文件是否写到了指定的目录里,安装后没有生成多余的目录结构和文件;

(3)软件安装过程是否可以取消;

(4)软件安装过程中意外情况的处理是否符合需求(如死机,重启,断电)

 (5)安装空间不足时是否有相应提示;

(6)对于需要通过网络验证之类的安装,在断网情况下尝试一下

(7)重复安装应该有提示;

 (8)升级安装时,版本更新链接有效,比如后台设置的版本白名单;

(a)使用各种方式卸载程序,如直接删除安装文件夹卸载是否有提示信息、长按图标卸载、手机设置里卸载、第三方应用卸载;

(b)测试卸载后文件是否全部删除所有的安装文件夹;

(c)卸载过程中出现的意外情况的测试(如死机、断电、重启);

(d)卸载是否支持取消功能,单击取消后软件卸载的情况。

3.2、APP的注册、登录和修改密码测试

3.3、核对rp原型图和效果图,进行UI测试

(1)观察APP的用户界面(如菜单、对话框、窗口和其它可规控件)是否符合UI稿。

(2)不同的连接页面之间导航链接是否有效,是否跳转是否正确。

(3)旋转手机,确保程序不退出,页面排版无异常。

(4)输入框说明文字的内容与产品需求一致。

(5)某页无数据时、断网时、有网但接口异常时的状态页是否和UI一致。

3.4、核对需求文档,进行功能测试

功能测试的用例要根据具体产品设计,这里只提供通用点。APP端测试最关心的是流程和数据,避免Crash和ANR问题。

(1)App安装完成后是否能正常启动,且打开速度控制在预期时间内。

(2)切换后台再切换前台的操作对当前状态如登陆、当前页、数据刷新的影响。

(3)强制杀掉APP进程再启动对当前状态如登陆、当前页、数据刷新的影响。

(4)登陆验证/免密登陆时的手势密码和指纹是否符合产品需求

(5)对于有数据交换的页面,每个页面都必需要进行前后台切换、锁屏解锁的测试,这种页面最容易出现崩溃。

(6)同一用户在多个终端先后登陆时,APP是否有符合产品需求的处理。

(7)App使用过程中有电话进来的中断测试,与文件下载、音乐播放、等应用的交叉情况测试。

(8)很多应用会支持缓存数据,测试在断网启动或从有网到无网时是否可以浏览缓存数据。

3.5、安全性测试

a.软件权限

扣费风险:包括短信、拨打电话、连接网络等。

限制/允许使用手机拍照或录音。

限制/允许使用手机读取用户数据,手机信息、联系人信息等。

限制/允许使用手机写入用户数据。

没有用户的允许,应用程序不能预先设定自动启动。

对App的输入有效性校验、认证、授权、数据加密等方面进行检测。

没有用户的允许,应用程序不能预先设定自动启动。

手机能控制该APP能否使用Wi-Fi和移动数据。

b.数据安全性

如果数据库中重要的数据正要被重写,应及时告知用户。

在数据删除之前,应用程序应当通知用户或者应用程序提供一个“取消”命令的操作。

对密码长度和复杂度的要求。

当将密码或其他的敏感数据输人到应用程序时,其不会被储存在设备中,同时密码也不会被解码。

当应用程序处理信用卡明细或其它的敏感数据时,不以明文形式将数据写到其他单独的文件或者临时文件中。

3.6、性能压力测试

(1)APP端性能测试:在各种边界压力情况下,如电池、存储、网速等,验证App是否能正确响应。

(2)Server端性能测试:通过测试接口的执行效率,如http接口。

3.7、兼容性测试

(1)与本机已经安装的App是否兼容。

(2)在各种系统、系统版本的不同手机上测试注册、登陆、修改密码等功能。

(3)UI层的兼容,界面的显示根据不同尺寸手机是否自适应。

(4)在各种系统、系统版本的不同手机上进行全方面的功能测。试,如使用每一个iOS版本的iPhone上测试“我的银行卡”模块的提现功能。

 (5)基于开发环境和生产环境的不同,检验在各种网络连接下(WiFi、2G/3G/4G等),App的数据和运用是否正确。

-END-

(上文内容不用于商业目的,如涉及知识产权问题,请权利人联系小编,我们将立即处理。)

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180626B1BPZC00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券