STF 使用 java 开发 restful 接口自动化框架 (基于 restassured、testng)

Cowen · 2017年03月07日 · 最后由 Green hand 回复于 2019年11月22日 · 3144 次阅读
本帖已被设为精华帖!

10 年毕业,到现在马上工作满 7 年,一直在测试行业发展,做功能测试、自动化测试、性能测试、安全测试,使用的产品都是商业软件(比如 UFT/QTP、LR、QC 等),极少涉及开源的产品。
自动化测:会 VBS 驱动 EXCEL+QTP 性能测试:也做过很多性能测试项目,我可以做到调研阶段 (业务模型和测试模型的设计)、准备阶段(脚本、监控、数据准备等)、执行阶段(场景设计、日志收集和简单分析、堆栈转存、JVM 等)、报告阶段 安全测试:我只会简单的使用工具进行扫描(接口扫描、页面扫描、网络抓包、静态代码检查),然后写一个报告😇

感觉做过很多东西,其实我自己知道都不深入,比如性能测试到底怎去来优化代码,比如怎么去渗透测试,比如自动测试如何做并发来提高效率等等等,而且新技术不断更新(移动、大数据、云、devops 等)自己倍感压力。
人只有保持饥饿敢,否则就原地踏步,被其他人替代,需要强迫自己学习新的东西,于是就尝试搞搞 java 开发(虽然新技术很多,但是我经历的项目大部分都是 java 做的)。平时项目也紧张,很多功能没有完善,这里贴出来希望听下大家宝贵的意见(应该具备哪些功能等),持续完善!!!
框架实现的功能
1、接口管理
2、用户管理
3、用例转换为可执行文件
4、测试执行
5、测试报告
使用的主要技术
Java jsp restassured testng mysql js bootstraptable Echarts
功能界面截图
步骤一:接口的导入和维护

步骤二:接口用例维护


步骤三:测试用例转脚本和执行


步骤四:报告


共收到 38 条回复 时间 点赞

有一些接口的入参你是处理的?比如入参是 map/list

您好,我想问一下,这些前端的功能页面也都是你自己写的吗?

请教前端,你是怎么打出来的..
还有执行用例的这里其实就是 RestAssured 的 then.assertThat(,)

考虑开源吗?

是否会开源呢?

Cowen 回复

请教一下.我的理解是,你一点前台页面的自动化执行的按钮后,后台就开始去执行 testng.run()方法了。能告诉一下你的这个前后端之间是如何调用的吗?谢谢!

求源码路径

Cowen #32 · 2017年06月11日 Author
infy001 回复

1 个月,最近都没有去写了

请教关于 restful 接口自动化的问题

可以加下微信吗?请教一些问题

这个项目一个人做了多久啊!

记得更新打赏二维码

这个支持前后 2 个请求的关联吗

Cowen 回复

测试用例的配置数据保存起来,后台有各种模板,然后把用例数据传入模板,使用 java 生成可执行文件

你好,能写个 demo 出来吗?

测试运行那块没思路,我没做过测试,不知道能不能帮忙提个点,谢谢了

Cowen #24 · 2017年03月11日 Author

是生成 java 在编译,前面说错了。生成.java 文件和编译参考代码:
public void createJavaFile(String classname,String testcase)
{
String rt = "";
String tcpackage=null;
String tcimport=null;

String tcClass=null;
tcpackage="package AutoTest;" + ""+ rt;
tcimport="";
tcClass="public class "+ classname+""+rt+"{"+rt
+testcase+rt+"}";
String fileName ="your java path";
File f = new File(fileName);
FileWriter fw;
try {

fw = new FileWriter(f);
if(fw!=null)
{
fw.write(tcpackage+tcimport+tcClass);
fw.flush();
fw.close();
}
} catch (Exception e) {
System.out.println("测试"+e.toString());
}

// compile .java

try {
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
StandardJavaFileManager fileMgr = compiler.getStandardFileManager(null,null, null);
Iterable units = fileMgr.getJavaFileObjects(fileName);
CompilationTask t = compiler.getTask(null, fileMgr, null, null, null,units);
t.call();
fileMgr.close();
} catch (IOException e) {

System.out.println("编译"+e.toString());
}

}

