1 探索式测试基础系列
1.1 背景
初恋是甜蜜的,与众不同的,只有恋过的人才会知道,就像初识探索式测试一样。在学习探索式测试的过程中,也会有酸甜苦辣,只有了解它的人才知道这种味道。不妨和探索测试一起再回味一下初恋的味道。
移动互联网时代,敏捷开发是主流的开发流程,功能的快速迭代让我们面临着各种需求变更和被不断压缩的测试时间,而探索式测试的出现给我们带来了很大的惊喜,它非常适用于移动APP测试,接下来笔者将详细介绍如何快速入门探索式测试。
1.2 认识探索式测试
探索式测试(Exploratory Testing)字里行间会给人带来一丝丝神秘感,的确探索式测试正如其名,相对脚本测试会更具有趣味性,探索式测试是一种自由的软件测试风格,强调测试人员同时展开测试学习、测试设计、测试执行和测试结果评估等活动,以持续优化测试工作。
图1:探索式测试
如图1所示,探索式测试强调的是思维发散,一次的测试过程必须遵循SMART原则、在一定的时间周期内围绕测试目标做探索式测试,并根据测试结果进行分析,不断优化调整测试方向,因此探索式测试是一种带着”反思“的学习、优化和快速迭代的过程。
1.3 探索式测试的目标
图2:探索式测试的目标
目标一:理解应用程序如何工作,它的接口看起来怎样,它实现了哪些功能探索式测试首要的任务是要检查软件是否实现了产品需求,是否符合用户的使用习惯。其次要理解功能的实现原理,判断风险可能出现的场景,从而指导测试的范围和测试重要性的分级。
目标二:强迫软件展示其全部能力
探索式测试另一个很重要的方面就是探索,参考漫游测试法对软件进行全局探索测试。
目标三:找到缺陷
尽可能多地找到缺陷是所有测试的目标。
2 探索式测试入门方法和实践
探索式测试旨在充分发挥测试人员的智慧,趣味性和自主性更强,它强调同时进行用例设计,测试执行和测试结果评估,因此测试活动会更加灵活,也更加敏捷,对于提升测试效率和降低漏测率很有帮助,另外探索测试小组准备了一套成熟的方法论指导,新手入门更快。
2.1 探索式测试方法介绍
有些人会觉得探索式测试无异于自由测试,其实不然,探索式测试是有一套成熟的方法论体系,其中的方法就是掌握探索式测试法宝。前人总结的探索式测试方法同样适用于移动互联网测试,根据移动APP的实际情况可以重新进行梳理归类。
基础类方法 | 指南法、反叛法、懒汉法、破坏法、取消法、极限法、强迫症法、测一送一法 |
---|---|
深入测试方法 | 地标法、快递法、长路径法、深夜法、通宵法、遍历法、收藏家法 |
分区域测试方法 | 卖点法、配角法、恶邻法、上一版本法、深巷法 |
指南法:指南法顾名思义就是按照需求文档、用户手册或是测试建议进行的测试,检查产品功能是否有按照预期实现。
反叛法:输入最不可能的数据,或是已知恶意的输入,检查程序对于异常输入数据的处理能力。包括非法输入内容和错误的输入顺序。
懒汉法:测试人员做尽量少的工作,接受所有默认值,检测应用处理默认值和空白值的能力保持输入字段为空,或不勾选任何选项。
破坏法:破坏应用运行的环境,数据、资源或权限,再去执行相关的操作,检查应用的表现。
取消法:启动操作后在停止它,针对比较耗时的操作,检查应用的自我清除能力,重新启动操作能正常开始并结束。
极限法:向软件提供极限条件或难以回答的问题,查看软件的处理能力,包括数据极限,操作极限,时间极限。
强迫症法:重复输入相同数据,反复操作同一个按钮。
测一送一法:用户同时在不同地方操作同一个用户数据对象。
地标法:把应用中的功能点当作地标,从一个地标执行到另一个地标来探索应用程序。
快递法:确认特性所使用的内部数据,通过操作软件得到该数据走遍其相关特性,测试人员使用该方法时重点关注数据的流动是否始终正确。
长路径法:
1)确定测试目标,到达目的地之前尽量多地在应用程序中穿行;
2)埋在应用程序最深处的界面作为测试目标。
深夜法:卖点特性停止运行后,测试其它维护任务如数据归档、备份文件等。
通宵法:让程序一直保持运行而不去关闭(重复运行自动化脚本且从不停机)。
遍历法:最短路径来过完软件的所有明显的功能。
收藏家法:收集软件的输出,越多越好。
卖点法:产品主打的亮点功能,按照产品演示的步骤执行。
配角法:找到和主要特性一起显示或运行的特性,从而对这些特性进行额外的测试和关注。
恶邻法:bug多、相关模块。
上一版本法:上一版本支持的场景,在新版本的表现。
深巷法:关注最不可能被使用或最不吸引用户的特性和小功能。
2.2 探索式测试中的用例设计
ET的测试用例更像一种思维导图,或者思维引导,没有具体的形态,ET需要的就是一种测试思维,测试经验,不需要罗列具体的测试步骤.测试管理者在分配任务的时候,可以指出测试的切入点,以及可能出现的问题点。
测试人员按照ET的思维导图中的测试点进行测试执行,分为检查和探索两个步骤,检查主要是检查产品功能是否有按需求实现,探索主要是按照漫游测试方法探索软件的各种路径和场景。
图3:探索式测试用例设计
2.3 探索章程三部曲
第一部曲:圈地盘
确定探索测试的目标,资源以及相关的信息,目标尽量控制不要过大。
目标:探索微信朋友圈发照片功能,制造不同的测试数据和场景,以图发现朋友圈发照片的缺陷。 |
---|
第二部分:找变量
确定影响测试的因子 。
照片来源 | 照片大小 | 网络 | 照片格式 |
---|---|---|---|
系统拍照 | 大于10M | WIFI | png |
第三方软件保存 | 5M | 4G | JPEG |
截图 | 2M | 3G | TIFF |
缓存图片 | 200K | 2G | BMP |
第三部:再探索
根据影响测试的因子,进行组合测试法。
2.4 探索式测试解决BUG复现和定位
问题:如快速定位,找到BUG的重现路径。
举一个QQ同步助手中的用户反馈问题。
用户反馈问题:不少用户反馈在同步时会出现4233003问题。
测试分析:
(1)初步分析1:4233003是权限问题,于是联系用户,发现读写联系人权限已经开启,排除了手机权限问题。
(2)初步分析2:用户本地联系人数据有问题,于是联系用户切换帐号再做同步,能正常同步,又排除了联系人数据问题。
(3)初步分析3:云端联系人与本地联系人不一致,双向同步本地联系人会有增删操作,而且同步进度到90%才报错,推测是本地某些特殊联系人数据导致的问题,于是建议用户清空本地,再做同步,果然能正常同步。
初步结论:本地某些特殊联系人数据会导致增删权限问题。接下来围绕此结论进行探索测试。
第一步:找出名词(变量):联系人数据。找出动词:增加、修改、删除;
第二步:确定探索章程;
第三步:确定变量范围和动词二维表,进行探索式测试。
用快递测试法+收藏家法+场景插入法进行探索测试
重现问题场景:双向同步时云端删除一个联系人A,刚好本地登录的微信帐号下和本地都有该联系人A,此时做双向同步并会出现4233003的问题。
最后,探索式专项活动也是探索式测试中重要的一部分,在发现缺陷方面效果显著,详情请参见下一篇《探索式测试基础系列--蜜月旅行》,敬请关注。