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

cowen · 发布于 2017年3月07日 · 最后由 infy001 回复于 2017年5月12日 · 2730 次阅读
本帖已被设为精华帖!

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
功能界面截图
步骤一:接口的导入和维护

步骤二:接口用例维护


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


步骤四:报告


共收到 28 条回复
96

没有看到 json schema validation的验证

96
32wixed 回复

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

11090

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

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

96
11090hu_qingen 回复

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

2562

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

Dd68af

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

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

96
Dd68afmrkuxx 回复

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

11090

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

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

96
2562carl 回复

我所有内容都来自网络

96
11090hu_qingen 回复

后台使用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();

11090
32cowen 回复

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

96

楼主考虑开源吗

2562
32cowen 回复

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

Db42eb
11090hu_qingen 回复

你qq多少

96
2562carl 回复

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

3331

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

96
3331tavisdxh 回复

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

104 seveniruby 将本帖设为了精华贴 3月09日 13:08
2249
32cowen 回复

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

96
2249wanglha 回复

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

5cd03a

你好 考虑开源吗

96

牛逼,大牛

2249
32cowen 回复

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

96

是生成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());
}

}

96

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

5cd03a
32cowen 回复

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

你好,能写个demo出来吗?

96

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

104

记得更新打赏二维码

3920

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

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