浅谈如何提升内部测试对软件质量的控制力
2020-05-19费雯靖
费雯靖
摘 要 随着软件在产品中占比的逐渐增大,软件质量对产品质量的影响也日益加剧,如何提升软件产品质量已经成为从事软件的人员关注的重点和难点。软件测试作为软件研发过程的重要环节及保障软件质量的主要手段之一,已逐渐成为产品相关利益方衡量产品质量的重要手段之一。本文通过对内部测试和三方测试进行分析比较,分析了两者的相同点和不同点,总结了内部测试对软件质量提升方面的局限性,从局限出发,提出了几点建议,能有效提升内部测试对软件质量的控制力,从而确保通过内部测试手段,有效保障软件质量得到切实提高。
关键词 内部测试;软件质量;局限性;控制力
引言
随着社会信息化程度的快速加深,软件在项目占比日益增重,用户对软件质量提出的要求也将越来越高。
软件测试作为产品项目(含软件)交付用户前的重要环节,也是保证软件质量的主要手段之一。目前国内许多大中型软件企业,尤其是军工企业已经认识到软件质量的重要性,建立了企业质量保证体系以及内部测试队伍。但在项目面临时间压力、必须加快研制速度的情况下,测试往往会成为换取项目进度的牺牲品。为了进一步满足软件产业的发展需求,专业的第三方软件测评机构应运而生。内部测试和第三方测试都能一定程度地提升软件质量,但因其自身特点,又都存在一定的局限性。而就目前雷达行业而言,内部测试对软件产品质量提升的控制力上弱于第三方测试。如何提升内部测试对软件产品质量的控制成为从事内部测试人员关注的重难点问题。
1内部测试和三方测试的比较
内部测试是由软件开发方自我组织的,由机构内部人员进行的软件测试。第三方测试是有别于开发人员或用户进行的测试,是为保证测试的客观性,由与开发方独立的第三方承担的测试,由专业且有资质的第三方机构承担。
目前雷达行业内部测试和三方测试的类型都包含文档审查、静态分析、代码审查、动态测试等。
1.1 测试过程
内部测试和三方测试的过程都是在接收到测试任务后,进行文档审查、测试需求分析与测试策划、测试设计与实现、测试执行、测试总结。测试工作流程如图1所示。
内部测试和三方测试在测试过程上的区别:
(1)接收测试任务:三方测试对测试任务的接收是双方完成测试合同、委托书或其他等效文件(以下统一称为测试合同)的签订;而内部测试可能仅是在机构内部发布项目任命,一般不签订测试合同;
(2)测试需求分析与策划工作产品:目前雷达行业内三方测试在此阶段形成的工作产品是测试大纲文档,而内部测试的工作产品是测试计划文档,两者在形式上存在细小差别。
1.2 测试进入时机
为满足GJB5000的工程化管理要求,软件开发过程一般满足V字形开发流程。在开发人员进行需求分析和产品功能设计时,测试人员就可以阅读、审查需求分析的产品,获取用户需求及产品的设计特性,确定测试目标,启动测试需求分析与测试策划活动;在系统、结构设计和详细程序设计阶段,测试人员可以了解系统设计实现方式及具体设计实现平台,在此基础上可以明确测试环境、完善测试计划,并启动测试设计与实现活动;在编码阶段,可以开展单元测试,确保尽早找出程序中的错误。由此可见,内部测试在项目早期就已经进入,对项目的介入程度较深。
而相对的,用户在委托第三方測试时,主要是在软件开发的系统集成和验收两个阶段[1],通过测试发现软件功能、效率、信息安全等存在的问题,协助系统完成验收工作,因此第三方测试一般是在项目后期才开始介入,没有涉及项目的整个生命周期。
1.3 对测试控制力
因内部测试是由开发方自我组织的,测试人员和开发人员隶属同一机构,没有合同及经济约束关系,测试方对项目的控制力基本依赖于机构的软件工程化管理水平。这导致在项目紧、任务重的情况下,测试方要求的测试输入受控、测试环境独立、测试时间充分等,都会因为其他各项因素做出或多或少的让步。且因测试介入较早,测试产品可能会因需求的完善、修改等出现多次变更,变更量甚至超过50%。
第三方测试以合同的形式制约了测试方,使得它与开发方存在某种“对立”关系,所以它不会刻意维护开发方的利益[2],也不会为了保障项目进度而对测试环境、测试时间、测试输入项的受控等做出刻意的让步。测试合同中关于权利与义务的明确规定也能约束双方按时提交被测项或测试工作产品。另外,得益于介入的时间较晚,需求已基本明确,测试输入是较稳定、固定的版本,这避免了因需求的频繁变更而带来的测试工作的大量返工。
1.4 外界认可程度
就目前军工雷达行业,在产品交付给用户后,针对使用中发现的软件问题,在进行责任划分时,内部测试承担的责任较前几年越来越多,但相对三方测试人员、开发方而言还是较少,相对应的内部测试结果的受外界认可及重视程度也不及第三方测试。
2内部测试对软件质量提升具有局限性的原因
通过对内部测试和第三方测试比较分析,内部测试对软件质量提升具有局限性的原因主要包含以下几方面。
2.1 专业的内部测试人员不足
软件作为信息技术的灵魂,已经渗透到各个领域,软件行业在未来很长一段时间将继续保持较快的发展速度。而随着软件的发展,愈发显得专业软件测试人才需求缺口巨大。当前国内软件测试和开发人员比例大约在1∶4~1∶5之间,而国外测试和开发人员比例为1∶1甚至更高[3]。在开发人员和测试人员同属一个机构时,机构为满足生产需求,很容易就会形成重开发、轻测试的软件态度,在从事软件行业人员不足的情况下,从事软件测试的人员数量就更加难以满足需求,这直接导致专职的内部测试人员数量难以满足业务发展需求。人员数量不足时,人员往往也会仓促上岗,上岗前不能得到充分有效的培训,从而导致没有充足的过渡时间使测试人员成长,机构也将缺少具备过硬专业技术能力、良好沟通协调能力等专业内部软件测试人员。