快速软件测试策略

2017-05-22 00:50隋彬彬
科技视界 2017年4期

隋彬彬

【摘 要】软件日益复杂,软件测试工具、手段不成熟,测试人员不足,测试时间紧张等种种原因导致现在国内测试水平较差。针对现状思考,综合考虑测试时间和测试效果兼顾,制定程序静态扫描的单元测试与探索性测试的系统测试相结合的快速测试策略。

【关键词】快速测试;软件质量;测试策略

0 概述

(1)软件测试现状

随着软件的快速发展,软件产品质量面临着前所未有的挑战,提高测试的效率、降低测试的成本,对软件产品提高质量和应对日趋激烈的市场竞争有着重要意义,而软件质量的提升主要靠软件测试来实现。

统计表明,在典型的软件开发项目中,软件测试的工作量往往占到总工作量的40%以上,而在总成本中,测试成本要占30%~50%。尽管目前大部分公司已经非常重视软件测试,但软件质量提升的实际效果不尽人意,一部分原因是软件测试方面的投入不足,更大一部分原因是软件开发人员、甚至软件测试人员的测试意识不足,测试时间不足,导致无法展开快速、有效的软件测试。

(2)软件测试面临的问题

首先,国内软件相对起步较晚,现在在软件开发上投入了大量的人力物力,相对而言在软件测试方面沒有引起足够的重视,更没有进行成熟的软件测试研究,软件测试环境等测试资源国内暂时没有形成完善的氛围。

其次,软件测试人员较少,难以投入足够的人力展开大规模的、规范的软件测试,甚至在大部分公司软件测试人员地位收入要低于软件研发人员,软件测试远远没有引起重视。

第三,软件发布时间紧凑,开发时间紧张,测试时间就会被大大缩短。测试的效果会大打折扣。

软件日益复杂,软件错误日益增多,软件测试手段不成熟,测试人员不足,测试时间紧张等种种原因导致目前国内测试水平较差,软件测试没有完全展开。针对现状思考,综合考虑测试时间和测试效果兼顾,制定程序静态扫描的单元测试与探索性测试的系统测试相结合,先进行程序静态扫描的单元测试,通过后再进行探索性测试的系统测试的快速测试策略。

1 快速软件测试策略

软件测试是为了更快、更早的将软件产品中存在的缺陷找出来,并敦促软件开发人员尽快解决软件缺陷,向客户提供高质量的产品。确定有效的软件测试策略可快速找出软件中的缺陷。

1.1 单元测试

单元测试是检查软件单元是否正确实现了详细设计中的各项功能、性能要求,发现软件单元内可能存在的各种缺陷。

1.1.1 测试策略

针对单元测试目的,结合实际开发现状,拟采用静态测试工具对源代码进行程序静态扫描。

程序静态分析是:在不运行代码的前提下,通过词法分析、语法分析、控制流等白盒测试技术对软件源代码进行扫描,验证源代码是否满足规范性、安全性的一种代码分析技术。

1.1.2 常用静态分析技术

1.1.3 程序静态扫描的优缺点

程序的静态分析与动态分析是相对应的两种代码分析技术,主要实现方式是通过对程序代码的自动扫描发现隐含的程序缺陷,主要具有以下两条优点:

a)不执行程序,对源程序不会产生任何破坏。程序静态扫描不运行源代码,只是通过静态扫描对源代码进行语法、结构等方面的分析;

b)执行速度快、效率高。成熟的程序静态分析工具每秒可完成上万行代码的扫描,具有执行速度快、效率高的特点。

程序静态扫描的缺点也比较明显:误报率比较高,目前国际最好的程序静态分析工具误报率在5-10%之间,还是比较高的一个状态。

在软件程序实现的过程中使用程序静态分析工具对程序进行扫描,有助于快速发现代码缺陷,提高代码的质量,是一种在节省人力物力的前提下快速的提升源代码质量的有效手段。

1.2 系统测试

系统测试的目的是:在真实或者仿真环境下检验软件程序是否满足“软件研制任务书”和“软件需求规格说明”规定的功能、性能等要求。

1.2.1测试策略

针对系统测试目的,结合人员紧张、开发时间短的实际开发现状,拟采用使用探索性测试的测试策略对软件程序进行功能、性能的合格性验证。

探索性测试首先假设软件存在某缺陷,然后对提出的假设进行逐步验证。在进行探索性测试的过程中,学习知识、测试设计和测试执行是在同一时间交叉进行的。探索性测试的核心是依据测试的实际情况,即时设计测试用例并在软件程序上进行验证,测试结束后将测试的结果整理形成“软件测试报告”。

1.2.2探索性测试常用方法

探索性测试是对传统测试技术的补充,它的关注点更多是有目的性地验证程序是否存在某个缺陷。所以,探索性测试适用于所有的系统测试,但作为一种新兴的软件测试理论,它有着自己独特的测试方法和管理方式。一般使用如下两种方法来进行测试:

(1)结对测试法

