关于jvm:JVM-字节码测试运用远程调试测试覆盖影子数据库

本文由uniquetruth发表于TesterHome论坛,点击原文链接可查看作者的更多文章并与ta在线交换。

始终想找一个技术社区开源一个本人集体的我的项目,心愿能被更多人看到、应用这个货色,在测试上帮忙到大家。

简介

一个专为JVM系语言web利用设计的,专一于集成测试阶段的后端测试工具。实质性能是监控代码执行,做近程调试应用。比方能够让你实时的理解到在前端点击某个按钮后,后端执行的代码细节,包含每一个办法的名称、参数返回值、执行的代码行号,调用的sql语句等信息。
当然可不便的扩大性能,实现测试覆盖率统计、影子数据库等实用功能。

根底应用形式介绍

我的项目地址:https://github.com/uniquetrut…
我的项目应用gradle构建,下载源码后,应用gradle agentTest命令,可编译出一个java探针,并且与所有须要的二进制文件呈现在build/lib目录下。之后就能够将所有jar包放到服务器的任意目录中,而后将-javaagent:${你的目录}/remote-debug-agent.jar=includes=com.foo.bar,apiport=8098配置到web利用启动参数的java_opts中(例如应用tomcat的话,可批改catalina.sh来增加该参数)。被测利用启动后,探针会启动一个内置的jetty服务器,并在8098端口上提供一组api供测试应用。
假如你的被测利用在前端有一个按钮,点击按钮后会调用到后端com.foo.bar.MyClass类中的某个办法,那么在测试这个按钮前,可先发送一个申请http://ip:8098/trace/start(用jmeter、curl甚至浏览器发都行,只有与测试操作源自同一台机器即可),之后点击按钮后,再发送申请http://ip:8098/trace/list,探针即会返回方才执行代码的细节。你能够看到相似这样的数据

[{
    "method": "java.lang.String com.foo.bar.MyClass.handle()",  //执行的办法签名
    "coverage": "[11,13][16,16]",  //执行了哪几行代码
    "cost time": 2,  //执行耗时
    "calls": [{  //该办法调用的底层办法
        "coverage": "[21,21][24,24]",
        "cost time": 1,
        "method": "boolean foo.bar.MyClass.largeThanHalf(double)",
        "parameters": ["0.24444334899195885"],
        "return value": "0"
    }],
    "return value": "random number( 0.24444334899195885 ) is little than half",  //该办法的返回值
    "sql": "select 1 from dual"  //该办法执行的sql语句
}]

以上是一个近程调试的示例,利用场景应该是集成测试阶段灰盒测试,当然白盒、黑盒,甚至开发调试都能够用。另外也提供dump代码行笼罩状况的接口,用过jacoco的应该比拟相熟,利用这些数据能够做测试覆盖率的统计。

工具个性

  • 线程隔离: 代码执行状况是分线程记录的,且能通过一些信息标识调用者身份,因而可在集成环境中多人同时应用,互不影响
  • 天然染色: 调用者身份应用其发动的申请中的人造信息进行染色,无需给测试人员减少额定的客户端
  • 调用链传递: 调用者身份信息可在多个都应用了探针的利用间传递(如果这些利用间应用http协定通信的话),也就是说非常适合微服务架构应用(特意反对了Feign-Hystrix组件)
  • Servlet框架反对: 工具反对大部分应用HttpServlet的框架或中间件,比方spring-web、tomcat等,也提供了十分不便的接口扩大反对其它同类框架
  • 反对Struts2
  • 反对Dubbo
  • 反对Spring RabbitMQ
  • 反对JVM系语言: 探针工作在字节码层,所以不仅反对Java,也反对Groovy、Scala等语言(特意反对了Play框架)
  • SQL语句监控: 探针默认反对oracle和mysql数据库,也提供了十分便当的接口扩大反对其它关系型数据库
  • 反对热插拔: 不必改利用的启动文件也可应用,对线上环境长期应用提供了可能

更多功能继续开发欠缺中

可能没有特地适宜的标签,就选了测试覆盖率这个, 如果有对测试覆盖率或者影子数据库等技术感兴趣的敌人也欢送交换。
集体Github空间也有其它更多开源分享欢送参观,近期也在寻找适合的工作机会,欢送勾结

本文由uniquetruth发表于TesterHome论坛,点击原文链接可查看作者的更多文章并与ta在线交换。

想要学习更多对于测试/测试开发技术、测试治理和品质保障的干货常识?
想要结识品质行业大牛和业界精英?
欢送关注第十届中国互联网测试开发大会·深圳站 >>

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理