
1.2 软件测试的现状及前景
1.软件测试日益受到业界的关注和重视
目前,随着我国信息化的不断深入和发展,作为信息产业核心的软件产业取得飞速发展,软件或包含软件产品的应用逐渐渗透到人们的日常生活和出行的方方面面,并进而上升到国家安全方面,与国家战略安全也息息相关。因此,软件产品和信息系统的质量也越来越为人们所关注,相应地,软件测试作为保障软件产品和信息系统质量的重要手段,也日益受到人们的重视。
如前所述,自2000年以后,我国与信息化相关的各行业主管部门为提升本行业软件产品的质量,促进行业软件的规范和有序化发展,积极、广泛地推进了软件测试工作,先后颁布了一系列与软件测试相关的行业性规范和要求。在此引导下,我国各软件研发企业也逐渐加强了企业内部软件测试团队建设,参考国际、国内相关标准,如CMMI、GJB 5000A—2008《军用软件研制能力成熟度模型》等质量管理体系要求,加强软件研发过程的软件验证和确认测试工作,有效提升了软件测试在软件研发中的地位。
与此同时,第三方软件测试在我国也取得了长足的发展,无论在民用软件检测领域,还是在军用软件检测领域,第三方软件测试机构的数量都在急剧增加,测试人员队伍和测试能力都有了较大提升。为规范我国第三方测试机构的发展,中国合格评定国家认可委员会及有关行业主管机关顺应时代潮流,紧跟国际标准的发展,不断跟进第三方测试实验室的建设、发展要求,及时颁布和更新关于第三方测试实验室的基本要求与测试执行要求,包括GB/T 27025—2019《检测和校准实验室能力的通用要求》、GJB 2725A—2001《测试实验室和校准实验室通用要求》、《军用软件测评实验室测评过程和技术能力要求》等。
可以说,当前软件测试在我国已经进入一个高速发展时期,从软件企业、用户单位到相关管理机构,均认识到软件测试的重要性,加强了对软件测试的管理。
2.软件测试的流程和方法逐步规范
早期的软件测试被很多人等同于调试,基本上都是开发人员自己测试自己的程序。随着软件工程的不断发展,软件测试作为一个独立的专业过程被提取出来,同时,关于软件测试的模型和方法研究逐渐完善,软件测试的流程和方法逐步规范。
目前,在软件研发、系统集成企业内部的质量管理体系中,软件测试也基本是作为一个单独的质量保障环节存在的,有独立的流程和要求。在CMMI、GJB 5000B—2021《军用软件能力成熟度模型》等国际和国家标准中,也把软件验证、软件确认作为单独的关键过程域进行阐述和要求,以此为基准,各软件研发企业逐步建立了企业内部的测试流程和规范。
对于第三方软件测试机构,国家也通过一些标准和规范的引导明确了开展软件测试的一般要求,包括软件测试流程和质量评估方法等。例如,在民用软件测试领域,各软件测试实验室基本会参考GB/T 27025—2019《检测和校准实验室能力的通用要求》、GB/T 25000.51—2016《系统与软件工程 系统与软件质量要求和评价(SQuaRE) 第51部分:就绪可用软件产品(RUSP)的质量要求和测试细则》等标准建立自己的测试管理体系和流程。在军用软件测试领域,原中国人民解放军总装备部颁布了GJB 2725A—2001《测试实验室和校准实验室通用要求》,作为软件测试实验室建设的基本依据,同时,《军用软件测评实验室测评过程和技术能力要求》更是将软件测试明确划分为5个阶段,即测试需求分析阶段、测试策划阶段、测试设计和实现阶段、测试执行阶段、测试总结阶段。
同时,在很多行业,各主管机关也进一步明确了行业软件测试的流程和方法,甚至包括测试的轮次要求等。应该说,目前关于软件测试的整体流程和方法已经日趋规范,制约软件测试质量的关键在于严格实施,以及强化测试过程监督,确保测试按要求执行。
3.软件测试内容和范围日趋深化
软件测试在国外的发展时间比较长,国外的软件研发企业也一直比较重视软件测试对软件质量的提升作用。而我国由于各种原因的限制,软件测试在过去并不为人们所认可和接受。近几年,随着软件质量愈发受到重视,人们开始加大对软件测试的投入和关注,软件测试的内容和范围日趋深化。
在测试内容方面,之前我国大部分软件研发企业更偏重于软件黑盒测试,即以软件功能测试为主。之后,随着软件应用范围越来越广,使用软件的用户越来越多,多用户、高并发条件下的软件性能问题日趋突出,针对软件的性能测试终于被提上日程并迅速推广。目前,软件应用范围更加广泛,软件在关键领域的应用越来越多,软件产品存储的各类信息越来越复杂,信息被窃取、软件被攻击的可能性逐渐增加,人们对软件的安全性要求越来越高,因此,软件安全性测试已经成为软件测试的重点内容。
而随着武器装备的信息化,软件成为武器装备的重要组成部分,随着以信息技术为核心的高新技术的迅猛发展,军用软件在装备建设中的地位日益重要,武器装备体系中软件的含量与水平已经成为信息化程度的主要标志。因此,为了最大限度地保证武器装备的质量,必须对武器装备软件的质量进行深度分析和测试,确保测试的充分性。这就必然会引入代码测试,对军用软件的逻辑实现进行更加全面的检测和评估。代码测试因此也成为军用软件测试必不可少的一项测试内容。
另外,随着各种新兴技术的不断发展和应用,基于云计算、物联网、移动终端、大数据、人工智能的软件产品越来越多,针对这些新技术和新应用的软件测试内容也在逐步研究之中,进一步推动着软件测试内容和范围的不断深化。
4.对软件测试工程师的能力和水平要求逐步提高
随着软件测试内容和范围的不断拓展,对软件测试工程师的能力和水平要求也在逐步提高。首先,软件测试工程师面临着从黑盒测试技术向白盒测试技术的转变,要求软件测试工程师应具有更好的软件编程能力,或者很好的编程基础,可以更快读懂被测软件代码,更熟练地编写测试脚本。
另外,随着安全性测试的不断推进,也要求软件测试工程师必须掌握针对软件安全性的专门测试工具,必要时,应具备一些安全攻击实施能力,可以最大限度地评估被测软件的安全防护能力等。
同时,随着云计算、物联网、移动终端、FPGA、大数据、人工智能等新兴技术的发展,针对这些领域的测试已经越来越成为软件测试工程师面临的挑战。特别是随着集成电路的不断发展,基于FPGA的应用越来越多,FPGA在系统中担负的责任越来越重要,其研发质量对整个系统质量的影响越来越大,越来越不可忽视。基于此,在继续深入开展嵌入式软件、非嵌入式软件测试的基础上,相关企业和部门纷纷提高了对 FPGA 产品的测试要求。以上这些因素使得软件测试工程师必须实现更全面的技术和更专业的服务能力。
5.软件测试已贯穿软件研发的全生命周期
综合分析软件生命周期中的策略,可以发现在软件研发的全过程中,都有可能产生错误,因此,必须强化对软件研发全生命周期的测试工作,这已经成为业内的共识。
将软件测试工作延伸到软件研发的全生命周期的目的就是更早地发现问题,延伸后的软件测试被认为是软件测试的广义概念。
软件研发的全生命周期中,在需求分析阶段,测试人员将参与软件需求的审核,确认需求具有可测试性,并在一定程度上论证需求是否可以满足用户的要求,从而降低需求风险;在设计阶段,测试人员可以充分了解系统的运行过程,有利于安排测试计划,进行详细的测试用例设计,同时对设计文档进行审查,提出改进建议等;在编码阶段,测试人员可以及时开展针对软件代码的白盒测试工作,尽早发现软件逻辑实现错误,减少损失;在测试阶段,可以对已经开发的软件模块和产品进行集成测试、确认测试和系统测试等,测试内容包括软件功能测试、性能测试、兼容性测试等,确保软件投入使用后可以满足用户的实际使用要求。
软件测试若与软件生命周期结合,则可以有效地保证测试的目标和覆盖率,当然,这也需要整个开发团队和测试团队的全力配合和协作,只有这样,才能完成相关的工作。
6.软件测试将呈现更加专业化的发展
合格的测试人员是测试团队的重要资源和核心竞争力,没有一个稳定的、富有战斗力的测试团队,测试工作很难发挥出提高应用软件交付质量的作用。
目前,信息化已经融入国家发展的各个层面,各行各业都在大力推进本行业业务处理的信息化。而显然,每个行业的业务处理逻辑和要求是不一样的,这就对软件测试工作和软件测试人员提出了更高的要求。传统的通用软件测试工作出现分化,逐渐向更加专业化的方向发展。
例如,对金融系统的测试来说,软件测试是一门融合测试专业和金融专业的复合型学科,需要参与者拥有复合知识背景,同时需要计算机技术和金融业务人员在测试领域充分融合,只有这样,测试人员才能真正对业务系统是否符合金融业务的需要做出合理判断。
同理,对军用软件测试来说,每个软件所属的武器装备都有着自己明确的战技指标,作为测试人员,必须拥有相应的专业知识,同时,测试机构或厂所必须可以构建足够模拟或仿真未来战场的各种海空情、电磁条件等,只有基于这种复杂条件下的软件测试工作才能保证军用软件的实战质量,这也是确保武器装备软件能够真正投入使用的前提。
因此,在软件测试日益发展的今天,培养专业化的软件测试人才,积累专业化的软件测试能力已经成为软件测试机构、软件研发企业的必然选择。在推动基础通用软件测试能力持续发展的基础上,不断扩展专业测试能力,补充专业测试设备,培养软件测试领域与各业务专业领域的专业知识相结合的复合型人才已逐渐成为一种趋势。