资源描述
递推循环在软件测试管理的应用与研究
摘要:为了使软件测试及开发更加高效地开展和实施,提高软件测试开发的高效性和准确性,探讨了根据循环递推原理架构软件测试的组织模式,使软件测试能够更快、更准、更好地执行和管理。阐述了依据软件测试的基本原则,运用递推循环的原理建立合理的软件测试管理和方法模型,根据这一方法执行测试以及测试脚本的迭代,能够有效完成任务。通过与常见的软件组织架构做比较,说明递推循环模型在软件测试过程中的高效与准确,为软件行业组织软件测试提供参考。
关键词:软件测试,递推循环,高效准确,迭代
1 引言
随着信息化时代的高速发展,计算机软件在其中占据了举足轻重的地位,软件测试及其开发作为软件工程中保证和控制产品质量的有效活动,也发挥着越来越重要的作用。那么面对种类繁多的软件产品和不同级别的设计阶段,如何在尽量节省时间和成本的基础上更加高效全面地完成测试工作呢?将递推循环原理应用于软件测试开发管理工作将能够解决这一问题。
2 软件测试概述
2.1 软件测试的现状
目前国内软件测试行业处于起步阶段,正是蓬勃发展的时期,市场对软件测试岗位的需求日益增多,每年的从业人员也越来越多,软件测试在整个产品生命周期中的重要性日益显著。然而,也因为处于初始阶段,所以软件测试行业还存在许多不完善之处,主要表现为以下几点[1]:
(1)软件测试过程管理混乱,统一规范化体系不够健全;
(2)测试自动化集成化程度比较低;
(3)测试人员的整体素质参差不齐。
2.2 软件测试的原则[2]
(1)测试说明缺陷的存在,而不能说明缺陷不存在;
(2)穷尽测试是不可能的;
(3)测试的尽早介入可以节省时间和成本;
(4)缺陷的群集效应;
(5)杀虫剂悖论;
(6)测试活动依赖于测试周境;
(7)不存在缺陷的谬论。
3 常见的组织方式
目前不同性质的软件行业中,常见的组织方式主要有无规则分组式管理模式、重点式管理模式和分级式管理模式。
3.1 无规则分组式管理模式
软件测试过程中没有确定的分组规则,或者过程中分组标准经常性改变。
此方式下测试人员只熟悉自己负责的模块,对于其他的软件模块了解将不深入,最后导致遗漏部分测试点。倘若不停地变换分组规则,意图每个人均深入掌握整个软件系统,那么在总体代码规模较多的情况下工作将会费时费力、可行度差;还会导致后期测试人员将无所适从,集成化测试脚本开发和应用变得困难。
3.2 重点式管理模式
重点式测试是指在软件测试过程中只测试核心部分或者在某一阶段时只执行节点紧急而又必须要进行的测试。
这种方式绝大部分出现在软件测试时间紧张、测试任务远远大于节点安排的情况下,选取软件的核心代码和重要功能、问题较多的部分、软件临时修改的部分等进行重点测试执行。这种方式的弊端是没有全量测试软件,软件测试是不充分的。
3.3 分级式管理模式
分级式模式常见于第三方测试性质的公司,通常包括三方测试、鉴定/定型测试等。也是较为正规的测试模式,但是在每一级别测试都是对软件完全覆盖的、独立的测试,通常前后阶段是不同组织去执行,造成时间成本上的浪费,而且各个级别测试成果在后续的过程中失去了作用。通常每个测试人员责任明确,人员的突然调动对整个项目进度与效果的影响也非常大[3]。
4 基本概念
4.1 递推循环
递推法是根据某一确定的规律公式逐级推导,最后得出正确结果的过程。递推循环可以认为递推过程是一个闭环,至少需要一个往复的运算[4]。比如,秒表计数就是一个简单的举例。因此在递推循环的过程中必然需要迭代的运算方式[5],即继承之前运算/活动的成果,修改完善当前的运算/活动继续执行,达到一个不断提升的效果。
4.2 统计分组法
统计分组法是一种常用的解决问题的方法,属于统计学范畴。统计分组法就是根据确定的标准将总体分解为若干个体的方式。依据分组标准的种类数量来划分,可以分为简单分组和复合分组[6]。为软件工程提供高效的测试执行管理方式,前期需要对测试对象→软件系统进行合理的分组。
4.2.1 分组的类型
基于软件产品本身具有多方向、多特性的特点,对软件系统分组往往不能局限于某一个标准,所以对软件分组应是一个复合分组的过程。
4.2.2 分组标准的选择
(1)对软件系统分解的组数与实际软件测试人员人数一致;
(2)代码规模是表征软件工作量的主要参数;
(3)代码中函数和类的数量是反映软件结构的主要参数;
(4)软件需求决定了测试类型,也决定了测试难易程度;
(5)测试的自动化程度,测试脚本和工具开发的工作量;等等。
5 建立模型
假设目前具备一套软件系统、测试人员甲、测试人员乙、测试人员丙、配置管理人员丁、质量保证人员戌。软件测试的环境及其他前提条件均满足。
本模型以3元为一组建立,理想情况下以平分工作量的标准将软件系统分为软件分系统1、软件分系统2、软件分系统3共三组;将软件测试过程分为软件研发、软件测试、软件发布、软件维护四个阶段。模型元素表见表1。
表1 模型元素表
模型元素
数量
用途
软件产品
1套(3组)
由分系统1、分系统2、分系统3组成,作为被测软件对象
测试人员
5位
执行软件测试和质量保证人员
测试环境
1套
用来运行软件并执行测试
测试工具
若干
测试辅助工具,包含开源工具和测试开发的脚本程序
测试文档
若干
测试过程中辅助测试和测试总结等文档
经历阶段
4个
分为软件研发、软件测试、软件发布、软件维护四个阶段
那么:
循环次数:cycle_num=(分组个数)team_num-1;
递推公式:an=an-1+1;
递推循环管理流程图如图1:
图1 模型流程图
5.1 模型分析
根据上图可以看出:模型的主体在于测试人员甲、乙、丙3人对应各个分系统之间的递推循环方式[7]。在软件研发阶段需要执行的测试任务,由甲负责分系统1、乙负责分系统2、丙负责分系统3,各人的工作闭环后进入下一阶段;在软件测试阶段的主要测试时间,由丙、甲、乙分别继承甲、乙、丙完成的用例和脚本等成果迭代执行测试,各人的工作闭环后进入下一阶段;在软件发布前的测试则由乙、丙、甲分别继承软件测试阶段丙、甲、乙的成果补充完善测试内容。由此一级一级的递推循环,在最后的维护阶段时,达到整个系统均可由甲/乙/丙中任何一人去执行的效果。
5.2 模型推广
众所周知,实际的软件测试的影响因素是多样的,尤其是工作量和时间。如果对于较大规模、结构复杂的软件而言,测试工作量相对比较多的情况,可以进行二次分组设置,即在以最小单元组的基础上再次分成若干大组,然后在每个小组内执行递推循环的过程(如果有必要可以继续执行在大组内递推循环),如此一来可以化整为零,大大分担了较多的工作量,达到预期效果。
二次分组如图2。
图2 二次分组效果图
另外,对于节点和时间充足的软件执行测试时,在分组上实行大于3的组单元,在阶段内执行多次递推循环迭代,增加测试的准确性,利用好有效的时间以达到最优的软件测试效果。
5.3 至少三步递推的必要性
(1)三步递推法从不同角度入手,针对之前测试成果的补充和完善,消除单一角度的片面性。
(2)如果仅执行3次以下,则对于同一问题生成多种不同结果时容易造成误判,从概率论角度,执行活动越多越接近正确结果,所以至少3步递推循环有利于针对之前的误判误报给出较为正确的分析。
(3)三步法无形中增加了测试准确的概率,因此分组的最小单元为3元[8]。
(4)至少3元为一组递推循环执行,使组内每一元都能全面了解各组的方法、工作内容和软件架构,避免了某个成员因为休假、离职等突然因素对整体工作造成影响,方便后期分担维护,节省了时间和人员成本。
6 模型的最优化评价
本文的第三章讲述了目前常见的组织方式:重点式、分级式、无规则分组式,下面对递推循环模式与以上3种方式进行比较。
理想条件下,对软件对象的测试次数越多、执行有效时间越长、执行脚本用例越完善,则往往逐级发现问题bug的难度越大。以某一软件系统为例,在递推循环模型、重点式、分级式方式下,软件bug发现预估率和测试次数、时间的关系如图3:
图3 bug预估发现率曲线图
从图中可以看出,递推循环模型测试执行能够在最短时间和次数下,发现更多的问题。
分级式软件测试造成每一次测试都是独立的、完全覆盖的,需要花费大量的时间去做相同的工作、完全覆盖,而且人员的流动对整个项目影响较大,违背了缺陷集群性和杀虫剂悖论的基本原则。递推循环模型在每次递推后均迭代上一次的最新成果,逐步完善用例和脚本工具,对集群缺陷作深入分析,避免了返工式操作和时间的浪费,而循环方式有效解决了人员流动性的影响。
重点式软件测试弊端较大,是以工作效果为代价解放时间的过程,造成测试覆盖和问题发现的不充分,违背了测试可以证明缺陷存在的基本原则。递推循环模型在最小组单元分组情况下,符合测试尽早介入的原则,节省了时间和成本,而且在后期时间紧张的情况下,方便以最少的人力和时间改进软件测试工作。
无规则分组式软件测试在中后期易造成责任管理和执行度上的混乱,直接影响工作的效率,进而导致差的软件测试结果,违背了穷尽测试是不可能的这一基本原则。图3软件bug预估发现率曲线图直观有力地说明了递推循环模型的高效性。
7 结语
递推循环型软件测试工程管理模式是一种高效的优秀方式,能够以最少的人力和最短的有效时间执行全面覆盖、自动化程度高的测试工作,能够尽可能地发现并定位更全面、更准确的软件问题。过程管理明确、全面、省时,符合软件测试的基本原则。
参考文献:
[1]曾夏辉,刘洋.国内软件测试现状分析与几点建议[J].网络安全技术与应用,2006(05):1-2.
[2]国际软件测试认证委员会.ISTQB认证测试基础级考试大纲中文版[Z].2019-08-25.
[3]卢淑萍.软件测试管理方法探究[J].中国科技信息,2008(16):1-3.
[4]杨庆红.递归问题循环不变式开发新策略的研究与应用[D].江西:江西师范大学,2003:10-15.
[5]周友军,朱传美.巧借类比法处理循环数列问题[J].中学数学研究,2011(6):1-2.
[6]钟立灿.统计分组的理论探讨[J].统计与决策,2005(7):1-4.
[7]徐章韬,张永成.循环结构:递推思想的算法表达[J].数学通讯,2010(08):1-3.
[8]单学广.基于递推技术的算法程序设计方法的研究与应用[D].江西:江西师范大学,2011:28-32.
-全文完-
展开阅读全文