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

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

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 条回复 时间 点赞

没有看到 json schema validation 的验证

wixed 回复

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

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

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

CC 回复

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

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

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

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

workhard 回复

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

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

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

bauul 回复

我所有内容都来自网络

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();

Cowen 回复

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

楼主考虑开源吗

Cowen 回复

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

CC 回复

你 qq 多少

bauul 回复

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

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

Cowen #17 · 2017年03月09日 Author
TavisD 回复

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

思寒_seveniruby 将本帖设为了精华贴 03月09日 13:08
Cowen 回复

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

王先生 回复

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

你好 考虑开源吗

牛逼,大牛

Cowen 回复

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

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 回复

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

你好,能写个 demo 出来吗?

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

记得更新打赏二维码

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

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

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

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

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

求源码路径

Cowen 回复

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

是否会开源呢?

考虑开源吗?

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

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

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

需要 登录 後方可回應,如果你還沒有帳號按這裡 注册