【直播回顾】深度分享 | 李文鹏《软件测试工具国家标准解读》
发表日期:2022-06-22被浏览: 1642次返回
编者按:
2022年协会推出“软件测试工具系列沙龙” 系列直播活动。该系列直播将邀请行业标准制定者、软件质量保障专家以及测试测试工具厂商代表。系列活动中,我们与听众共同探讨工具如何对质量保障的支持;质量保障的理念及技术的发展变迁是如何促进工具的发展;我们也将从工具标准角度讨论如何使用工具能力标准来对工具进行评估,能力评估标准对工具发展的意义;分享各类工具在实际场景应用重的良好实践,为我们的听众带来各方面工具相关的价值。
首期直播很荣幸地邀请到了全国信息技术标准化委员会软件与系统工程分委会李文鹏老师为大家带来软件测试工具国家标准解读。本期宣讲围绕“标准化概述”、“软件测试相关标准”以及“测试工具能力国家标准解读”等三个方面进行分享。
以下是李文鹏老师演讲的文字版内容
嘉宾按:
大家晚上好,非常感谢大家能抽出晚上宝贵的休息时间来听此次有关于软件测试工具国家标准的一个解读。
我是来自中国电子技术标准化研究院的李文鹏,首先给大家介绍一下全国信标委软件与系统工程分委会。
全国信标委软件与系统工程分委会介绍
全国信息技术标准化技术委员会软件与系统工程分技术委员会(TC28/SC7)是在工信部的指导下,经国家标准化管理委员会批准成立的软件与系统领域国家标准化技术组织,国际上对口ISO/IEC JTC1/SC7,也是国际组织中负责软件与系统工程标准制定的组织。中国电子技术标准化研究院为分委会秘书处挂靠单位。
目前分委会的主任委员是何积丰院士,现行的有效标准共包含126项,其中基础类标准主要是关于术语和整个软件工程体系的一些标准,目前这里有两项标准。
图中的第二类标准是软件质量与测试相关的标准,这个标准大家从数量上可以看到是一个大头,目前共包含63项国家标准。
第三类是软件生存周期管理的标准,包含了软件、系统相关的一个生存周期过程以及各过程的应用指南标准。
第四类是跟此次分享主题密切相关的工具和方法标准,目前包含16项标准。
第五类是软件文档化标准,共有10项标准,主要是解决我们在软件开发过程中各种文档应该怎么写。
第六类是IT资产管理的标准,共包含三项标准
第七类是软件绩效和成本度量的标准,目前现行有效的一共包含8项标准。
目前软工分委会的组织架构分了6个工作组。
第一是软件质量工程工作组,负责软件质量、测试、评估、评价等方面的标准应用和推广。
第二个是软件能力开发标准工作组,这一块主要是负责生存周期过程、技术过程评估等方面的标准应用和推广。现在正在制定中的国内版 CSMM 标准,就是在软件能力开发标准工作组里。
第三个是软件工程工具标准工作组,主要是负责软件需求、设计、开发、测试等软件辅助工具的相关的标准研制以及应用推广的一个工作。这次的软件测试工具能力国家标准就是属于软件工程工具标准工作组的。
第四个是软件价值评估标准工作组,第五个是软件人才培养标准工作组。
第六个是软件工程新技术标准研究组,主要是跟随软件与系统工程领域一些新技术的研发,目前立项的标准包括DevOps、产品线工程、基于模型的开发以及基于模型的系统工程等软件与系统工程领域的一些新兴的标准和技术的一些工作。
本次的演讲内容主要分为三个部分,第一个是标准化概述,主要是为大家介绍一下关于标准和标准化的一些基本的概念。
第二个主要内容是软件测试的一些相关的标准,因为标准之间是相关性很强的,所以先把相关的标准给大家先做一个科普,再开展第三部分软件测试工具能力国家标准的解读的工作。
一、标准化概述
从这个图中可以看到,技术都会涉及到一个发展的路线,首先随着技术的发展总会有一些新的技术诞生。这些新的技术在发展的过程中,特别是发展的初期可能会出现很多的方案。
当技术发展到一定的时期,各种技术方案发展基本成熟,这时候就需要通过标准化的手段来对目前已有的方案进行一个简化、选择和固化,同时开展标准的编制工作。在标准完成了制定之后,进入到标准的下一个阶段:标准的实施和传播,也就是平时常说的标准的宣贯和使用的工作。
标准介绍
首先标准是通过标准化活动,按照规定的程序经协商一致制定,为各种活动或其结果提供规则、指南或特性,供共同使用和重复使用的一种文件。这个是国标中对于标准的定义。
简而言之,标准首先是匹配了问题的一个解决方案,比如:在日常生活中常用插头和插座的匹配的问题,这就是由相关的国家标准来约束的。
由于我们信息技术领域很多术语和描述都来源于国外,这种情况下,我们也会通过术语标准来对我们国内的表述进行统一,规范大家对同一概念的理解,这也解决了沟通上的问题。
第二,标准规定了标准化对象应该满足的要求,比如:常用的编程语言规范,只有依据编程语言规范去书写代码,满足编程语言规范的要求之后,代码才能正常地编译和运行。
第三,标准是规则,规则是一个上位概念。现在我们国家有一些强制性的标准,作为技术法规存在的。举个例子,拿一瓶牛奶上面可以看见生产执行的一般都是国标,它是一个强标,是GB两个单词开头的标准。在信息技术领域除了编码的标准之外,其他的都是自愿性标准。对于企业来说它是自愿性采用的,这跟强制标准作为技术法规,是相区别的。
最后,标准其实是无处不在的,可能大家觉得标准离自己很远,实际上标准包含的范围很大,比如:常以文件形式呈现的,国际标准、国家标准、协会标准以及企业标准。另外还有一些以文件形式存在的,可能没有标准那么正规,比如:在生产过程中可能会涉及到的产品规范、工艺工程、操作规范、检测规范、还有一些仓储规范。
另外一种,如果是工厂,可能还会使用大量的图形符号标准,这都是可以作为广义的标准而存在。说到标准的层级,如PPT最左边的这张图所示,标准从层级可以分为国际标准到国家标准,再到行业标准,再到团体标准,到企业标准,甚至到平常制定的一些规范。他们的技术要求也是不断提高的过程,同时内容是不断细化的。
一般来说国家标准和国际标准是一个最低的要求,它的要求是属于最低的层面。这样也决定了,对于同一个标准化对象而言,行业标准、企业标准、团标,都必须满足上层标准的一些规定和要求。
另外就是国际标准和国家标准,为了保证技术的通用性,通常会在内容覆盖面的全和广上下功夫。在用国际标准和国家标准的时候,可能会造成一个困惑,感觉标准规定的东西太多了,觉得要求太高。其实这些要求作为推荐性标准来讲,这些要求和内容都可以进行一个裁剪。
国际标准和国家标准定义,它通常是适用于正式标准化组织定义的内容。所以它的描述还有定义可能读起来会有些拗口,这一点在讨论企业标准和联盟标准的时候,可能会针对这些描述定义做一定的改写,更好理解。以上是关于标准的一个介绍。
标准化介绍
标准化:标准文件给的定义是,为了在一定范围内获得最佳秩序,对现实问题或潜在问题制定共同使用和重复使用的条款的活动。简而言之,就是标准化其实就是标准的制定,传播和实施的全过程。
首先标准化的目的,是目标最后是达到标准化对象,它是受控的、有序的、统一的;其次标准化的主体是人或者机构,本质上标准是人制定的,也是人实施的,机构发挥着制定标准或者实施标准的组织保障作用。标准化对象可以是一个具体的或者抽象的事物,比如说咱们这个标准的标准化对象就是软件测试工具,同时它也可以是多种事物的一个组合,比如这个标准也是这个软件测试工具能力的一个组合。
标准化的作用,主要是对创新的方案进行选择和简化的过程,在这个过程中,标准化的实施主体-人,会通过有意识的简化阻止客观世界,就是标准化对象向复杂化和无序化过渡发展,通过标准达到简化和复杂化之间的平衡,这也是常说的最佳实践的含义。标准它就是规定标准化对象的最佳实践,同时标准化还为规模化的生产建立了一个协调的机制。
二、软件测试相关标准
软件测试相关的标准也是作为软件测试工具能力,以规范性引用文件存在的。
这里给出了关于软件测试相关标准首先是测什么?这个是软件质量标准解决的问题,相关内容是在GB/T 25000,“系统与软件工程 系统与软件质量要求和评价”这个标准中定义的,也是与国际上的技术内容保持一致的。
第二个怎么测的问题,是由软件测试标准定义的。软件测试现在是20年发布了软件测试的4个部分,这部分标准跟国际上的总体技术内容保持一致,有一些技术点跟随我国国情做了修改。
第三个是本次演讲的重点-软件测试工具标准,大家都知道测试工具可以有效地提升测试的有效性和效率,也是接下来要介绍的一个主要内容。
1、软件质量标准分为软件质量管理分布、软件质量模型分部、软件测量、软件需求、软件评价和一个扩展分部,主要是基于上图中的右下角的模型图。规定在做软件测试的过程中,目标是啥?这也就是常说的软件质量8大特性,分别是功能、性能效率、兼容性、应用性、可靠性、信息安全性、维护性以及可移植性。每个特性又进一步细分成一些子特性的要求。
2、软件测试标准,目前的分为动态测试和静态测试两部分标准。动态测试所采用的技术理念是基于风险的理念。这也是在平时工作中最常用的一个测试设计方法。这个标准分为第一部分概念和定义,就是一个总体的标准,它规定了软件测试的一些术语、定义、基本方法和一些要求。
第二部分,测试过程标准,主要是为了统一测试过程及它的子过程的一些输入输出的要求。
第三个部分是软件的测试文档标准,主要是规定了各个过程中的测试文档应该包含哪些内容,怎么编写,主要是方便大家提升沟通的效率。
第四个部分是软件测试的标准,将软件测试的技术分为三个部分,分别是基于规格说明的测试,也就是常说的黑盒测试、白盒测试以及基于经验的测试三种分类,这在测试技术标准里定义。除了测试技术标准之外,还有一些具体的测试技术标准,比如:第五部分-关键字驱动测试,这个标准目前是在研中的,还有基于模型的测试,也是正在计划中的一个标准。同时还有两个国家标准是自主制定的,分别是组合测试的方法以及性能测试方法两个标准。以上都是动态测试的相关的标准。
静态测试是ISO在2017年发布了一个工作产品评审的标准,像常说的静态测试,比如:代码扫描、代代码评审,还有文档评审,这些要求都是在工作产品评审标准中定义。
上面是测试过程总体标准的一个解读,跟本标准直接相关的就是第二部分测试过程标准,为什么测试过程与标准相关,因为大家可以简单的把测试工具理解为代替人完成了测试过程的一个输入以及过程的执行,并且得到了一个输出的结果。所以它的测试工具的一些要求,会跟我这里的测试管理过程以及动态测试过程相符。
三、测试工具能力国家标准解读
接下来就开始进入今天的最主要的主题“软件测试工具能力标准的解读”。目前软件测试工具标准已经完成了编制,所有的材料已经报送给国标委,等着国标委给号发布。
这个标准主要规定了软件测试工具的能力框架,以及在这个能力框架下有关软件测试工具能力的一些具体的要求,可以用于我们软件测试项目中所使用软件测试工具的能力。
同时这个标准主要是用于软件测试工具的需方,供方、维护方以及独立评价方开展工具的研发、评估和选型的。这个标准在制定过程中除了电子标准院牵头之外,也融合了很多方的共同努力来完成整个标准的编写。比如,供方:苏州洞察云信技术有限公司、华为技术有限公司以及北京轩宇信息技术有限公司,这些都是他们在提供工具给大家用的。
第二个是测试工具的需方,比如:北京软件产品质量检测检验中心、中国电子科技集团公司第十研究所、中国航天系统科学与工程研究院、重庆软件测评中心有限公司、上海软件测评有限公司、航天二院706所、上海微小卫星工程中心等,他们都是需要工具来开展测评。
第三个是研究方,还有一些高校单位,比如:北京航空航天大学、南京大学。
最后还有监管方,中国合格评定国家认可中心,他们也是希望这个标准对他们开展能力验证的时候,对这个工具的能力进行一个评估,提供一些输入。
这个标准除了固定的三个内容之外,还给出了软件测试工具的对象模型、软件测试实体分类、软件测试对象的特性以及软件测试工具的能力;在制定国标的过程中,我们详细对附录c的内容进行了一个研讨编制和试用,这是在国际标准中新增的一个内容,也是为了方便大家使用这个标准而制定的。
首先给大家介绍一下软件测试工具能力标准的编制思路。软件测试工具能力主要来源于验证与确认标准、软件测试过程标准以及ISTQB的相关文件输入。验证与确认标准,主要是解决软件质量保障的问题。其实软件测试也是验证与确认多种手段中最主要的一个手段,因此我就需要从软件测试第二部分测试过程这个标准中提取一些测试工具的能力,放入这个标准的能力集中。
第二个标准规定的主要内容就是测试工具的一个类型,也就是这个测试工具的一个对象模型,这个标准是依据现在软件测试的过程的划分,来给软件测试工具做了一个分类,也是与现有的测试过程、软件测试相关的标准协调一致。
第三个是特性,其实就是软件测试工具需要去解决什么问题,也就是我这个测试目标所具备的一些特性,比如:究竟这个测试活动是想测软件质量的什么特性,这是用在一个什么级别的,也就是他这里所说的一个力度。这个框架的好处是,这个能力集是一个可扩展的,大家也可以根据自己的需求,然后再把能力往这个能力集里面塞。
刚才说到的对象模型,也就是软件测试工具分类的依据,它也是按照现有的软件测试的相关标准,分为动态测试过程,和代码分析过程,也就是常说的静态测试过程以及两者的一个管理过程,所对应的一个管理过程。
在这个模型的基础上给出了这个软件测试工具的一个分类。分类是依据刚才的对象模型将它分为动态测试执行、代码分析以及测试管理三个类别。动态测试执行又进一步分为动态测试执行的输入、动态测试的执行以及测试数据仓库:主要是位于高并发高可靠高并发的一个数据量服务的,还有最后一个测试环境,单次测试或者软件所需要的环节。在代码分析这一部分是分为代码分析的输入和代码分析两个过程。
在测试管理过程中,将测试工具进一步分为测试计划、测试资产,还有质量记录报告、测试完成报告、验证与确认报告以及测试状态报告6个类别,其中测试资产主要是强调复用性。
本标准定义的第三个主要的内容是测试对象所具备的一些特性,它是从三个维度来定义的。
首先是质量特性,是测试在执行测试活动的一个目标,我究竟是想测它的什么特性?力度是分为最小单元、中级单元和最大单元三个部分,最小单元主要是模块、组件、函数、子程序这些单元测试级别的一些测试。中级单元主要是作为一个配置项测试,它的测试对象是独立的。
最大单元,是常说的系统级别的测试。它对应平时所说的系统测试级别和验收测试级别。另外我们在基于风险的测试的理念下面,同时也可以考虑三方面的因素:第一个是完整性级别,也是软件的风险点到底是多少?第二个是成本,我们为此次测试活动应该计划投入多少成本?第三个是进度约束,这也是基于风险测试的理念所需要考虑的一些因素。
接下来是标准的最主要的内容:软件测试工具能力的定义。这里是将软件测试工具能力分为了三大类和33个能力项。
首先在动态测试执执行过程中,分为了动态测试执行的输入、动态测试执行、测试数据仓库以及测试环境。在代码分析这一块也是跟之前工具的分类比较类似,在分类的基础上进一步细化,提出了代码审查、代码分析器和基于代码的信息安全测试的要求。在测试管理这一块,也是在之前的工具的分类上进一步提出了测试管理、测试资产配置管理、测试管理、事件管理、缺陷管理、缺陷跟踪,以及错误跟踪的能力要求。
最后是标准的能力与特性的总述。每一项能力,是属于哪一个测试工具的分类中?可以用于哪些质量特性的测试?它适用的力度又是哪些?这里只给出了一部分的截图,因为篇幅所限。比如:常说的测试设计,测试设计能力主要是用于动态测试执行输入分类下的一个能力项,它可以用于所有质量特性,就是软件质量8性的一个测试,也适用于最小级别中级单元以及最大单元的一个全力度的测试任务的执行。
第二个是基于风险的优先级的排序,它也是属于动态测试执行的一个输入,它是可以适用于功能性、可靠性和信息安全性的测试。因为涉及到风险,通常是适用于我这个系统级别的,也就是最大单元的测试。由于时间关系就不一一赘述了。
接下来在标准的附录c中,我们在这里给出了各个能力项的技术要求,也是本次国标制定过程中的创新的工作。这里也以动态测试执行的一个输入的两个能力给大家做了一个示例。
首先是测试设计:对于它的一个技术要求,我们是按照标准中常用的术语“应宜可”的方式来进行描述的。应是指当我声明软件具备这个软件测试能力时,它必须满足这个要求,比如:如果一个测试工具,它声明有测试设计的能力,首先它应该能够导出我这个测试条件,并且根据测试计划生成测试准则和测试条件,最终记录在测试的规格说明中。
其次,作为测试设计,能基于之前的设计,导出测试的一个覆盖项,同时能根据测试设计导出一部分的测试用例,并且将各个测试用例按照它所属的类别配到各个测试集中。
还应该根据之前的一些测试条件,测试用例集能够导出一个测试规程,并且对测试用例进行排序的工作,这也是基于风险测试的理念来提出了要求。
最后可以支持我们用的测试设计技术,它究竟覆盖了多少的需求,比如:如果有一些测试设计技术可以选择,它可以在测试设计技术的基础上给我们辅助生成一些测试用例,这个是属于一个比较高阶的要求。
基于风险的优先级排序,它的一个基本要求是能够确定与软件测试相关的风险,并且需要通过软件测试来处理风险,并且对这些风险进行恰当的分类;能够识别一些风险,辅助基于风险的测试策略的一个生成,并且在这些基础上进行一个人员和工作的安排。
为了验证标准测试工具能力技术要求内容的正确性和有效性,标准编制组在完成标准的编制之后,开展了多轮的标准的实验验证工作,目前已有20余款工具参与了标准的一个符合性评估工作。比如:华为中心,还有作为测试工具厂商的上海泽众、北京轩宇、星云测试,他们都是参与了这些工具的一个测评的。
目前针对这20多款工具,给了一个大概的数量统计,可以看到占比最多的是具备三种测试能力中两类测试能力的一个工具占到了67%;第二个是只具备三种测试能力中的一类的测试工具。第三个就是三种能力都具备的一些测试工具,主要是一些平台化的工具。
在各种能力的分类上,大家可以看到目前动态测试执行是参与测试工具标准性评估占比最多的一类工具。第二类是测试管理工具;第三类是代码分析类的工具。
软件测试工具能力总结
通过标准的研制和标准符合性测评的工作,我们也可以发现一些问题。比如:测试工具,通常是包含一项或者多项能力项,性能测试工具通常会包含动态测试执行、测试、数据仓库以及测试环境相关的一些能力;代码检测类的一些工具,通常会包含代码审查和代码分析器的一个能力。
在现在的技术背景下总结了两个测试工具的发展趋势,第一个发展趋势:测试工具向着单个能力深入发展,比如:接口测试工具向着兼容更多的协议的方向去发展。代码的安全性测试工具,有一些工具是为了适配更多的标准,还有一些漏洞库,以及现在关于开源协议合规性的一些方面。
第二个发展趋势:向着多种能力平台化发展。在DevOps的技术背景下,测试工具正朝着集成化、平台化发展,比如:通常我们的接触到的测试平台,它都是整体解决方案,一般都会具备测试管理方面的能力,对于大部分测试平台而言,它同时具备动态测试执行方面的能力。
对于新增能力,我们在国际标准的基础上新增了软件接口测试能力,在标准过程中这也是比较重要的能力,特别是在现在微服务以及工业互联网这些技术的发展下,接口测试能力的发展也越来越越受到重视。
据初步统计,在第一轮和第二轮测试中,18款的测试工具中有5款涉及了接口测试工具能力;接口测试工具能力,在测试的整体解决方案占据了重要的位置,比如:航天12院的一个嵌入式测试平台、华为的一个云测平台以及泽众的自动化测试套件中,都有接口测试工具能力的反应。
测试工具能力国家标准的使用
一、标准的应用方式,可以依据标准定义的能力去选择产品。首先根据需求从33个能力项中选择需要的能力,然后再基于这些能力去选择需要的一个软件工具产品。
二、根据测试目标选择能力和方法,根据软件质量特性和测试目标的力度来选择一个能力。
三、标准也给出了一种方式,根据工具所应用的测试过程,去选择对应的能力和产品。这是一个测试管理过程的所映射的一个测试能力。下一页是从动态测试执行过程中,它的一些过程名称和活动名称给出了所映射能力的一个选项。
关于软件测试工具能力的下一步工作,测试工具能力标准落实了工信部印发的“十四五”软件和信息技术服务业发展规划。
落实相关的政策文件:
一、进一步完善软件质量的标准体系,包括:软件质量、软件测试以及工具和方法在内的技术标准,这是在国标上的完善。
二、提升软件工程化能力,推广先进的软件工程技术和方法;持续开展工具的评价工作,持续开展工具评价工作,形成国产软件测试工具供给能力目录。
三、提升软件标准化能力。首先推进标准宣贯和应用示范,同时建立标准符合性评估体系。
四、降低标准的使用门槛
首先是与现有成熟的软件管理体系相融合,给出标准的实践指南。这也是我们在跟CSTQB在商议做的工作,根据TMMi的技术要求,给出工具的选择指南。
其次是充分发挥团体标准作用,制定更详细、更具操作性的指南标准。希望在座的单位能够多多参与软件系统工程领域中国家的标准化工作,共同完善指南、完善软件质量与测试的标准体系,以及它的一些应用推广的措施。
图片右上方的二维码是软工分委会的二维码,有兴趣的可以关注一下。图片下方的二维码是关于工具标准符合性测评的公众号,大家有兴趣的也可以扫码关注,感谢各位,我的宣讲到此结束。
演讲嘉宾:
中国电子技术标准化研究院标准化工程师,就职于全国信标委软件与系统工程分委会秘书处,国际标准化组织ISO注册专家,CSTQB高级专家工作组成员。长期从事软件质量与测试、软件成本和价值评估相关的标准化和技术研究。牵头或组织制定国家、行业标准30余项,作为标准责任人和核心起草人开展软件测试、软件测试工具能力、工业软件质量等国家标准的编制工作,作为核心人员参与软考教材《软件评测师教程》(第二版)出版,有关软件质量与测试的研究成果获得国防科学技术二等奖1项。
资料获取