Evosuite使用方法入门

1、简要介绍

  • EvoSuite开源工具可以基于Eclipse进行测试用例的自动生成,生成的测试用例符合Junit标准(直接生成可进行Junit的java文件),满足分支覆盖(即判定覆盖)|

  • Evosuite分为Eclipse插件使用和命令行两种使用方法,推荐使用命令行。以下会详细说明

2、前提条件:

  • 配置 JDK

  • 安装 Apache Maven

3、Evosute插件

  • 安装方式:
    • 在eclipse中点击菜单栏的help

    • 选择Install New Software

    • 点击Add按钮

    • 在location位置输入http://www.evosuite.org/update

    • 选中 Junit Test Generation

    • 一路next下去,直到finish

    • 重启Eclipse即可

  • 运行方式:
    • 插件安装后,重启Eclipse,随意选中一个java类文件,

    • 鼠标右击,选择Generate tests with EvoSuite

  • 局限性:
    • 仅支持Java8+Eclipse(Luna、Mars两个版本)

    • 会生成单独生成一个测试包,在mooctest下做练习无法直接提交

4、Evosuite命令行

  • evosuite下载地址:http://www.evosuite.org
  • 简要介绍:
    • evosuite是一个可直接运行jar包,通过java -jar evosuite.jar <options>运行,通过更改参数实现特定的功能

  • 运行步骤
    • 说明:将以"C:\Users\sqc\Desktop\软件测试\evosuite\BrainfuckEngine.java"为例

  1. 通过cmd打开命令行

  2. 进入到evosuite文件所在的路径下

  3. evosuite执行对象是字节码文件,所以需要将待测的Java文件编译成.class的字节码文件

  4. 通过java -jar evosuite.jar(evosuite.jar是文件的名称),由于没有赋参数,使用默认参数-help,显示所有的可选参数

  5. 通过执行以下命令自动生成测试用例(参数将在下面解释)

  6. 本例中将会在当前目录下生成一下两个文件夹                                                                            

    • evosuite-report中生成一个statistics.csv的文件,文件中显示目标类、生成测试的标准,覆盖率等参数

    • evosuite-tests下生成以下两个文件,第二个文件可以忽略

  7. 将BranfuckEngine_ESTest.java中的测试用例复制到eclipse下

  8. 修改错误,运行

  9. 结束。

  • 常用的参数解释
    • -class :执行的对象

    • -projectCP:设置测试生成的类路径

    • -help:要查看可用的命令行选项

    • -criterion :测试的标准参数有(line、branch、cbranch、mutation 、exception等)

    • -Dminimize=false //它会删除所有不满足覆盖率目标所需的语句

    • -Dassertion_strategy=all //使用大量断言生成长测试

    • 更过参数请参考开发文档:http://www.evosuite.org/documentation/tutorial-part-1/
  • 值得注意的地方
    • 运行时会使用随机的种子,所以每次的生成的测试用例都不相同,也可以通过手动设置随机种子,使得生成两次相同的测试用例

    • 默认criterion使用复合的参数,可以根据需求&通过查看statistics文件查看代码覆盖率,修改criterion的参数,提高代码覆盖率

    • 当编译Java文件中有中文字符时会报错,通过修改默认的编码格式为utf格式:执行 javac -encoding utf-8 BrainfuckEngine.class

    • 复制代码到eclipse中,运行之前休要Clean一下工程,否则会报错

    • eclipse中文件夹目录结构不要修改,否则会提交失败

    • 本地配置JAVA_HOME(即使Eclipse可以运行成功)

