今年以来,不停的更换项目进行测试支撑。而且是项目已经进入开发尾声的时候才介入项目进行测试工作。甚至个别项目已经进行了多个版本的迭代。这种情况下按照传统的测试流程和方法很难快速的进入角色找到工作重点。因为我们没有前期的积累。对业务不熟悉、没有进行测试用例的设计、甚至项目组的一项需求、设计文档都不全。这种状况下,对探索式软件测试的体会更深了------每天在工作中不断学习规划测试方案、创建测试用例。
探索式测试的定义:探索式测试是一种自由的软件测试风格,强调测试人员同时展开测试学习、测试设计、测试执行和测试结果评估等活动,以持续优化测试工作
一、探索式测试的两层含义
1.其内涵是一种软件测试风格和思考方法不拘泥于具体的测试技术;
2.其外延是一批在这种思考方法指导下发展出来的测试技术,包括测试设计方法、测试管理方法、测试辅助工具等。
探索式测试中的“探索”:指的是有目的的漫游,即带着使命在某个空间中漫游,,但没有预先确定路线。
二、探索式测试与即兴测试的区别:
探索式测试中,测试人员不断地提出假设,利用测试去检验假设,并分析测试结果来证实或推翻假设。即兴测试往往利用错误猜测、典型风险和常见攻击来快速地试探软件,可以在短时间内发现许多错误,但即兴测试不强调系统性和完整性,测试遗留的风险高。
探索式测试的核心优势是有助于学习。测试人员在每天的工作中可以学习规划测试方案,创建测试并执行测试用例、分析测试结果和编写测试报告。
前面我们了解了探索式软件测试的定义、与即兴测试的区别和核心优势。接下来我们再来看看探索式软件测试是怎么进行的,又为什么有有助于学习的核心优势。
探索式测试分为局部探索式测试和全局探索式测试。
三、局部探索式测试
局部探索式测试:根据软件的各种属性,将决策分为五个部分:输入、状态、代码路径、用户数据、和执行环境
1、输入
输入:输入指的是有环境产生的一种刺激,该刺激导致被测试的应用程序有所响应,输入分为原子输入和抽象输入。
原子输入:简单到不能在简单的输入,就是一个单个事件。如 单击按钮、字符串、整数
抽象输入:由于输入接收的可能值太多。需要抽象像化。就是讲可能的值进行分类。从分类中选取最具有代表性的值来输入。如:等价类、边界值就属于抽象化的输入
2、状态
状态:用于描述软件记住过去发生的所有输入和输出的一种方式,状态有临时状态和长期状态。
临时状态:在当前运行中会被程序记住,程序终止,状态就被忘却
长期状态:被存在数据库或一个文件内。程序将来运行可以存取这个值。
代码路径:一连串的代码语句在在软件中构成了一个代码路径
用户数据:即存储的用户使用的数据
运行环境:使用的操作系统和它的当前配置,还包括运行在同一操作系统上会和被测软件进行交互的其他一些应用程序
四、全局探索式测试
从全局考虑特性交互、数据流意以及在应用程序的用户界面上如何选择不同路径来完成某些实际功能。根据功能作用的不同将被测软件分为几个区域。来完成探索。
商业区:商业区就是软件包装盒上描述的哪些特性,还包括市场商业活动或者销售演示中的各种铁西和实现这些特性的程序代码
历史区:历史就是它从前版本遗留下的代码,还有些包括曾经出现较多缺陷的特性和功能
旅游区:有些特性和功能对新用户非常有吸引力,然而,老用户不再使用它们
娱乐区:辅助特性和功能
旅馆区:软件“休息”时那些还必须工作着的特性和功能,如时间程序、独立进程、运行事务等
破旧区:那些用户帮助手册都未提到的,测试人员可以任意破坏的特性
探索式测试也称漫游测试。首先确定核心功能区,通过核心功能区向其他区域扩展漫游。但漫游又不是随意的。这就要求我们在核心区域找到通往其它区域的路径。通过路径分析出次重点区域及此区域的重要特性。