Java字节码操作开源列表

  Javassist

Javassist是一个开源的分析、编辑和创建Java字节码的类库。是由东京技术学院的数学和计算机科学系的 Shigeru Chiba 所创建的。它已加入了开放源代码JBoss 应用服务器项目,通过使用Javassist对字节码操作为JBoss实现动态AOP框架。更多Javassist信息
  BCEL
Byte Code Engineering Library (BCEL),这是Apache Software Foundation 的Jakarta 项目的一部分。BCEL是 Java classworking 最广泛使用的一种框架,它可以让您深入 JVM 汇编语言进行类操作的细节。BCEL与Javassist 有不同的处理字节码方法,BCEL在实际的JVM 指令层次上进行操作(BCEL拥有丰富的JVM 指令级支持)而Javassist 所强调的源代码级别的工作。更多BCEL信息
  ObjectWeb ASM
ObjectWeb ASM轻量级的Java字节码处理框架。它可以动态生成二进制格式的stub类或其他代理类,或者在类被JAVA虚拟机装入内存之前,动态修改类。ASM 提供了与 BCEL和SERP相似的功能,只有22K的大小,比起350K的BCEL和150K的SERP来说,是相当小巧的,并且它有更高的执行效率,是BCEL的7倍,SERP的11倍以上。更多ObjectWeb ASM信息
  cglib
cglib是一个强大的,高性能,高质量的Code生成类库。它可以在运行期扩展Java类与实现Java接口。Hibernate用它来实现PO字节码的动态生成。更多cglib信息
  Cojen
Cojen是一个动态Java字节码生成和分解工具。使用一个建造器来方便地生成代码,而不用再选择精确的指令。Cojen提供的工具类演示了代码生成器和加载器的使用。更多Cojen信息
  JClassLib
JClassLib不但是一个字节码阅读器而且还包含一个类库允许开发者读取,修改,写入Java Class文件与字节码。更多JClassLib信息
  SERP
SERP字节码框架提供一组高级的APIs进行字节码各主方面的操作。SERP字节码框架能够使你不需要明白class文件格式与JVM 指令就可以轻松完成bytecode 操作更多SERP信息
  Trove Class File API
这个类文件API简化了Java class文件的创建。它允许你调用高级的方法来产生byte-code,不是直接编写byte-code。更多Trove Class File API信息
  Package gnu.bytecode
Package gnu.bytecode包含一些可以生成,读取,打印Java字节码文件的Java类。这个包是Kawa项目的一部分。更多Package gnu.bytecode信息
  Classfile Reader & Writer
这个包使得读写java class文件变得很容易。它可以很容易得把class文件的内容显示给用户(除非你要统计Bug的输出数)与分解字节码。更多Classfile Reader & Writer信息
  Jiapi
Jiapi是一个用来改变正常Class装载过程的工具。Jiapi通过操作类的字节码来代替Class原来被装载的过程。被操作的Class传给一个可以把Class装载到Java虚拟机的类装载器。通过Jiapi工具被编译的Class可进行预处理操作并且可延缓执行被修改的Class在文件系统上序列化操作。更多Jiapi信息
  JBET
通过JBET(Java Binary Enhancement Tool )的API可对Class文件进行分解,重新组合,或被编辑。JBET也可以创建新的Class文件。JBET用一种结构化的方式来展现Javabinary (.class)文件的内容,并且可以很容易的进行修改。更多JBET信息
  Retroweaver
Retroweaver是一个字节码组织器,它能够让你用java1.4的虚拟机来运行用1.5的新特性所编写Class.Retroweaver的操作是把用1.5编译器编译的Class文件转换成可以在任何1.4虚拟机上运行Class文件.更多Retroweaver信息
  Jen
Jen为字节码操作与生成提供一组高级API.利用它可以对Java classe进行重命名,把一个数据成员(Field)改成Public访问权限和新增一个构建函数等操作。Jen基于ASM2.1并完全支持Java5注释(annotations)与范型(Generics)。此外它还提供一组额外的工具类用于在运行期生成新的classes。更多Jen信息
  Soot
Soot是一个Java优化框架.它提供了四种中间(representation)表现用于分析与转换Java字节码.Soot既可以作为优化和检查class文件的工具也可以作为一个开发与优化Java字节码的框架。在2.0以上的版本Soot还包含一个Eclipse插件。更多Soot信息
  ReJava
ReJava提供一个类库用于操作class文件(包括bytecode)和一个GUI工具用于编辑,混淆,注入代码,搜索class文件。更多ReJava信息
  jclazz