Evosuite使用方法入门的更多相关文章

  1. 习题集1a:研究方法入门

    1.课程实践编号 课程实践编号 随着对习题集“PS 1a:研究方法入门”和其他习题集的了解,你可能会发现进度栏中的习题编号并非一直是连续的. 对于存在两个习题集的课程,如果一个习题集看上去“缺失”习题 ...

  2. PowerDesigner最基础的使用方法入门学习(转)

    PowerDesigner最基础的使用方法入门学习   1:入门级使用PowerDesigner软件创建数据库(直接上图怎么创建,其他的概念知识可自行学习) 我的PowerDesigner版本是16. ...

  3. DBS-PowerDesginer:PowerDesigner最基础的使用方法入门学习

    ylbtech-DBS-PowerDesginer:PowerDesigner最基础的使用方法入门学习 1.返回顶部 1. 1:入门级使用PowerDesigner软件创建数据库(直接上图怎么创建,其 ...

  4. 【黑马JavaSE】1.2.算术\赋值\比较\逻辑\三元运算符、方法入门、JShell编译器

    文章目录 1_1_6_05_算术运算符_四则与取模运算 1_1_6_06_算术运算符_加号的多种 1_1_6_07_算术运算符_自增自减运算 1_1_6_08_赋值运算符 这里挺关键的,为什么一个by ...

  5. day02_数据类型转换、运算符、方法入门

    day02_数据类型转换.运算符.方法入门 数据类型 基本数据类型 四类八种 整数型 (取值范围) byte(-128~127) short(-32768~32767) int(一般默认)(-21亿~ ...

  6. Java(25-40)【数据类型转换、运算符、方法入门】

    1.ASCII编码表 0--48 A--65 a--97 2. Unicode万国码 字符'中'为20013 3.算数运算符 double类型的加上int类型结果为double byte short ...

  7. javaScript中Number数字类型方法入门

    前言 Number和Math都属于JavaScript中的内置对象,Number数字类型作为基础数据类型,我们在开发过程中会经常用到,包括数字精度的格式化,还有字符串转换成数字等操作. Number数 ...

  8. javaScript中Math内置对象基本方法入门

    概念 Math 是javaScript的内置对象,包含了部分数学常数属性和数学函数方法. Math 不是一个函数对象,用户Number类型进行使用,不支持BigInt. Math 的所有属性与方法都是 ...

  9. PowerDesigner最基础的使用方法入门学习

    1:入门级使用PowerDesigner软件创建数据库(直接上图怎么创建,其他的概念知识可自行学习) 我的PowerDesigner版本是16.5的,如若版本不一样,请自行参考学习即可.(打开软件即是 ...

随机推荐

  1. C#异常:未将对象引用设置到对象的实例。

    异常:未将对象引用设置到对象的实例. 一般是定义的变量或者数组等,没有赋初始值. 赋初始值后问题解决.

  2. NPOI处理Word文本中段落编号

    NPOI的XWPFParagraph对象中,是无法直接读取段落编号的,然而可以读取的是编号的样式名称(GetNumFmt),编号分组ID(GetNumID),编号样式(NumLevelText)等.具 ...

  3. java基础知识—类和对象

    1.对象的特征---类的属性 每个对象的每个属性都有特定的值 对象的操作---类的方法 2.封装 对象同时具有属性和方法两项属性. 对象的属性和方法同时被封装在一起,共同体现事物的特性,二者相辅相成, ...

  4. hdu4044

    题意:给你一颗树有n个节点,树的根节点为1,表示为敌人的基地,其他叶子节点为你的基地,你一开始有m元,给你每个节点可以建造的塔的数量和塔的价格和可以照成的伤害,每个节点至多建立一座塔.敌人的基地每次会 ...

  5. Mysql和Hadoop+Hive有什么关系?

    1.Hive不存储数据,Hive需要分析计算的数据,以及计算结果后的数据实际存储在分布式系统上,如HDFS上. 2.Hive某种程度来说也不进行数据计算,只是个解释器,只是将用户需要对数据处理的逻辑, ...

  6. input ,button, textarea 1)使用disabled , 2) 显示值, 3) 表单提交. 4) jquery.form.js ajaxSubmit() 无刷新ajax提交表单.

    1.使用disabled input , button  textarea 可以 被 禁用, 禁用的效果 : 1) 上面的点击事件无法使用 --- button       : 下面的 onclick ...

  7. shell 统计字符串 字符个数

    统计“abbc”中“b”的个数 1:awknum=`echo abbc | awk -F"b" '{print NF-1}'` 2:trnum=`echo abbc | tr -c ...

  8. day 15递归 匿名函数

    三元表达式 目的是简化书写 局限性:三元表达式智能简化仅有两个分支的if判断,而且这个判断无论是否成立都必须要返回值 res = True if age >=18 else False 递归: ...

  9. Knowledge From Practice(JavaScript)

    1.HTML事件对象 onmouseover:鼠标移入事件 onmouseout:鼠标移出事件 onmousedown:鼠标落下事件 onmouseup:鼠标抬起事件 例子: onclick:鼠标点击 ...

  10. WEB学习笔记10-高可读性的HTML之HTML 语义化

    实现如下所示工具栏: 做到标签语义化,首先要尽量减少使用<div>和<span>这两个标签. 分析:这是一个包含5个无序操作项的工具栏,因此应该使用符合语义的<ul> ...