首页 > 国家标准(GB) > GB/T 38639-2020 系统与软件工程 软件组合测试方法
GB/T 38639-2020

基本信息

标准号: GB/T 38639-2020

中文名称:系统与软件工程 软件组合测试方法

标准类别:国家标准(GB)

标准状态:现行

出版语种:简体中文

下载格式:.zip .pdf

相关标签: 系统 软件工程 软件 组合 测试方法

标准分类号

关联标准

出版信息

相关单位信息

标准简介

GB/T 38639-2020.Systems and software engineering一Software combinatorial testing method.
1范围
GB/T 38639给出了软件组合测试输人预处理方法和组合强度设定,规定了组合测试约束条件和种子、组合测试过程要求以及组合测试输入输出表示方法。
GB/T 38639适用于软件组合测试的用例设计和充分性评估。
2术语和定义
下列术语和定义适用于本文件。
2.1
组合测试方法 combinatorial testing method
基于多参数组合进行软件测试的一-种方法。
注:在组合测试中,被测试应用被抽象为一个黑盒,它有多个输人参数,其行为受输人参数之间的组合测试影响。
2.2
组合强度 combinatorial strength
用于表示测试参数取值组合的复杂度。
2.3
参数 parameter
测试目标相关的输人参数、配置参数或环境参数。
注1:参数类型包括整型、浮点型、布尔型和字符串型。
注2:待测软件的参数可以是函数的输人参数、命令行参数、表单输入框、配置文件中的配置项。
2.4
取值范围 domain
参数取值的范围或集合。
2.5
变强度 variable strength
对不同的参数子集给出不同组合强度的要求。
注:组合测试中组合强度的一种特殊要求。通常是在默认组合强度的基础上,待测软件的某几个参数子集采用不同于默认值的组合强度。
示例:一个系统具有a、b、c、d、e五个参数,默认组合强度为2,其中a、b、c三个参数由于特殊要求需要设置3强度组合,则该系统的测试用例需同时满足a、b、c、d、e五个参数的2强度组合,以及a、b、c三个参数的3强度组合。
2.6
测试用例套 test suite
针对特定测试目标的测试用例集合。
2.7
种子 seed
组合测试中由用户定义应被测试的取值组合。

标准图片预览






标准内容