jclazz是一个Java字节码查看器与反编译工具。支持java1.4到1.6版本的字节码。
decomp.jpg更多jclazz信息

PICT:基于正交法的软件测试用例生成工具 - u013569928的专栏 - CSDN博客

成对组合覆盖这一概念是Mandl于1985年在测试Aad编译程序时提出来的。Cohen等人应用成对组合覆盖测试技术对Unix中的“Sort”命令进行了测试。测试结果表明覆盖率高达90%以上。可见成对组合覆盖是一种非常有效的测试用例设计方法。成对组合覆盖要求任意两个因素(输入条件)的所有水平组合至少要被覆盖1次。组合覆盖的算法已经被很多工具实现,测试人员可以直接利用这些工具,例如:TConfig

来源: PICT:基于正交法的软件测试用例生成工具 - u013569928的专栏 - CSDN博客

测试用例 自动生成工具PICT与AllPairs - - CSDN博客

通常我们在设计或编写测试用例时,存在一个“痛点”:要么设计的测试用例存在遗漏,难以100%覆盖测试需求;要么被测系统过于复杂,设计的测试用例过多,导致前期的设计和后续的执行工作量过大。其实,在测试用例设计过程中,我们可以借助一些辅助工具,以提高设计效率。当我们采用“成对组合覆盖测试设计方法”来设计用例时,可以使用一款小巧型工具:PICT,目前已更新到3.3版本。 下载地址: http://

来源: 测试用例 自动生成工具PICT与AllPairs - - CSDN博客

JAVA覆盖率工具EMMA介绍

最近在对Java代码进行单元测试的时候了解到一种针对Java代码的强大的覆盖率工具Emma。那么覆盖率工具Emma是怎么运行的呢?下面跟gkstk小编一起来看看吧!
首先介绍一下EMMA 是一个开源、面向 Java 程序测试覆盖率收集和报告工具。它通过对编译后的 Java 字节码文件进行插装,在测试执行过程中收集覆盖率信息,并通过支持多种报表格式对覆盖率结果进行展示。EMMA可以统计函数覆盖、类覆盖、行覆盖等,据说最新版支持分支覆盖。
查看了一下EMMA的基本原理,大致分为以下步骤:插桩(instr),运行,收集(ctl),报告(report)JAVA覆盖率工具EMMA介绍JAVA覆盖率工具EMMA介绍
插桩
命令行:java emma instr -cp /usr/local//anrs/lib/anrs.jar -m overwrite -ix +com.* -Dmetadata.out.file=test.em
参数介绍:
-cp,指定插桩的路径,多个jar包可以用,分割
-m:输出模式
overwrite:重新jar包,anrs.jar
default:copy, 需要加上-d参数,指定输出路径。有插桩,才cp一份class到指定路径
fullcopy:需要加上-d参数,指定输出路径。 不管有没有插桩,都cp一份class到指定路径
-merge:合并JAVA覆盖率工具EMMA介绍文章JAVA覆盖率工具EMMA介绍出自http://www.gkstk.com/article/wk-78500000842051.html,转载请保留此链接!。
default:yes。 如果metadata指定输出的文件一样,将两次插桩信息进行合并
no 不合并两次插桩信息
-ix:指定需要插桩的class
+com.*: + 指包含
-com.*:-指排除
运行
一般情况下,直接运行应用程序即可。EMMA会启动一个监听端口,用来后面收集信息(ctl)JAVA覆盖率工具EMMA介绍JAVA认证。这个端口是固定的,47653。
如果我们的应用是多进程的,就会出现启动失败。其实EMMA也提供了一个命令,进行端口设置:-Demma.rt.control.port=39123
还有host指定,-Demma.rt.control.host=192.168.22.22. default is localhost
这个参数需要加在程序启动命令里
EMMA还有简单的配置文件:java -Demma.properties=my.properties
my.properties format: tag=value
收集
一般有两种收集信息方法:
1. 程序退出,自动收集,在当前运行目录下生成coverage.ec
2. 命令行:
java -cp /usr/jdk/jdk1.6.0_23/jre/lib/ext/emma.jar emma ctl -connect localhost:47653 -command coverage.get,coverage.ec
报告
命令行:
java -cp /usr/jdk/jdk1.6.0_29/jre/lib/ext/emma.jar emma report -r html -in anrs.em coverage.ec –sp src/-Dreport.html.out.file=coverage.html
参数介绍
-r: report type:html,txt,xml
-sp: sourcecode path
除了命令行方式外,EMMA可以直接在Eclipse中进行使用。