一、何为敏捷测试
敏捷测试,是指接纳了敏捷的核心价值观(沟通,简单,反馈,勇气,尊重),在敏捷软件开发过程中开展的测试。敏捷测试是一种符合敏捷宣言思想,遵守敏捷开发原则,在敏捷开发环境下能够很好地和其整体开发流程融合的一系列的测试实践。敏捷测试和传统测试区别如下表所示:
表1敏捷测试与传统测试区别
二、敏捷测试过程中的测试活动有哪些
敏捷测试要求“测试人员”参与整个敏捷开发过程,并且在迭代周期内遍历整个测试准备——预测试——功能测试——回归测试过程。敏捷测试强调测试启动“越早越好”、“测试与开发并行”,在开发人员进行方案设计时,“测试人员”同步进行测试方法设计;开发人员进行功能开发时,“测试人员”进行测试用例编写;开发人员代码提交后,“测试人员”进行功能验证,并上报故障;开发人员完成故障修复后,“测试人员”进行回归测试。如下图1所示:
图1迭代内的敏捷测试活动
三、敏捷测试实践的必由之路——分层测试
分层测试顾名思义就是分多个层次,由下而上一个层次一个层次的测试,常见的分层测试有单元测试、集成测试和验收测试。在敏捷测试中,为了快速迭代、快速验收地目标,分层测试是不容忽视地选择。
将单元就是人为规定的最小的被测功能模块,单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。单元测试有利于开发人员提高编码质量,避免出现低级问题。
集成测试是单元测试地扩展,在单元测试的基础上,将所有模块按照设计要求(如根据结构图)组装成为子系统或系统,进行集成测试。集成测试有助于发现多个单元模块联动后地故障。
验收测试是部署软件之前的最后一个测试操作。在软件产品完成了单元测试、集成测试和系统测试之后,产品发布之前所进行的软件测试活动。它是技术测试的最后一个阶段,也称为交付测试。验收测试的目的是确保软件准备就绪,并且可以让最终用户将其用于执行软件的既定功能和任务。验收测试的任务,是验证软件的功能和性能符如同用户的期待。
四、敏捷测试分层的改进——交叉测试
01、什么是交叉测试
顾名思义,交叉测试即交换测试。比如原来A同学负责a模块,B同学负责b模块;那么在一轮测试之后,A同学负责b模块测试,B同学负责a模块测试。
02、交叉测试的意义
在软件测试过程中,每个项目一般由多名测试人员组成,每个测试人员分别负责不同模块的测试,并对同一个模块进行多轮测试。经过多轮反复测试,测试人员对自己负责的模块无论从整体到细节都有了非常深刻的掌握,但同时也一个问题,即定向思维。测试的反复循环使得测试人员对自己负责的模块出现测试疲态现象,这严重影响了测试后期故障的检查。这种专注测试模式虽然能加深测试人员对软件部分功能的深入理解,但从某种程度上也影响了产品的最终质量,同时也限制了测试人员对产品整个逻辑和功能的了解。为了解决这个问题,引入叫交叉测试时非常必要的。
交叉测试,可以使测试人员相互交换测试的模块,这样即可以保持测试人员的测试新鲜感,还可以进一步发掘测试的未知领域,发现交叉测试的模块和之前测试的模块间的联系,甚至可以构建更多的测试场景,提高故障发现率,对提高产品的质量也起到了很大帮助。
03、如何引入交叉测试
根据第二节的敏捷测试流程和第三节的测试分层模型,及交叉测试的作用,可以推断出,交叉测试适合在测试结果相对稳定(即测试人员对自己负责的模块测试完成度很高时)、交付产品前进行。因此,可以在集成测试和验收测试之间引入交叉测试。如下图2所示:
图2引入交叉测试后的测试分层
交叉测试需要交换测试人员负责的测试模块,但并不是随机、无计划、无组织地随机分配测试模块给不同地测试人员。根据敏捷测试的“全员测试”理论(即人人都是测试人员),在组织交叉测试地时候,重点考虑有功能关联或交互地模块间进行交叉测试,这样可以使测试人员更加清晰模块间地交互和功能革新后的波及性,可以构建新测试场景扩展测试面,发现更多遗漏的软件故障。
具体交叉测试样例可以参考下表:
表2交叉测试设计样例
其中,A和C,B和D模块之间存在功能关联。
04、交叉测试带来的效益
经过实践发现,交叉测试引入前后对比,发现故障数有所提高,测试人员对不同模块的了解度更加深入,产品质量得到更高的保障。
作者:刘晓佳
来源:51Testing软件测试网原创