ICS35.080
中华人民共和国国家标准
GB/T38639—2020
系统与软件工程
软件组合测试方法
Systems and software engineering-Software combinatorial testing method2020-04-28发布
国家市场监督管理总局
国家标准化管理委员会
2020-11-01实施
GB/T38639—2020
2术语和定义
输入预处理
组合强度
组合测试的约束条件和种子
组合测试过程要求
组合测试输入输出表示
软件完整性级别与组合强度要求参考附录A(资料性附录)
附录B(资料性附录)
附录C(规范性附录)
参考文献
组合测试方法示例
组合测试输人输出XMLSchema
本标准按照GB/T1.1-2009给出的规则起草。GB/T38639—2020
请注意本文件的某些内容可能涉及专利。本文件的发布机构不承担识别这些专利的责任。本标准由全国信息技术标准化技术委员会(SAC/TC28)提出并归口。本标准起草单位:上海计算机软件技术开发中心、中国电子技术标准化研究院、国家应用软件产品质量监督检验中心、西宁市大数据服务管理局、广东省科技基础条件平台中心、深圳赛西信息技术有限公司、中国电子科技集团公司第五十四研究所、中国电子科技集团公司第十研究所、中国航天系统科学与工程研究院、厦门理工学院、山东道普测评技术有限公司、浙江省电子信息产品检验所、北京跟踪与通信技术研究所、南京邮电大学、中国科学院软件研究所、北方民族大学、内蒙古自治区电子信息产品质量检验院、上海第二工业大学。
本标准主要起草人:蔡立志、李文鹏、龚家瑜、张肠肠、胡芸、李军、康京山、吴克寿、王威、赵毅、吕雪、严俊、王子元、刘文红、沈颖、白万芳、孙凤丽、孙纪敏、杨隽、王凤玲、赵昌平、李晓伟、薛宝军、王磊、何永辉、韩强、黄秋霞、元兵、李丽萍、李艳1
1范围
系统与软件工程
软件组合测试方法
GB/T38639—2020
本标准给出了软件组合测试输人预处理方法和组合强度设定,规定了组合测试约束条件和种子、组合测试过程要求以及组合测试输入输出表示方法。本标准适用于软件组合测试的用例设计和充分性评估。术语和定义
下列术语和定义适用于本文件。2.1
组合测试方法
combinatorialtestingmethod
基于多参数组合进行软件测试的一种方法注:在组合测试中,被测试应用被抽象为一个黑盒,它有多个输人参数,其行为受输人参数之间的组合测试影响。K
KaeeiK
combinatorialstrength
组合强度
用于表示测试参数取值组合的复杂度。参数
parameter
测试目标相关的输入参数、配置参数或环境参数。注1:参数类型包括整型、浮点型、布尔型和字符申型。注2:待测软件的参数可以是函数的输人参数、命令行参数、表单输入框、配置文件中的配置项。取值范围
domain
参数取值的范围或集合。
变强度
variable strength
对不同的参数子集给出不同组合强度的要求注:组合测试中组合强度的一种特殊要求。通常是在默认组合强度的基础上,待测软件的某儿个参数子集采用不同于默认值的组合强度。
示例:一个系统具有a.b.c.d、e五个参数,默认组合强度为2.其中a、b.c三个参数由于特殊要求需要设置3强度组合,则该系统的测试用例需同时满足a、b、c、d、e五个参数的2强度组合,以及a、b、c三个参数的3强度组合。测试用例套
testsuite
针对特定测试目标的测试用例集合。种子
组合测试中由用户定义应被测试的取值组合GB/T38639—2020
3输入预处理
组合测试的条件是待测软件参数的取值范围是可离散的。在应用组合测试之前,应对待测软件的输人进行预处理。其主要包括如下几个步骤:a
根据当前测试的目标,识别出影响待测软件行为的参数。依据步骤a)中得出的参数,识别该参数取值范围的有限个离散取值。若该参数的取值范围是b)
连续的(如实数类型),或者取值过多,则需要采用等价类划分或边界值的方法选取少量的离散取值。
示例1:某航空公司对12~25岁和55~70岁的乘客实行机票优惠政策。在该航空公司订票系统中,当乘客年龄符合优惠政策时,将自动计算出优惠票价。乘客年龄的参数取值虽然是离散值,但取值过多需采用等价、边界值进行划分。表1给出了依据年龄段分类的离散化示例,依据年龄段的分类离散化
输入(乘客年龄)
期望输出
不优惠
不优惠
不优惠
不优惠
示例2:某软件新建用户功能中设置密码要求密码长度不少于8位,密码应至少包含数字和字母,如密码不符合要求,系统则拒绝接受此类密码。由于密码可能的取值过多,因此需采用等价类的方式对输人域进行划分。表2给出了密码参数的离散化示例。
表2密码参数的离散化示例bZxz.net
输人(密码)
123abc
12345678
1234abcd
abcdefgh
依据步骤a)中得出的参数,识别出参数间的约束d)
分析各参数间交互作用的强度,设定用于测试的组合强度期望输出
不接受
不接受
不接受
依据待测软件的需求确定是否有约束条件以及种子。约束条件和种子的选取应按第5章的要求执行。
组合强度
单一选择
GB/T38639—2020
待测软件中所有参数取值范围的任意可能取值至少被测试用例套中的一个测试用例覆盖示例:一个系统有三个参数P=(pl,p2,p3),其中pl的取值范围V1=(a,b).p2的取值范围V2=(1,2,3),p3的取值范围V3=(x+yb。
表3给出了一组满足单一选择覆盖的测试用例套表3单一选择准则测试用例套示例参数
测试用例
基本选择
待测软件的测试用例套中,对于任意一个参数的两个取值,存在两个测试用例覆盖这两个取值,并且其他参数的取值相同
示例:一个系统有三个参数P=(pl.p2.p3),其中pI取值范围V1=(a,b).p2的取值范围V2=(1,2.3),p3的取值范围V3=(x.y)。
表4给出了一组满足基本选择覆盖的测试用例聋基本选择准则测试用例套示例
测试用例
成对组合
待测软件中任意两个参数,它们取值范围的任意一对有效取值至少被一个测试用例所覆盖。在组合测试中关键参数应至少满足成对组合覆盖示例:一个系统有三个参数P=(p1,p2.p3),其中pl的取值范围V1=(a,b)·p2的取值范围V2=(1.2,3)p3的取值范围V3=《x,y)。
其测试覆盖项见表5。
GB/T38639—2020
5成对测试准则覆盖项示例
参数-值!
表6给出了一组满足成对组合覆盖的测试用例套。表6成对测试准则测试用例套示例参数
测试用例
全组合
参数-值2
待测软件中所有参数取值范围的任意有效取值的组合至少被一个测试用例所覆盖。示例:一个系统有三个参数P=(plp2,p3),其中pl的取值范围V1=(a,b)+p2的取值范围V2=(1,2,3),p3的取值范围V3=(x+y)。
表7给出了满足全组合覆盖的测试用例套4
GB/T38639—2020
全组合准则测试用例套示例
测试用例
5K强度组合
在组合强度要求为K的组合中(简称为K强度),任意K个参数取值范围的任意有效值的组合至少被一个测试覆盖项所覆盖。当K=2时,K强度组合等同于成对组合;当K等于所有参数数量时,K强度组合等同于全组合。
示例:一个系统具有a,b,c,d四个参数.取值范围分别为0.1,当K=2时,表8所给出的一组组合的覆盖率计算SAC
如下:
2强度的组合有ab.ac,ad,bc.bd,cd六种,每两个参数间都有四个二值组合,因此共有24个组合需要覆盖。而在所示的测试用例套中,仅有19个2强度组合被覆盖,因此该测试用例套的2强度组合覆盖率为19/24=79.2%2强度组合测试用例套示例
测试用例
组合测试的约束条件和种子
约束条件
组合测试方法应能提供默认组合强度和任意参数集合上的变强度的表示。组合测试的约束条件分为条件约束和无条件约束条件药束:条件约束应包含约束条件和药束表达式。当约束条件满足时,则按照约束表达式进a)
GB/T38639—2020
行约束,否则不进行约束。
b)无条件约束:无条件约束不需要约束条件。任何测试用例均应满足约束表达式,约束条件和约束表达式应支持关系运算符及逻辑运算符。关系运算符可包含但不限于等于(==)、不等于(!一)、大于()、大于或等于(≥)、小于(<)和小于或等于(≤)等
逻辑运算符可包含但不限于逻辑蕴含(→)、逻辑与(^)、逻辑或(V)、逻辑非()和逻辑异或(甲)等。
组合测试方法应能支持指定参数值测试用例的种子。种子的参数、值及其约束关系应该和模型文件中参数一致。如果不一致,应根据如下原则处理种子:
忽略种子中包含了模型文件中不存在的参数:忽略种子中在模型文件中不存在的参数值;b)
忽略种子中违反了在模型文件中定义的约束条件6组合测试过程要求
组合测试的测试过程如下:
确定测试范围:确定所需测试的软件功能及参数。b)
导出测试条件:针对每个参数确定其取值范围,对于连续变量参数取值范围的确定可按照第4章的方法进行输入预处理
导出测试覆盖项:采用组合测试的方法,根据组合定义的组合强度,生成测试覆盖项。在组合测试中,测试覆盖项应包含测试项参数与组合强度相符的“参数-值对。d)导出测试用例:依据测试覆盖项生成测试用例,直到每个测试覆盖项都包含在至少一个测试用例中。
分配测试用例套:当测试用例数量过多时,可将依据某个关键参数的取值不同,将测试用例分e)
配不同的测试用例套。
执行测试:将测试用例套交由测试人员执行。充分性评估:计算强度组合的覆盖率,可参考附录A给出完全符合或部分符合的结论,分析未g
达到要求的原因。
附录B给出了组合测试用例生成的完整示例。7组合测试输入输出表示
7.1一般要求
组合测试输入应包含组合强度和各参数的定义,宜包含指定参数的变强度定义、种子定义和约束条件。
常见的输人输出格式包括XML格式和JSON格式。XML格式适用于解析速率要求较高和可靠性要求高的测试环境;JSON格式适用于需要远程传输测试数据且对传输效率要求较高的测试环境组合测试的输入输出格式文件见附录C。6
2输入格式
XML输入格式
GB/T38639—2020
如采用XML作为输人格式,宜包含的元素见表9。XML输入格式文件按C.2给出的Schema定义执行。
元素名
combination
parameters
parameter
domain
strength
var_strengh
constraints
constraint
XML输入格式
根元素,包含输人文件中的一切元素参数列表·包含多个参数的定义。子元素为parameter包含参数的名称和值定义。属性name表示参数名,属性type表示参数的类型,可取值stringfloat、int和boolean。子元素为domain取值范围,子元素为value
取值范围中的值
组合强度定义。属性default表示默认强度,默认值为2。子元素为var_strengh加在指定参数上的变强度。子元素为P变强度参数.属性name表示参数名约束条件定义,包含约束条件列表。子元素为constraint约束条件内容,属性condition是可选属性,表示有条件约束中所给出的条件表达式;属性expression表示约束表达式
种子测试用例定义,包含测试用例列表。子元素为seed种子.子元素为param
种子测试用例参数。月
属性name表示参数名,属性value表示参数值JSON输入格式
如采用JSON作为输入格式,宜包含的元素见表10。表10JSON输入格式
元素名
parameters
strength
constraints
参数定义键-值对。例如:\parameters\:[(\name\\name\\domain\:[\valuel\,\value2\]\type\·\type\\].其中name是参数名domain是参数的取值范围.type是参数的类型组合强度的键-值对。应至少包含默认强度。例如:\strength\:{\default\:2,\var_strengh\:[}\parameter\:[\p1\,\p2\,\p3\\strength\:3)]),其中default是默认强度·parameter是需要附加强度的参数列表.后接strength表示其所需的强度约束条件数组。例如:\constraints\:[\condition\:\\,\expression\:\\},《\expression:\\\],其中,condition是有条件约束中所给出的条件表达式,expression是约束表达式种子测试用例数组。例如:\seeds\.[[}\name\\“,\value\,\\\,\name\”\,“value\.\\}][t\name\\\,\value\\\\.\\name\\\,\value\\”\\]7
GB/T38639—2020
输出格式
XML输出格式
如采用XML作为输出格式,宜包含的元素见表11。其XML输出格式文件按C.3给出的Schema定义执行。
表11XML输出格式
元素名
testcases
testcase
根元素,包含测试用例列表。子元素testcase描述
单个测试用例定义,包含各参数-值的列表。子元素为param每个参数的名称和值。属性name表示参数的名称。子元素为value参数的取值
JSON输出格式
如采用JSON作为输出格式,宜包含的元素见表12。JSON输出格式
元素名
testcases
testcase
根元素,包含测试用例列表。子元素testcase描述
测试用例描述,内容包含多个parameter元素的数组。例如:\testcase:[\parameter\,“parame-ter\
每个参数的名称和值的对象。
例如:\name\\\,\value\\\}附录A
(资料性附录)
软件完整性级别与组合强度要求参考GB/T38639—2020
组合测试方法的使用可按照GB/T18492一2001给出的软件完整性级别来确定组合强度的要求,表A,1给出了一组各完整性级别对应的组合强度的参考。表A.1
软件完整性级别对应的组合强度参考软件完整性级别
组合强度要求
依据覆盖率的要求,所有参数应满足K值大于或等于3的组合强度覆盖全部参数需要满足成对组合覆盖,关键参数应满足K值大于或等于3组合强度覆盖全部参数应满足成对组合的覆盖全部参数需满足单一选择覆盖,关键参数应满足成对组合的覆盖
小提示:此标准内容仅展示完整标准里的部分截取内容,若需要完整标准请到上方自行免费下载完整标准文档。