30

谈Rest接口自动化测试(12.23)

 4 years ago
source link: http://blog.sina.com.cn/s/blog_493a84550102z6d4.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Nbamauf.jpg!web

在19日写的自动化测试文章里面曾经谈到过接口自动化测试,这篇文章做为补充。

要知道原来对于接口的测试,我们经常会采用类似SoapUI,Postman等工具进行测试,或者再定制些脚本让基于上面工具录制的脚本能够自动运行。在我们的SOA管控平台里面也会做接口的自动化测试,而这部分功能实现即基本全部是自己写定制代码来实现,并不具备太好的通用性。

今天专门针对Http Rest接口来谈下接口自动化测试的方法实现。

基于Java+TestNG+Rest Assured进行自动化测试

可以看到TestNG和Rest Assured是两个用于自动化测试的独立类库,这种方法偏白盒测试,需要自己编写测试代码,但是灵活性却相当高,同时可以和类似Jekins工具集合,当然也就可以和我们DevOps平台集成。

Rest-Assured 是一个测试Restful Web Service的Java类库,我们可以创建高度定制的HTTP请求以发送到Restful服务器。这使我们能够测试各种各样的请求组合,依次测试核心业务逻辑的不同组合。Rest-Assured库提供了验证从服器收到的HTTP响应的功能。例如我们可以验证状态码,状态信息,标题甚至是响应的正文。这使Rest-Assured成为一个非常灵活,可用于测试的Java库。

而TestNG是一个开源自动化测试框架,其灵感来自JUnit和NUnit,TestNG还涵盖了整个核心的JUnit4功能,但引入了一些新的功能,使其功能更强大,使用更方便。优势:支持依赖测试方法,并行测试,负载测试,局部故障;灵活的插件API;支持多线程测试;可以看到TestNG不仅仅可以测试Rest接口,也可以测试标准的Java API接口方法。

https://www.cnblogs.com/wade-xu/p/4229805.html

注:上面这篇文章可以看到采用TestNG实现接口自动化测试,同时进行扩展,将测试脚本管理和测试数据管理分离。同时测试数据全部体现在Excel中。从Excel中读入测试输入,同时将测试接口输出到Excel中。

https://my.oschina.net/u/4112294/blog/3037471

注:上面这篇文章谈到TestNG和Rest Assured相结合如何进行接口自动化测试,同时如何和Jekins持续集成工具集成,将测试结果报告进行输出。

Rest Assured 自带支持对JSON、xml的解析,同时也提供了类似hasITems ,is,equalTo等静态方法供使用。尽管Rest Assured 提供了校验方法,但是在实际API自动化测试过程中,因为往往需要校验的字段非常多,建议还是直接先把要校验的JSON字段解析出来,再通过TestNG提供的Assert类进行校验。

对于Rest Assured的参考网站如下:

官方网站: http://rest-assured.io/

gitHub: https://github.com/rest-assured/rest-assured

帮助文档: https://github.com/rest-assured/rest-assured/wiki/Usage

javadoc: http://www.javadoc.io/doc/io.rest-assured/rest-assured/3.0.2

LuckyFrame开源测试平台

LuckyFrame测试平台是一款免费开源的测试平台,最大的特点是全纬度覆盖了接口自动化、WEB UI自动化、APP自动化,并且支持分布式测试。

既然是一个完整的测试平台,那么自然会提供测试用例管理,测试数据管理,测试执行,质量管理,测试结果和测试报告查看等相关的功能。这个平台提供在线的Demo可以查看。

LuckyFrame自动化测试框架分为两个项目,一个服务端项目(LuckyFrameWeb),一个客户端项目(LuckyFrameClient),服务端项目主要负责自动化过程的管理,比如用例管理、测试任务管理等等。客户端其实就是测试执行机,主要负责测试用例以及任务的执行。

Web项目主要分为系统管理、UTP、 质量管理、测试工具\测试环境管理等模块。

具体演示地址: http://www.luckyframe.cn/page/lfdemo.html

这个平台感觉有些思路还是可以借鉴,在前面DevOps整个子系统划分的文章里面我也谈到,对于测试管理既可以是一个简单的模块放在DevOps支撑平台里面,也可以是一个独立的子系统,然后再实现和DevOps支撑平台的集成。

Http Runner自动化测试框架

HttpRunner 是一个基于 Python 开发的测试框架,2018年python开发者大会上,了解到HttpRuuner开源自动化测试框架,采用YAML/JSON格式管理用例,能录制和转换生成用例功能,充分做到用例与测试代码分离,相比excel维护测试场景数据更加简洁。在此,利用业余时间研究这个框架去实现接口自动化测试。

HttpRunner 是一款面向 HTTP(S) 协议的通用开源测试框架,只需编写维护一份 YAML/JSON 脚本,即可实现自动化测试、性能测试、线上监控、持续集成等多种测试需求。

7bMBZvn.jpg!web

https://v1.httprunner.org/

设计理念

充分复用优秀的开源项目,不追求重复造轮子,而是将强大的轮子组装成战车

遵循约定大于配置的准则,在框架功能中融入自动化测试最佳工程实践

追求投入产出比,一份投入即可实现多种测试需求

核心特性

继承 Requests 的全部特性,轻松实现 HTTP(S) 的各种测试需求

测试用例与代码分离,采用YAML/JSON的形式描述测试场景,保障测试用例具备可维护性

测试用例支持分层机制,充分实现测试用例的复用

测试用例支持参数化和数据驱动机制

使用 skip 机制实现对测试用例的分组执行控制

测试请求支持完善的 hook 机制

借助辅助函数(debugtalk.py),在测试脚本中轻松实现复杂的动态计算逻辑

基于 HAR 实现接口录制和用例生成功能(har2case)

结合 Locust 框架,无需额外的工作即可实现分布式性能测试

执行方式采用 CLI 调用,可与 Jenkins 等持续集成工具完美结合

测试结果统计报告简洁清晰,附带详尽统计信息和日志记录

具有可扩展性,便于扩展实现 Web 平台

HTTPrunner可以应用于一些简单的接口测试,或者是不会有大改动的接口的回归测试,这样也挺方便的。但是对于一些复杂的测试不如采用Rest Assured功能强和灵活,毕竟Rest Assured基于Java,可以灵活进行Java代码脚本的扩展。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK