zoukankan      html  css  js  c++  java
  • Proj. THUIoTFuzz Paper: Testing Java Exceptions an instrumentation

    Abstract

    本文认为一般测试工具只会试着覆盖正常执行路径,本文则会尝试引发已经标明可能出现的异常,由此,测试人员就能观察到程序如何处理这些异常,同时,也能增加覆盖率

    Intro

    本文工作:

    实现了一个能够对Java源码自动插桩的工具,能够自动执行程序的exception相关路径,且能够和现有的测试工具一起使用

    AN INSTRUMENTATION TECHNIQUE TO EXERCISE EXCEPTIONS
     A. VerifyEx类
    VerifyEx有个exception方法,传入参数是用于区别异常的标签
    功能:
    1. 标识异常执行顺序
    2. 协助reboot-可以从程序任何位置重新启动,这样就不需要每次都从main启动,或者每次都把所有的异常路径都走一遍
    B. 插桩
    Step 1:查找exception的activation/deactivation
       本文认为:1. 有throws某个异常这个行为的方法,且这个方法中没有一个被调用的被测函数throw这个异常的,那么这个方法就是activation
                         2. try block对于其catch语句所标明的异常类型来说是activation
       首先,本文创建一个程序的抽象模型,里面只包含exception相关语句和exception objects的控制流图
      
    Step 2. 确定插桩位置
     
    位置分别是:
    1. throw 命令前面
    2. 会丢出异常的method的第一行
    3. try block的第一行
    Step3: 插桩
    具体指令是通过VerifyEx实际执行得到的。
    此外,还会插入Reboot相关指令。
  • 相关阅读:
    Grails笔记二:grails 2.4.3版本下generate-*失效问题解析
    java常量池中基本数据类型包装类的小陷阱
    Mysql中使用聚合函数对null值的处理
    集合框架
    List的三个子类ArrayList,LinkedList,Vector之面试题
    String类面试题2
    String类常见面试题1
    常见对象之String类
    Scanner的概述和方法介绍
    Java开发工具(Eclipse工作空间的基本配置)
  • 原文地址:https://www.cnblogs.com/xuesu/p/13914022.html
Copyright © 2011-2022 走看看