• Proj THUDBFuzz Paper Reading: GraphBased Seed Object Synthesis for SearchBased Unit Testing


    Abstract

    1. 解释Search-based software testing(SBST)(突出了衡量到coverage goal的距离度量的重要性)
    2. SBST的距离度量和搜索操作符(search operators)非常重要
      问题: 已有方法难以应付object inputs,因为此时很难再进行距离度量
      本文:EvoObj,基于EvoSuite
    3. 提出test seeds,即test code skeletons of legitimate objects
    4. 给定target branch后,静态分析目标函数,创建一个object construction graph,这张图中存有操作符的关系、相关object inputs的状态。
    5. 基于object construction graph,合成test template code,此时每个slot都是一个潜在可变异位置(mutation point)
      该方法能够与现有的SBST算法无缝结合使用。
      效果:
      对象:103个开源java项目中的2750个方法
      效果:比EvoSuite更好

    1. Intro

    P1: 介绍SBST;有点:仅需要轻量级插桩;EvoSuite和Randoop;object oriented code challenges;无法生成和识别valid objects;object inputs常见

    P2: 保障SBST有效的假设:在当前选用的fitness度量下搜索空间连续单调

    首先介绍正常binary情况下的SBST:
    以常规branch distance为例,给定要测试的函数example,要覆盖的分支:第3行
    SBST会将输入的变量与目标branch condition的值联系起来成为黑盒,引导种子选择和变异。
    此外,常常还会加点正则化。

    P3: Object inputs却很可能导致假设不成立,即使得搜索空间不再连续或者单调
    假设s.getSupervisor()返回null,那么就会直接抛出异常,使得分支b的条件b.cond既不被满足也无法计算branch distance,这导致该搜索无法被指导。

    P4: 用Fig3讲述不连续

    P5:
    本文:seed tests

    1. 对于未被覆盖的branch,创建test template,留下SBST算法进行变异的slots.这里每个slot代表某个object的属性,一般是primitive type。
    2. 静态分析进程间数据流和控制流,建立object construction graph,这张图中会存储属性之间的关联信息,并根据这些信息构建object input
    3. 使用test template code来为slots赋予对应的值
    4. 将seed test方法用最小代价与现有的SBST算法整合

    P6:
    本文: 工具: EvoObj,基于EvoSuite
    测试集: SF100中103个开源Java项目中的2750个方法。
    overhead代价中等

    2. Motivating Example


    P1: 片段来自Gangup, SF100。EvoSuite在半小时内无法成功生成对应测试

    P2: EvoSuite生成的testcase

    P3: 从类定义上说明需要依赖id准确,还需要设置属性players,往里放数据

    P4: 基本步骤:

    1. 为目标函数构建construction graph,并在图中表明object的状态关联builds its construction graph from the target method, depicting how to construct the
      object input with states relevant to the target branch
    2. 根据construction graph生成test template code。generates test template code based on the graph
    3. 填充适当的值。searches appropriate valuation for instantiating the template

    P5: Object Construction Graph:

  • 相关阅读:
    原则之读书笔记(生活篇)
    为 Nginx 添加 HTTP 基本认证(HTTP Basic Authentication)
    Linux搜索所有文件中的内容
    Js实现Table动态添加一行的小例子
    Android必学之数据适配器BaseAdapter
    技术共享之常见的6中种方法检测手机是否是虚拟机
    修改MySql数据库的默认时
    space.php
    self.location.href
    宝塔搭建laravel所需要的lnmp环境linux-nginx-mysql-php-composer-git
  • 原文地址:https://www.cnblogs.com/xuesu/p/15583305.html
Copyright © 2020-2023  润新知