软件测试方法常见误区的思考
2016-12-28冯济舟
冯济舟
(孔径阵列与空间探测安徽省重点实验室,合肥,230088)
交流园地
软件测试方法常见误区的思考
冯济舟
(孔径阵列与空间探测安徽省重点实验室,合肥,230088)
文摘:根据实际项目经验,分析软件测试技术中存在的误区,从测试原则、硬件指标、嵌入系统、软硬件应用以及测评等方面归纳和总结出解决方法。
软件测试;测试性能;质量保证。
随着软件规模和复杂度不断提高,作为保障软件质量的重要活动——软件测试技术也不断发展,软件测试已成为除了评审手段外软件质量保证的重要活动[1-2],对软件测试技术的要求更加苛刻。软件测试是能力成熟度模型集成(CMMI,CapabilityMaturityModelIntegration)中验证(Ver,Verification)与确认(Val,Validation)过程域的重要表现形式,是保障软件可靠性的重要手段。如今各个软件项目重视软件测试过程,在增加软件测试人力资源的同时,受测试门槛认知程度及测试人员系统培训不到位的影响,未能及时发现软件测试技术上存在的误区,导致影响软件测试质量下降,给产品可靠性带来巨大隐患的现象时有发生。笔者根据工作实践对软件测试方法常见的误区,提出了解决方法,以增强测试人员对软件测试技术的正确认识,保证软件测试顺利而有效地进行。
1 测试有效性原则误解
对于什么样的测试才算是有效的测试认识不清,是只要发现问题,不需要可复现的测试就是有效性测试?还是用最少步骤、最直接方法发现的问题才是有效性测试?
测试的目的是发现问题,然后是解决问题,因此对测试有效性原则的讨论可以软件开发人员如何查找问题和解决问题为出发点。如果只发现问题而不能复现的测试,会导致无法定位,也就无法对问题进行修正,这种测试方法是无效的测试。如果使用最少步骤发现问题,虽然可以帮助开发人员将问题定位到具体代码位置并进行修改,然而在实际测试过程中由于代码间的强耦合性以及系统的逻辑关系比较复杂,测试执行的步骤很难达到最少、最直接的要求,造成定位的模糊,而且此种方法的测试往往也会耗费大量的时间和精力。有没有什么有效的方法可以快速、准确地解决定位问题呢?
在开发环境中存在调试模式工具,利用开发环境调试程序方法,使用单步运行程序和断点,观察运行环境的变化,从而达到对所开发源程序运行过程的跟踪和监控。只要保证被测问题是可复现的,那么无论测试步骤多么繁琐,只要在此种模式下就可以跟踪出异常问题的代码行数以及定位软件源代码问题所在。
2 软件性能测试中缺乏对硬件指标的考虑
软件性能测试,即根据需求描述中对软件的性能要求,在不核对被测软件实际硬件环境与需求描述中的硬件需求指标要求的情况下进行测试。
在编写软件需求文档时,开发人员往往把重心放在描述软件的需求能力上,忽视了软件对于硬件资源的需求;而测试人员常常把重心放在对功能、性能的验证上,忽略了被测软件所运行的实际硬件平台与需求描述中对于硬件需求指标要求的核对。在此种情况下,对软件所做的性能测试无法达到对软件性能指标验证的效果,因此所做的软件性能测试无效。
同一个软件的同一功能的处理性能在高配置硬件条件、实时操作系统下的运行效果与低配置硬件条件、分时操作系统下的运行效果肯定是截然不同的。高配置实时操作系统的处理效率一定会比低配置分时操作系统的处理效率高,脱离硬件资源需求的软件性能测试是没有意义的。
要做好软件的性能测试,首先,开发人员重视需求描述中对于硬件资源要求的描述;其次,测试人员在软件测试前核对实际硬件平台与需求描述中所需要的硬件指标要求的一致性,在已有或可能出现的最低硬件配置条件下验证软件性能指标的实现情况。
3 嵌入式系统测试依赖硬件资源
嵌入式系统的运行、调试和测试必须依赖于嵌入式硬件资源,而嵌入式硬件资源的使用冲突,将导致项目进度延误。出现嵌入式系统硬件资源使用冲突的主要原因如下。
嵌入式系统一般是某个大系统的一个软件配置项。按照规定,嵌入式系统软件开发完毕后入受控库,软件测试人员根据入库版本进行嵌入式软件配置项测试,此时入库的代码是在大系统联调之前,而大系统各配置项的功能都是在大系统联调之后才能最终确定,在此期间会反复进行需求变更、功能完善、协议修改和指标调整,然而这些联试的结果都依靠实装环境来验证。因此,研发人员不可能将仅有的嵌入式硬件设备在测试阶段就给测试人员使用。
在这种情况下,可以规定大系统联调完成后再进行嵌入式软件配置项测试,这样可以只使用一套嵌入式硬件设备完成测试。然而,在完成软件配置项测试后又要进行系统测试,导致整个测试阶段占用时间较长,如果对研发进度要求较高,往往会造成项目进度延误。项目组可以为嵌入式系统提供两套硬件设备,这样在软件入库之后即可同时开展配置项的联调和测试。这种情况虽然解决了项目进度问题,但也造成了硬件资源的浪费,严重消耗了项目的成本。
解决上述问题主要分两步走。①可以引入虚拟技术,采用虚拟技术与真实环境相结合的方式来完成嵌入式系统软件测试。在软件入库之后,即可使用软件虚拟技术替代硬件环境的方法,使被测软件在虚拟软件平台下完成嵌入式系统软件的功能测试。②在系统联调完成之后,借助真实环境,再完成嵌入式系统的性能和适应性测试。这样将大部分嵌入式软件测试工作在虚拟化平台下完成,既不影响软件研发对硬件资源的需求,也给嵌入式系统软件测试提供了充足的时间和资源,并通过在后期实装环境中验证仅存少量的软件性能和适应性测试,充分保证嵌入式系统的可靠性。
4 国产化硬件、软件产品在应用时的问题判别
随着国产化自主平台品牌的不断壮大,很多以前由国外垄断、把持的硬件平台和操作系统被国产技术突破,均拥有了国产化的替代产品。原先运行在国外硬件平台和操作系统的应用产品,现在实现了在国产化硬件平台上和国产化操作系统上运行。但是,在国产硬件平台和操作系统上运行的应用软件系统出现的问题,到底是国产化操作系统的问题?还是国产化硬件平台的问题?还是应用软件的问题呢?如何区分和判别呢?
考虑应用软件的兼容性原则,使用目前行业中知名的、并被普遍认可的操作系统和硬件平台作为评判标准,通过将应用软件在公认操作系统和硬件平台上运行实验的对比测试,来定位问题所在。采用此种方式排查问题,不仅提高了所开发应用系统的通用性和可移植性,也便于硬件平台、操作系统的升级和维护,更符合人们的正常思维认识,易于理解和接受。
5 第三方测评和定型测评的区别
在介绍第三方测评和定型测评之前,首先引入两个概念:验证和确认。“验证”是指确保所选择的工作产品满足指定的需求;“确认”是指证实产品或产品部件被置于其预定环境中时,可以满足预期的使用需求。
“第三方测评”属于“验证”方式的一种,一般在项目内部测试之后,由具有第三方测评资质的单位对项目的软件工作产品进行独立性的测试,其过程和验证的工作产品与内部测试类似,不验证各阶段的管理工作。介入时机在项目结束之前,与内部测试介入时机相似。
“定型测评”属于“确认”方式的一种,一般在项目的所有工作完成后,代表客户对软件生命周期模型中所产生的各阶段管理工作内容、软件工作产品进行的独立性验收测试。其确认的软件工作产品不仅包括整个软件生命周期模型中各阶段管理工作记录,而且还包括开发、测试所有过程产生的软件工作产品的确认。介入时机在项目结束之后,客户验收之前。
本文根据实际工程经验详细总结和描述了软件测试技术中常见误区,希望能提高软件测试人员对软件测试技术的正确认识,排除软件测试人员在实践中的障碍,提高测试效率、提升软件质量具有积极意义。
[1]万江平,孔学东,杨建梅.集成能力成熟度模型(CMMI)的研究[J].计算机应用研究,2001(10).
[2]李兴兵,李孟军,谭跃进.军用CMMI模型的建立初探[J].兵工自动化,2003(06).
冯济舟(1984年—),男,硕士,工程师,现从事软件工程化和软件测试工作。