Cowen 回复

cowen:感谢回复。还想请教一下,你发的图片中的 mytest.java 里面代码就是你说的利用 Io 实现的吗?如果是,能把主要的代码分享一下吗?谢谢!另外你上次回复中提到的生成 class 文件再自动编译,我理解应该是生成 java 文件,然后去自动编译吧?

牛逼,大牛

你好 考虑开源吗

王先生 回复

其实刚开始我也没有想到能够实现这个功能。我在网上看到一篇文章 “大概内容就是讲如何生成 class 文件并编译”。
用例转换成脚本也是这个思路,首先后台定义一些不同测试用例的模板,前台设计测试用例,然后把关键的测试用例数据作为参数传输给对应模板,最后用 io 把模板和参数生成 class 文件,再自动编译就可以了。执行的时候就有 java 去 run testng。

Cowen 回复

cowen :请问一下 “用例数据传入模板,使用 java 生成可执行文件” 这步主要是怎么实现的呢,能给点思路吗?谢谢!

思寒_seveniruby 将本帖设为了精华贴 03月09日 13:08
Cowen #17 · 2017年03月09日 Author
TavisD 回复

说得是,我就是想听听其他在使用的平台是怎么做的,我会根据提到的点进行完善

我觉得重点是数据初始化、清理、依赖接口、检查点字段嵌套重复、多个检查点。展示、管理这些比较好做

bauul 回复

1、怎么做 restful 自动化?网上 research 一篇,找到比较好的框架开始搭建(搭建 java 环境,熟悉 testng 和 restassured 等)
2、实现自动化之后就想怎么做封装,让普通用户也可以使用?(就要考虑测试数据存储(mysql),页面展示 jsp+js+bootstrap+echarts 等)
3、有思路之后,就开始一步一步实现,遇到问题就 debug 和 research,官网 + 热门的论坛 +stackfolw 基本就能解决错误问题

CC 回复

你 qq 多少

Cowen 回复

这不等于没说嘛,总有个 1,2,3,4,5 的步骤来吧,先做什么,后做什么,分享一下呢

楼主考虑开源吗

Cowen 回复

帅气,多谢,解决了我困扰的问题,后续我这边也是要做个类似平台的

Cowen #10 · 2017年03月08日 Author
CC 回复

后台使用 java 执行 testng
TestNG testng = new TestNG();
List suites = Lists.newArrayList();
suites.add("C:/test/javaProject/testFramework/testng.xml");//path to xml..
testng.setTestSuites(suites);
testng.run();

bauul 回复

我所有内容都来自网络

#4 楼 @cowen 再请教下,你这边 html 上点击执行一条 cass,这个请求传递到后台。后台是采用什么样的方式去执行这个 case?我目前没完全想明白

—— 来自 TesterHome 官方 安卓客户端

workhard 回复

前端是我的心中的痛。就是学不下去

厉害👍,我就一直懒得学习前端,请问使用 java 读取模板生成可执行文件是怎么做的?不是生成 test 类文件么

—— 来自 TesterHome 官方 安卓客户端

这是怎么一步一步做出来的,有没有书介绍这部分,求推荐一下

CC 回复

测试用例的配置数据保存起来,后台有各种模板,然后把用例数据传入模板,使用 java 生成可执行文件

虽然你没开源,你这边采取的手段是否是基于测试用例数据,再使用类似 vm 模板引擎自动生成 test 类文件?

—— 来自 TesterHome 官方 安卓客户端

wixed 回复

嗯,到时候会完善,特别是执行的页面要做成可配置的方式

没有看到 json schema validation 的验证

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册