软件测试中待改善环节的思考
来源:用户上传
作者:郑雪妮 谢梦
摘要:通过总结以往软件产品的测试经验和生产使用经验可以发现,软件测试过程虽然有着比较成熟的能力成熟度模型(CMMI),但仍然存在7类待改善的环节。针对软件测试过程中的这些待改善环节,进行了详细分析和研究,分析了这些问题产生的背景和原因,并一一提出了相应的解决思路、解决方法。
关键词:软件测试;待改善环节;解决方法
中图分类号:TP311 文献标识码:A
文章编号:1009-3044(2020)09-0053-02
1 引言
能力成熟度模型(CMMI,capability maturity model integra-tion)是美国卡内基梅隆大学软件工程研究所(SEI)组织推出的衡量软件开发管理水平的重要参考模型,反映现行软件项目开发和管理过程能力的成熟度水平,代表国际最先进的软件工程方法,是衡量软件企业项目管理水平的权威标准。CMMI标准现在已经成为对软件组织能力进行评价时使用最为广泛的模型。[1]
2 软件测试与软件产品质量
软件测试是能力成熟度模型(CMMI,capability maturitymodel integration)中验证(verfication)与确认(validation)过程域的重要表现形式,是软件生命周期模型中的重要阶段,是保障软件产品质量的重要手段。嘲近年来,随着软件规模和复杂程度的不断提高,软件测试技术也不断发展,软件测试已成为除了评审手段外软件质量保证的重要活动。[3]
软件测试和软件开发构成一个全过程的交互、协作之关系,两者自始至终一起工作,共同致力于同一个目标——按时、高质量地完成项目。V模型能够准确地反映测试活动与分析设计活动的关系,说明软件测试活动和项目同时启动,软件测试的工作很早就开始了,避免了瀑布模型所带来的误区——软件测试是在代码完成之后进行。在V模型中,左边是软件的定义和实现(包括分析、设计和编程),右边是验证(即测试),如图1所示。右边(测试的工作)是对左边工作成果的检验,以确认是否满足用户的需求。V模型從左到右描述了基本的开发过程和测试行为,非常明确地标注了测试过程存在的不同类型的测试,并且清楚的描述了这些测试阶段和开发过程期间各阶段的对应关系,即从4个层次完成软件的验证,即对需求、系统架构设计、详细的产品设计和代码的验证。[4]
然而,在软件在各个领域比重不断加深的条件下,在各个软件项目日益重视软件测试过程的同时,受认识不到位、流程有缺陷及一些测试人员未经过系统培训的影响,部分软件项目未能及时发现软件测试技术上存在的误区,影响了软件测试质量,给产品可靠性带来巨大隐患。因此,有必要根据实际工程经验,归纳和总结出软件测试过程的一些待改善环节,并提出相应的解决方法。
3 软件测试中的待改善环节
虽然作为保障软件质量最有效的软件测试经过不断发展和完善,形成了一套比较系统而又严密的体系,其中包括文档审查、代码审查、静态分析、单元测试、集成测试、软件配置项测试和系统测试,并对每个活动的具体。但软件产品在后续使用中还是会有新的软件缺陷被发现。总结以往软件产品的生产使用经验可以发现,主要是有以下几个待改善环节:
1)对软件质量不够重视
因为对软件质量不够重视以及对软件测试工作不够了解,软件产品负责人误以为测试阶段的产品经过多轮调试后已经没有什么问题了,软件测试工作应该不需要太长时间。因此在安排生产计划时,给软件测试工作安排的资源不足或者时间不够,导致测试工作进行的不够充分或者比较仓促,给软件产品的使用留下了隐患。
2)软件的需求描述不准确
作为测试过程中最重要的依据的软件需求规格说明,对软件需求描述不够详细,功能模块划分以及接口的输入输出关系不明确,或者文档中描述的功能和接口与软件中实现的不一致,导致测试人员无法准确地编写相关测试项和测试用例,难以在测试过程中发现软件系统的致命问题。
3)入库初版代码的大量规范性问题
开发人员对自己的不良编码习惯通常是没有相应的意识的,入库版本的代码有时候仍然有着各种代码规范性问题。如果后期单纯通过测试人员来发现这些问题,然后进行大量修改然后重新人库、回归测试,比较浪费人力物力,也容易在调试的过程中因为规范性问题引起严重的软件逻辑问题。
4)代码审查需对不同的环境进行配置
由于不同开发软件(Qt、WorkBench、Visual Studio、ccs等)或者相同的软件的不同版本的开发环境不同,导致使用代码审查工具Klockwork进行代码审查时需要针对各种不同的环境进行相应设置,且不同的开发环境下的设置操作会有差异,导致代码审查过程比较耗时耗力。
5)非系统崩溃性问题
由于程序设计语言本身固有的特性以及开发人员在编程时没有考虑周全,使得许多程序漏洞无法在编译、运行乃至测试阶段被发现。这些缺陷通过输入验证错误、访问验证错误、设计错误、特殊条件错误和竞争条件错误等形式,在不导致系统崩溃的情况下可以通过非法注入来篡改用户权限的形式威胁到系统安全。
6)相似测试用例重复编写问题
随着现代科技的发展,软件化、智能化已成为一种趋势,新增软件呈几何数量增长,其中很多同类型的软件是设计框架是相似的,甚至有越来越多的代码被复用。随着软件复用在软件产品开发过程中越来越成熟,相似开发框架、相似代码的测试用例的复用也成为一个新的问题。如果针对每一个软件产品都一一编写软件测试用例,这样测试人员不可避免的就需要完成许多重复性的工作,这会导致测试工作效率低下,甚至会影响测试进度。由于软件测试人员不可能对每类软件产品都能有全面的了解,所以对每个软件都一一编写的测试用例就可能会造成疏漏,为软件质量安全埋下隐患。 7)对软件陛能的认识有误
刚接触测试工作的测试人员易将周期性功能当作软件产品的性能来进行测试。软件测试如果按照测试目标来分的话,可以分为:功能测试、压力测试、性能测试、接口测试、容量测试、余量测试、安全性测试、安装性测试等。性能测试( perfor-mance testing)为测定软件系统在不同负载条件下的系统具体的性能指标。
软件性能可以分为定量计算的精确性、完成功能的时间性、完成功能的数据量以及运行所占空间量等几个方面,相应性能测试分为精确性性能测试、时间性性能测试、处理量性能测试以及空间量性能测试。精确性性能测试是针对定量结果的测试,例如:位置精度方面的、点的位置预测精度方面的以及成像分辨率等方面的性能测试。时间性性能测试是针对软件时间特性以及功能完成的实际时间的测试,例如:地图加载时间、状态转换时间、开关机时间等功能实际完成时间方面的性能测试。处理量性能测试是针对完成功能所处理的数据量的测试。空间量性能测试是针对运行占用的内存储器空间、外存储器空间的测试。
测试新人比较容易弄混的一般是周期性功能测试和时间性性能测试,周期性功能测试一般是定时发送的,多考虑多次测量的均值是否在周期的上下20%范围内,而时间性性能测试针对的一般是一个具有一定偶然性的、非定时的软件时间,需要考虑多次测量的最大值和最小值均在要求区间内。
4 待改善环节的解决方法
总结以往经验,发现了上文提到的几个待改善环节。针对这几个环节,我们可以进行相应的改善。
1)对软件质量不够重视
解决建议:在接到新的软件产品测试任务时,软件测试负责人应和软件产品的负责人进行充分沟通,使他们尽早认识到软件质量的重要性,软件测试过程对软件质量的保障作用,以及软件测试过程对时间和资源的要求。作为软件测试负责人也应及早进行测试进度的安排,并让相关的测试人员充分了解测试进度的安排。
2)软件的需求描述不准确
解决建议:软件需求规格说明文档应明确功能模块划分以及各个接口的输入输出关系,并与接口文档保持一致。且在软件开发过程中,当软件的功能或接口进行了调整的时候,相应文档中的描述应及时进行修改并重新人库,使软件需求文档上下文以及各个文档之间始终保持一致。
3)入库初版代码的大量规范性问题
解决建议:开发人员在代码入库之前,自己先通过一些代码审查工具(Testbed、Klockwork等)进行一遍代码审查,在代码开发过程的前期及早的发现代码规范性问题,以减轻软件测试阶段的代码修改量,也保证了代码的规范性和可读性,防止因代码编写不规范导致的误解(比如if判断语句没有else分支,可能会导致对判断条件的考虑不周全),在开发过程中造成错误。
4)代码审查需对不同的环境进行配置
解决建议:建立统一、正规的开发环境集,软件开发人员的开发环境必须包含在开发环境集里。既解决了Qt、Work-Bench、Visual Studio、ccs等開发环境的版本众多导致的代码审查工具设置繁杂的问题,提高了软件静态测试工作的效率,也在一定程度上防止了因开发环境导致的代码适用性的问题。
5)非系统崩溃性问题
解决建议:非系统崩溃性问题兼具隐蔽性和破坏软件正常运行的危险性,因此为了软件产品的质量可靠性。建议针对这类非系统崩溃性问题需要对软件测试人员进行专题培训,使软件测试人员积累相关的知识和经验,能够在人工代码审查阶段就及时的发现相关问题。
6)相似测试用例重复编写问题
解决建议:对任何一个软件测试组织来说,随着已测试过的软件测试项目的增加,会积累大量有用的测试用例,这些测试用例如果得到很好的管理,在对很多相似的软件产品进行测试时都是可以重复利用的。[5]只要待测试的软件产品之间存在着相似性,在它们之间实现测试用例复用就是可能的,还有一些软件产品有着相同的显示界面,这也导致它们之间的一些测试用例是可以被复用的。建议建立统一的测试用例复用平台对可复用用例进行管理,并设置专门的平台管理员对平台进行管理,新的用例纳入平台前需对可复用用例进行专家评审,经过专家评审后再加入平台中供测试人员复用。
7)对软件性能的认识有误
解决建议:对测试人员多进行相关的易混淆的测试概念的培训,并举一些生动的有辨析度的测试用例来进行详细讲解,使得测试人员能够在测试工作开展前对测试概念建立起清晰、正确的理解。也建议建立完善的测试用例复用平台和测试用例复用机制,使得刚接触软件测试工作的测试人员能够从用例平台的比较完善用例中学习到正确测试用例的编写方法。
5 总结
本文根据实际工程经验详细描述了软件测试待改善环节在实践过程中的具体表现形式、原因分析及解决方法。不仅可以为开发人员在编程时避免引入软件问题提供参考,也可以为测试人员开展测试工作提供借鉴,对于提高软件产品的质量具有积极的意义。
参考文献:
[1]万江平,孔学东,杨建梅,集成能力成熟度模型(CMMD的研究[Jl.计算机应用研究,2001,18(10):10-13.
[2]张万军,储善忠.基于CMMl的软件工程教程[M].北京:北京交通大学出版社,2008.
[3]冯济舟.对软件测试技术常见误区的一些思考[Jl.船舶标准化与质量,2016(4):45-47.
[4]朱少民.软件测试方法和技术[M].北京:清华大学出版社,2010.
[5]刘旭.基于缺陷分类算法的测试用例复用实现[D].大连:大连理工大学,2016.
【通联编辑:代影】
转载注明来源:https://www.xzbu.com/8/view-15209588.htm