web接口测试实践回顾

Posted bluebirid

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了web接口测试实践回顾相关的知识,希望对你有一定的参考价值。

前段时间系统学习了测试专家虫师的《Web接口开发与自动化测试--基于Python语言》,自己也模仿完成了项目,收获颇丰。由于服务端没有错误日志输出,在定位错误、接口调试过程中,postman和fiddler起到了很大的作用。过去单独学习这两个工具,并没有感觉到它们的强大,果然,在项目实战中学习更有效率!

在已有项目的基础上,又对所有接口进行了优化,增加了10个接口:实现了http basic认证版本的接口和md5摘要认证版本的接口。另外,实现了自动发送测试报告邮件的功能。

接口测试还有一些常见的场景,例如获取cookie自动登录,对https接口处理,使用mock模拟等,这次项目暂时没有涉及到,未来完善。

回顾如下:

github地址:https://github.com/yulifromchina/InterfaceTest

一、项目成果展示

技术分享图片技术分享图片

技术分享图片

技术分享图片

技术分享图片

二、项目所用技术

开发平台:windows 10 x64 + pycharm + python3.6 + mysql 5.7.21

签到系统:django  2.0.1 + django-bootstrap3-9.1.0

测试框架:requests 2.18.4

三、项目具体介绍

1、发布会签到系统

发布会签到系统的功能包括:登录、发布会管理、嘉宾管理、签到功能

大致逻辑为:用户登录时向服务器发起Post请求,通过django的auth模块进行验证,并把用户信息存储在服务器session中。在登录的情况下,用户可以浏览发布会,嘉宾列表,以及进入发布会管理页面后签到。如果没有登录,则无法访问这些页面(通过django的login_required装饰器实现)。用户输入手机号签到,后台将手机号和发布会作为联合主键到后台数据库验证,并进行是否已签到、发布会是否已经结束等判断,最后返回签到结果。

以上逻辑均通过不同的路由以及回调函数进行响应,回调函数将数据从数据库取出,经模板渲染后返回给浏览器显示。

提供的接口如下:

技术分享图片

2、测试框架

测试框架的结构如下:

技术分享图片

对接口进行请求,使用了requests库;

case的组织,使用了unittest测试框架;

测试报告,使用了htmlTestRunner生成;

测试数据,使用了MySQL数据库存储;

邮件发送,使用了smtplib和email库。

 

每个接口包括若干个用例,每个接口的测试由一个py文件负责:

技术分享图片

四、项目总结

接口测试有一些专业的平台提供服务,例如三剑客接口测试平台,是使用现场的平台还是自己开发测试框架,或者二次开发,取决于项目的具体情况,没有绝对的好坏。通过实际完成接口,并对接口进行编写,加深了认识,相信能够更好的使用工具。使用django开发项目,快速且结构清晰。

项目中存在一个bug没有解决。在run_test.py中,目前不能raw_*.py, http_*.py,md5_*.py三个版本的15个用例一起运行,只能分三批运行。因为这三个批次的接口,往数据库中插入的是同一批数据,因此一起运行会造成数据污染。尝试在三次运行间进行了清空数据库再重新插入数据的操作,但是这个插入操作会失败。没有定位到原因。如果有大牛解决过类似情况,望指教!多谢!

 

 

 

 

以上是关于web接口测试实践回顾的主要内容,如果未能解决你的问题,请参考以下文章

接口测试 | 接口测试入门与实践

Jmeter接口测试案例实践

学习总结—JMeter实现web接口测试实践举例

高级测试必须掌握的接口测试工具实践postman

使用JMeter3.0实战之分布式并发测试以及web API接口测试

接口测试实践