结对测试的一般测试形式是两名测试人员共同对一套软件程序或者一台机器展开测试。它要求必须有一名测试组长来负责统筹测试全程,进行合理的测试安排。测试组长制定合理的软件测试计划,依据计划,测试成员两两组队,分工合作。在测试过程中,两位测试人员各有分工,一位进行测试操作,另一位主要负责提出建议、记录测试发现的缺陷、提出测试过程中对程序的探索性问题等。

结对测试要求测试人员都能清晰地进行交流,因为当一名测试人员将自己的探索性想法与其他测试人员进行沟通时,极有可能会触发其他测试人员的灵感,这种发散性的交流方式会碰撞出更多的思维火花,设计出更加准确、完整、符合实际测试情况的的软件测试用例,这比传统测试中要求测试人员按照固定的测试计划进行软件测试更有效率。除了以上优点,结对测试还有以下优点:

a)轻松的测试环境:轻松的测试环境将避免测试过程中测试人员产生的的枯燥和无聊情绪,明显提高软件测试效率;

b)良好的连续性:结对测试中,两位测试人员分工明确,一名软件测试人员专注于执行测试,另一名软件测试人员负责记录及文档整理,分工明确将大大增加测试的连续性,使测试具有更好的可持续性;

c)降低外界干扰:两人组成一个小的团队,其他无关人士前来打扰测试的机会将会大大降低,排除外界干扰 ,提高工作效率;

d)清晰的报告测试结果:结对测试中一人专注负责记录和整理测试结果,这将使测试报告的数据清晰完整;

e)有利于培养新的测试人员:结对测试,两两结对,有经验的测试前辈趁此机会将探索性测试中规律性的经验传授给新的测试人员,新的测试人员一边学习一边实践,帮助新人快速成长,提升测试技能。

(2)会话测试法

探索性测试的创始人James Bach提出过另一种有效的测试方法:会话测试法。这种测试方法的优点是既不影响探索性测试灵活性和探索性的特点,又能避免探索性测试人员松散不服从统一管理。目前是探索性测试所有方法中比较公认的一个有效的测试方法。

会话测试法中的会话主要包括两部分:一部分是明确的测试主题,另一部分是可以被检查的测试过程。“测试主题”指的是测试中想要发现的软件缺陷或计划完成被测试的功能。“可以被检查”是指阶段性的软件测试报告,该软件测试报告来表征会话测试期间的工作成果。

持续时间1.5小时的会话测试为最优会话测试,但这不是绝对的时间限制,一般而言小于45分钟的会话测试称之为短会话测试,大于2个小时的会话测试称之为长会话。一般情况,每天可以使用会话测试法对软件程序进行三轮测试。

会话测试中没有固定的模式对测试步骤及测试用例进行规定和限制,依据测试人员和测试主题来进行灵活选择和执行,例如测试人员可能会从某项功能开展测试,也有可能从频繁出现的缺陷打开测试入口。

1.2.3 探索性测试的优缺点

探索性测试最大的特点是具有强大的缺陷发现能力,作为一种高效率的测试方法,主要具有以下优点:

a)测试方式灵活、富有创造性和主观能动性。它比传统的测试方法更加灵活,例如探索性测试对测试文档的要求没有传统测试那么严格,但是它能够发现正常测试用例执行以外的缺陷,更有效地发现隐性缺陷,发现很多正常途径无法发现的缺陷也能够激发测试人员的创造性和主观能动性。

b)测试时间短,执行效率高。测试学习、测试设计和测试执行交叉进行,只对测试缺陷进行详细的记录,会大大缩短测试时间,为项目的整体开发节省大量时间。据统计,有经验的测试人员在使用探索性测试方法进行测试时,执行测试的时间能占到测试总时间的80%,而测试设计只占总测试的20%。

探索性测试的缺点也是显而易见的:对软件测试工作没有一个整体的规划,不利于测试的规范化、标准化;重复性测试的几率比传统测试要大很多,很难确定哪些测试已经执行过。

在测试时间短、测试资源不充足的情况下,使用探索性的测试策略展开系统测试,可以有效快速地发现软件缺陷,提高软件质量。

2 结论

软件质量是软件的生命,由于软件缺陷而造成经济损失、导致严重后果的事例屡见不鲜,软件测试作为软件质量保证的重要手段一直都是软件工程研究和应用的热点。在有限的人力物力情况下,如何展开有效的软件测试,显著提升软件质量更是每个软件研发人员的关注重点。

程序静态扫描提升源代码质量、探索性测试保证软件功能的合格性,二者有效地结合,在极短的时间内,节省开发人员精力的前提下,可以有效地達到软件测试的目的,是一种有效的测试策略。

【参考文献】

[1]张晓明,黄琳译.软件测试的艺术,机械工业出版社.

[2]朱少民编.软件测试方法和技术,清华大学出版社,2005.

[3]汪颖译.人月神话,清华大学出版社.

[4]吕灵,鲍臣礼.测试之美,机械工业出版社.

[5]“Parasoft C++test用户手册” Parasoft Corporation.

[6]朱昭俊.探索性测试方法分析,中船重工集团第七二二研究所.2012.

[责任编辑:朱丽娜]