MOOCTEST_开发者测试_介绍

RocketJ 2020-02-21

1. 评价测试脚本的质量:

*测试代码覆盖率:直接采用指定的某种代码覆盖率(语句覆盖分支覆盖等)

*Bug检测率:直接采用变异杀死率作为指标

脚本可维护性:按照规定的风格要求,采用checkstyle计算相应的满足项。(例如:检查项5项,每项20分,选手某单项出错一次扣2分,单项扣完未止

脚本运行效率:采用代码覆盖率除以运行时间,max=100,其他选手采用线性化归一计算

脚本编写效率:采用最高代码覆盖率除以最快达到这一覆盖率的编写时间,最高记位100分,其他选手采用线性化归一计算

2. 分支覆盖:

要求:程序中每个条件判定语句的真值结果和假值结果都至少出现一次。

分支覆盖得分(Branch Score)是评价测试用例集充分检测有效性的度量指标。

  得分介于0和1直接,数值越高,表明覆盖的分支数越多,测试用例集覆盖的流程越多。为1时表明用例集覆盖了所有分支。

3. 变异测试:

也称为变异分析,是对测试数据集有效性充分性进行评估的技术。

通过对比源程序与变异程序在执行同一测试用例时的差异来评价测试用例集的错误检测能力

变异测试中,一般利用与源程序差异极小的简单变异体来模拟程序中可能存在的各种缺陷。

  3.1 应用场景:

  若当前测试用例未能检测到软件缺陷,则存在两种情形:

    1. 软件已满足预设要求,软件质量较高;

    2. 测试用例设计不充分,不能有效检测缺陷;

  逻辑测试路径测试,分布从程序实体覆盖和路径覆盖的角度来评估软件测试的充分性,但并不能直观的反映测试用例的缺陷检测能力。

  3.2 基本假设:

  变异测试的可行性主要基于两点:

    “熟练程序员”假设,关注熟练程序员的编程行为;

    “变异耦合效应”假设,关注变异程序的缺陷类型。

  3.3 程序变异:

  定义:基于预先定义的变异操作对程序进行修改,进而得到源程序变异程序(变异体)的过程。

  源程序与变异程序:

    存在差异时,认为用例检测到变异程序种的错误,变异程序被杀死;

    相同时,没有检测到错误,变异程序存活。

  3.4 变异类型

  MOOCTEST_开发者测试_介绍

MOOCTEST_开发者测试_介绍

   3.5 变异体

a. 程序与变异程序执行的差异有两种

(1)同测试用例,不同运行时状态;(2)同测试用例,不同执行结果;

b. 根据满足执行差异要求的不同,变异测试分为以下两种

  弱变异测试(Weak Mutation Testing):当情形1出现时,可认为变异程序被杀死

  强变异测试(Strong **):当1,2同时满足,可认为变异程序被杀死

c. 等价变异体:变异体p‘与原有程序p存在语法差异,但语义上一致(功能性),则称p’时p的等价变异体。如for循环(i = 0;i < 10; i++)和(i = 0;i != 10;i++)。

  3.6 变异得分

a. 定义:评价测试用例集错误检测有效性的度量指标。

b. score mutation介于0-1之间,越大表明被杀死的编译程序越多,

    为1表示杀死了所有非等价编译程序,为0表示没有杀死任何一个变异程序

相关推荐