您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 国内外标准规范 > GB∕T 38639-2020 系统与软件工程 软件组合测试方法
书书书犐犆犛35.080犔77中华人民共和国国家标准犌犅/犜38639—2020系统与软件工程 软件组合测试方法犛狔狊狋犲犿狊犪狀犱狊狅犳狋狑犪狉犲犲狀犵犻狀犲犲狉犻狀犵—犛狅犳狋狑犪狉犲犮狅犿犫犻狀犪狋狅狉犻犪犾狋犲狊狋犻狀犵犿犲狋犺狅犱20200428发布20201101实施国家市场监督管理总局国家标准化管理委员会发布目 次前言Ⅰ…………………………………………………………………………………………………………1 范围1………………………………………………………………………………………………………2 术语和定义1………………………………………………………………………………………………3 输入预处理2………………………………………………………………………………………………4 组合强度3…………………………………………………………………………………………………5 组合测试的约束条件和种子5……………………………………………………………………………6 组合测试过程要求6………………………………………………………………………………………7 组合测试输入输出表示6…………………………………………………………………………………附录A(资料性附录) 软件完整性级别与组合强度要求参考9…………………………………………附录B(资料性附录) 组合测试方法示例10………………………………………………………………附录C(规范性附录) 组合测试输入输出XMLSchema30……………………………………………参考文献34……………………………………………………………………………………………………犌犅/犜38639—2020前 言 本标准按照GB/T1.1—2009给出的规则起草。请注意本文件的某些内容可能涉及专利。本文件的发布机构不承担识别这些专利的责任。本标准由全国信息技术标准化技术委员会(SAC/TC28)提出并归口。本标准起草单位:上海计算机软件技术开发中心、中国电子技术标准化研究院、国家应用软件产品质量监督检验中心、西宁市大数据服务管理局、广东省科技基础条件平台中心、深圳赛西信息技术有限公司、中国电子科技集团公司第五十四研究所、中国电子科技集团公司第十研究所、中国航天系统科学与工程研究院、厦门理工学院、山东道普测评技术有限公司、浙江省电子信息产品检验所、北京跟踪与通信技术研究所、南京邮电大学、中国科学院软件研究所、北方民族大学、内蒙古自治区电子信息产品质量检验院、上海第二工业大学。本标准主要起草人:蔡立志、李文鹏、龚家瑜、张、胡芸、李军、康京山、吴克寿、王威、赵毅、吕雪、严俊、王子元、刘文红、沈颖、白万芳、孙凤丽、孙纪敏、杨隽、王凤玲、赵昌平、李晓伟、薛宝军、王磊、何永辉、韩强、黄秋霞、亓兵、李丽萍、李艳。Ⅰ犌犅/犜38639—2020系统与软件工程 软件组合测试方法1 范围本标准给出了软件组合测试输入预处理方法和组合强度设定,规定了组合测试约束条件和种子、组合测试过程要求以及组合测试输入输出表示方法。本标准适用于软件组合测试的用例设计和充分性评估。2 术语和定义下列术语和定义适用于本文件。2.1 组合测试方法 犮狅犿犫犻狀犪狋狅狉犻犪犾狋犲狊狋犻狀犵犿犲狋犺狅犱基于多参数组合进行软件测试的一种方法。注:在组合测试中,被测试应用被抽象为一个黑盒,它有多个输入参数,其行为受输入参数之间的组合测试影响。2.2 组合强度 犮狅犿犫犻狀犪狋狅狉犻犪犾狊狋狉犲狀犵狋犺用于表示测试参数取值组合的复杂度。2.3 参数 狆犪狉犪犿犲狋犲狉测试目标相关的输入参数、配置参数或环境参数。注1:参数类型包括整型、浮点型、布尔型和字符串型。注2:待测软件的参数可以是函数的输入参数、命令行参数、表单输入框、配置文件中的配置项。2.4 取值范围 犱狅犿犪犻狀参数取值的范围或集合。2.5 变强度 狏犪狉犻犪犫犾犲狊狋狉犲狀犵狋犺对不同的参数子集给出不同组合强度的要求。注:组合测试中组合强度的一种特殊要求。通常是在默认组合强度的基础上,待测软件的某几个参数子集采用不同于默认值的组合强度。示例:一个系统具有a、b、c、d、e五个参数,默认组合强度为2,其中a、b、c三个参数由于特殊要求需要设置3强度组合,则该系统的测试用例需同时满足a、b、c、d、e五个参数的2强度组合,以及a、b、c三个参数的3强度组合。2.6 测试用例套 狋犲狊狋狊狌犻狋犲针对特定测试目标的测试用例集合。2.7 种子 狊犲犲犱组合测试中由用户定义应被测试的取值组合。1犌犅/犜38639—20203 输入预处理组合测试的条件是待测软件参数的取值范围是可离散的。在应用组合测试之前,应对待测软件的输入进行预处理。其主要包括如下几个步骤:a) 根据当前测试的目标,识别出影响待测软件行为的参数。b) 依据步骤a)中得出的参数,识别该参数取值范围的有限个离散取值。若该参数的取值范围是连续的(如实数类型),或者取值过多,则需要采用等价类划分或边界值的方法选取少量的离散取值。示例1:某航空公司对12~25岁和55~70岁的乘客实行机票优惠政策。在该航空公司订票系统中,当乘客年龄符合优惠政策时,将自动计算出优惠票价。乘客年龄的参数取值虽然是离散值,但取值过多,需采用等价、边界值进行划分。表1给出了依据年龄段分类的离散化示例。表1 依据年龄段的分类离散化序号输入(乘客年龄)期望输出111不优惠212优惠325优惠426不优惠554不优惠655优惠770优惠871不优惠 示例2:某软件新建用户功能中设置密码要求密码长度不少于8位,密码应至少包含数字和字母,如密码不符合要求,系统则拒绝接受此类密码。由于密码可能的取值过多,因此需采用等价类的方式对输入域进行划分。表2给出了密码参数的离散化示例。表2 密码参数的离散化示例序号输入(密码)期望输出1123abc不接受212345678不接受31234abcd接受4abcdefgh不接受 c) 依据步骤a)中得出的参数,识别出参数间的约束。d) 分析各参数间交互作用的强度,设定用于测试的组合强度。e) 依据待测软件的需求确定是否有约束条件以及种子。约束条件和种子的选取应按第5章的要求执行。2犌犅/犜38639—20204 组合强度4.1 单一选择待测软件中所有参数取值范围的任意可能取值至少被测试用例套中的一个测试用例覆盖。示例:一个系统有三个参数犘={p1,p2,p3},其中p1的取值范围犞1={a,b},p2的取值范围犞2={1,2,3},p3的取值范围犞3={x,y}。表3给出了一组满足单一选择覆盖的测试用例套。表3 单一选择准则测试用例套示例参数p1p2p3测试用例a1xb2ya3x4.2 基本选择待测软件的测试用例套中,对于任意一个参数的两个取值,存在两个测试用例覆盖这两个取值,并且其他参数的取值相同。示例:一个系统有三个参数犘={p1,p2,p3},其中p1的取值范围犞1={a,b},p2的取值范围犞2={1,2,3},p3的取值范围犞3={x,y}。表4给出了一组满足基本选择覆盖的测试用例套。表4 基本选择准则测试用例套示例参数p1p2p3测试用例a1xb1xb2xb3xb3y4.3 成对组合待测软件中任意两个参数,它们取值范围的任意一对有效取值至少被一个测试用例所覆盖。在组合测试中关键参数应至少满足成对组合覆盖。示例:一个系统有三个参数犘={p1,p2,p3},其中p1的取值范围犞1={a,b},p2的取值范围犞2={1,2,3},p3的取值范围犞3={x,y}。其测试覆盖项见表5。3犌犅/犜38639—2020表5 成对测试准则覆盖项示例序号参数值1参数值21p1=ap2=12p1=ap2=23p1=ap2=34p1=bp2=15p1=bp2=26p1=bp2=37p2=1p3=x8p2=1p3=y9p2=2p3=x10p2=2p3=y11p2=3p3=x12p2=3p3=y13p1=ap3=x14p1=ap3=y15p1=bp3=x16p1=bp3=y 表6给出了一组满足成对组合覆盖的测试用例套。表6 成对测试准则测试用例套示例参数p1p2p3测试用例a1xa2xa3xb1yb2yb3ya1yb2x4.4 全组合待测软件中所有参数取值范围的任意有效取值的组合至少被一个测试用例所覆盖。示例:一个系统有三个参数犘={p1,p2,p3},其中p1的取值范围犞1={a,b},p2的取值范围犞2={1,2,3},p3的取值范围犞3={x,y}。表7给出了满足全组合覆盖的测试用例套。4犌犅/犜38639—2020表7 全组合准则测试用例套示例参数p1p2p3测试用例a1xa1ya2xa2ya3xa3yb1xb1yb2xb2yb3xb3y4.5 犓强度组合在组合强度要求为犓的组合中(简称为犓强度),任意犓个参数取值范围的任意有效值的组合至少被一个测试覆盖项所覆盖。当犓=2时,犓强度组合等同于成对组合;当犓等于所有参数数量时,犓强度组合等同于全组合。示例:一个系统具有a,b,c,d四个参数,取值范围分别为0,1,当犓=2时,表8所给出的一组组合的覆盖率计算如下:2强度的组合有ab,ac,ad,bc,bd,cd六种,每两个参数间都有四个二值组合,因此共有24个组合需要覆盖。而在所示的测试用例套中,仅有19个2强度组合被覆盖,因此该测试用例套的2强度组合覆盖率为19/24=79.2%。表8 2强度组合测试用例套示例参数abcd测试用例00000110100101115 组合测试的约束条件和种子5.1 约束条件组合测试方法应能提供默认组合强度和任意参数集合上的变强度的表示。组合测试的约束条件分为条件约束和无条件约束:a) 条件约束:条件约束应包含约束条件和约束表达式。当约束条件满足时,则按照约束表达式进5犌犅/犜38639—2020行约束,否则不进行约束。b) 无条件约束:无条件约束不需要约束条件。任何测试用例均应满足约束表达式。约束条件和约束表达式应支持关系运算符及逻辑运算符。关系运算符可包含但不限于等于(==)、不等于(!=)、大于(>)、大于或等于(≥)、小于(<)和小于或等于(≤)等。逻辑运算符可包含但不限于逻辑蕴含(→)、逻辑与(∧)、逻辑或(∨)、逻辑非(┐)和逻辑异或(!)等。5.2 种子组合测试方法应能支持指定参数值测试用例的种子。种子的参数、值及其约束关系应该和模型文件中参数一致。如果不一致,应根据如下原则处理种子:a) 忽略种子中包含了模型文件中不存在的参数;b) 忽略种子中在模型文件中不存在的参数值;c) 忽略种子中违反了在模型文件中定义的约束条件。6 组合测试过程要求组合测试的测试过程如下:a) 确定测试范围:确定所需测试的软件功能及参数。b) 导出测试条件:针对每个参数确定其取值范围,对于连续变量参数取值范围的确定可按照第4章的方法进行输入预处理。c) 导出测试覆盖项:采用组合测试的方法,根据组合定义的组合强度,生成测试覆盖项。在组合测试中,测试覆盖项应包含测试项参数与组合强度相符的“参数值”对。d) 导出测试用例:依据测试覆盖项生成测试用例,直到每个测试覆盖项都包含在至少一个测试用例中。e) 分配测试用例套:当测试用例数量过多时,可将依据某个关键参数的取值不同,将测试用例分配不同的测试用例套。f) 执行测试:将测试用例套交由测试人员执行。g) 充分性评估:计算强度组合的覆盖率,可参考附录A给出完全符合或部分符合的结论,分析未达到要求的原因。附录B给出了组合测试用例生成的完整示例。7 组合测试输入输出表示7.1 一般要求组合测试输入应包含组合强度和各参数的定义,宜包含指定参数的变强度定义、种子定义和约束条件。常见的输入输出格式包括XML格式和JSON格式。XML格式适用于解析速率要求较高和可靠性要求高的测试环境;JSON格式适用于需要远程传输测试数据且对传输效率要求较高的测试环境。组合测试的输入输出格式文件见附录C。6犌犅/犜38639—20207.2 输入格式7.2.1 犡犕犔输入格式如采用XML作为输入格式,宜包含的
本文标题:GB∕T 38639-2020 系统与软件工程 软件组合测试方法
链接地址:https://www.777doc.com/doc-9490227 .html