做自动化测试刚入门的时候,我们一般用Jemter配置请求url/port,请求方式,然后编写一条条case, 将对应的case中创建符合的请求body_sample
一般的后台接口,需要考虑的无非是如下:
正确的请求,验证数据库中对应的数据被创建/更新,验证Response中返回码匹配
异常的请求,对应下面的图
必传字段,一一验证,
请求传入的必传字段1未传
请求传入的必传字段2未传
...
必传字段传空,一一验证,
请求传入的必传字段1传空,验证返回xxx
请求传入的必传字段2传空,验证返回xxx
请求传入的字符串超过最大长度限制,
比如name字段最大允许20个长度,请求传入的name是21个中文字符,验证返回xxx
考虑英文模式,需要接口说明文档先澄清中英文长度是否一致,因为比如sqlserver数据库中,varchar()和nvarchar()对中英文区别
...
请求传入的方式为get,不是规定的post,验证返回xxx
请求传入的请求体是json格式
========================================================
有没有遇到过以下一些变更,
比如请求中的必传字段,忽然又增加了一个,
比如请求中的入参的名称,从telephone更改成了mobile
那请求体如果本身字段已经很多了,那这时候要逐个更改测试用例中的请求体,是不是特别费事儿
而开发只需要将POJO中的实体,增加一个属性,用对象来进行接收即可,
只需要话费几分钟的时间,
而测试将测试数据逐个修改,既耗费时间,又不学习新技能,这样的蠢活儿做多了,自己都快怀疑人生。
那我们能够动态地生成测试用例和测试数据吗?
只要多动脑,就可以。基于上面的想法,我就开发了以下的测试平台,可以通过输入接口的入参和入参的类型,动态生成测试用例名称和测试用例的数据。目前是json格式的body。
https://www.88bugs.com/bug/login
如下注册接口,需要6个入参,其中5个入参是必传参数。
我只需要在平台中,填写入参名称,入参Sample,入参最大长度,就可以让平台替我们生成测试用例。
依次点击页面上的button,生成对应类型的测试用例
然后点击下载的button,将自己的测试用例下载下来
有了测试用例和测试数据,想进行运行,就很方便了,你可以用Jmeter运行,可以用java+httpclient,可以用python+requests等等
当然,我这边做的还不全,可以继续新增mobile应该有的格式,比如1打头且必须长度11位且全是数字,比如邮箱需要含有@和.等,将这些常用的检验封装成方法,以后直接拿来调用
如果,考虑到请求体中通常会有加密字段,根据各种规则加密,可以在写一些方法,若干个字段通过某种方式加密等等
目前只是个demo,需要更多的时间,和api 接口的特征,再来进行开发
原文地址:https://www.cnblogs.com/qianjinyan/p/11100874.html