Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >接口测试平台代码实现48: 自动异常测试-1

接口测试平台代码实现48: 自动异常测试-1

作者头像
我去热饭
发布于 2022-05-19 01:02:05
发布于 2022-05-19 01:02:05
55000
代码可运行
举报
文章被收录于专栏:测试开发干货测试开发干货
运行总次数:0
代码可运行

本功能属于番外,不是必须的。长度大概3章节。难度不高,也算给大家休息一下。

这个功能是什么意思呢?简单点说,就是一个接口保存好之后,你保存的请求数据都是正常的。但是错误的用例也就是无效等价类中,具体参数格式不同的要怎么测呢?正常来说有以下几种类型:整形,字符串,单字符,超长字符串,为空,全空格,有中文,纯英文,含标点符号,数组,sql注入,不符合需求规则的 等等等等。一个超全面的接口测试,几乎要把所有参数都依次替换成这些不同的格式来请求,看看是否会引起服务器报错甚至更加严重的后果。

当我们用手工来测试的时候,这几乎是不可能办到的事,举个例子,假如接口有10个字段,要替换的各种不同格式测试数据是20个,那么你一共要测试10 * 20 = 200个测试用例。但是真的有人这么测么?现实中基本没有。原因就在于这个成本太高了,性价比极低。

在我们传统的测试理论-11种用例设计方法中,哪怕一个简单的功能都可能要写出几百条甚至上千条用例,如果真的可以实现如此全面的覆盖,理论上没有bug会遗漏了。但是实际中无法做到真正覆盖的根本原因在于国内的高节奏敏捷迭代的大环境,这种工匠精神,细细打磨的事注定做不起来。不过技术是不断发展的,高成本的痛点早晚会被技术所解决,测试同学们也不要指望着说国内it行业的那么多大神总会有人来解决,因为他们的精力被放在了更加重要的事上,这个行业只能靠我们自己想办法了。

我在之后的各种章节中,会有意无意的讲解这些降低成本的新解决方案。

比如这个接口异常自动测试功能,我们的做法其实就是用代码简单的进行依次替换,比如10个字段,我们用20个测试数据依次替换的时候,其他9个字段保持用户保存在接口库中的正确值。然后请求20次,每次的结果如果出现问题,那么很显然极大概率就是这个字段的问题。这也是集成测试的半个思想。

那么为什么要做这个非必须的功能呢?因为我们做的好歹也是个接口测试平台,那就要有平台的样子,各种新工具,新设计 只要业务有帮助,我们就上。在系列一开始的时候就说过,我们做的是平台,所以不要去和postman这种cs单机工具去比,也不要和jmeter去比性能测试,也不要和charles/fiddler去比抓包,也不要和jenkins去比监控,我们的优势和特点是:多人协作,历史保存,约束流程,符合公司内的小工具和设计,接口管理等一系列的综合体。比如这个自动异常测试功能,就是其他工具不具备的。我们之后还会讲许多这种新的技术功能。

好,现在我们打开P_apis.html,找到异常测试的按钮,给它加上onclick,

函数名我们就叫做error_test,传入接口id做为参数。

我们在下面找个风水好的地方,声明这个函数:

不要着急写,我们先考虑一下,我们测试完之后,这个巨量的测试结果要显示在哪?肯定应该有个div来承载这些返回值,所以我们先写好这个div:

这个新div的id我叫做error_div,style属性呢直接复制调试层的div即可:

这个div默认同样也是隐藏的,在我们的js函数error_test中,我们给div变成显示状态即可。

如图,我们现在要考虑一些事情:

  1. 这么巨大的返回值量,一次请求基本是不可能把请求体返回来的。比如有100次请求,我们最好是发送100次请求,每次只获取一个返回值,依次显示到这个div里,所以我们是先把div给显示出来,再循环发送100次请求,每次得到返回值,都展示在这个div中即可。
  2. 那我们可以先做好前端的样式,先展示一次请求的返回值展示的demo看看。然后再在js中让其自动生成所有次请求的展示效果。

div中我们如下设计:

如上图,我手动写了三段请求的展示效果,然后我们看看如何:

貌似还不错,那让我们接下来继续开发吧..

因为我们每次发送请求,传给后台的参数都是替换后的,这就意味着我们要在前端js里处理 复杂的替换功能:

我们可以先只完成这个复杂的替换代码,不真的去请求后台。

我们在一开始传入这个js的参数中只有接口id,当我们进行n次请求时,后台是可以根据这个id来拿到接口的一切数据的,但是我们要测的是真实是不同的请求体,所以我们现在还需要原始的请求体,原始的请求体配合上 要替换的测试数据,才能组装成最新的请求体 。然后和接口id一起给到后台。

那么在我们调用这个js函数的onclick里,加上原始请求体吧:

这里要进行注意的是,这个单双引号,千万别加错了!

同样js函数也要加上:

现在我们还缺少什么呢?就是要替换的数据何在?

我们的设计是给出默认的,用户还可以根据需要自行修改。所以存放的应该是一个可修改的input框。

在我们的div中加上这个输入框吧:

我们给它写上预置的几个值:

注意我们前面忘记增加了文案颜色为黑色的属性设置,这里补上了:

看看效果:

可复制的源码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{# 异常值测试 #}
<div id="error_div" style="display: none;border-radius:5px;width: 80%;
position: absolute;left: 10%;top: 10%;background-color: #3c4043;box-shadow: 4px 4px 8px grey;
color: white;padding-left: 10px;">
    <h4>接口:<small id="error_api_name"></small> 的异常值测试结果如下:</h4>
    <strong>待替换数据:(用英文逗号隔开)</strong>
    <input id="ready_error_data" type="text" style="color: black;border-radius: 5px;width: 99%"
    value="'a',123,'',' ','./?*&^','中文'"
    > <br><br>
    
    <span>替换:username -> 123</span>
    <textarea style="width: 99%;height: 50px;border-radius: 5px;color: black">
    </textarea>

    <span>替换:username -> "aaa"</span>
    <textarea style="width: 99%;height: 50px;border-radius: 5px;color: black">
    </textarea>

    <span>替换:username -> "哈哈哈"</span>
    <textarea style="width: 99%;height: 50px;border-radius: 5px;color: black">
    </textarea>

</div>

好,到这为止。今天的前端样式算是完成了。

大家可以自行稍微修饰优化。明天继续本功能实现

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-09-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试开发干货 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
接口测试平台代码实现52: 自动异常测试-5
找到这个error_play函数,我们已经替换好了请求体,那么接下来就把新请求体和接口id传递给后台即可
我去热饭
2022/05/19
8420
接口测试平台代码实现52: 自动异常测试-5
接口测试平台代码实现106:登录态接口-2
大部分内容我们仍然可以借鉴普通接口调试层的内容,所以打开P_apis.html,找到那个登陆态的div,开始进行添加内部控件,但是也不能全都照搬过来,有一些就不需要,比如接口名字。而因为这个接口一个项目基本也就设置一次,所以优化便利性这种事的优先级不高,精力还是留给那些使用频率高的功能上吧
我去热饭
2022/05/19
1K0
接口测试平台代码实现106:登录态接口-2
接口测试平台代码实现20: 首页完善和项目模块1
本节开始,我们依然是简单优化了一下首页。首页作为我们的练习版,承载了太多 ....
我去热饭
2022/05/19
3860
接口测试平台代码实现20: 首页完善和项目模块1
接口测试平台代码实现101:图片优化和GraphQL-1
之前有小伙伴反馈一个问题。说每次刷新页面,个人头像的图片都会全屏显示,闪烁一下再回到正常位置和大小。用个可怕的头像的时候尤其吓人。
我去热饭
2022/05/19
2820
接口测试平台代码实现101:图片优化和GraphQL-1
接口测试平台代码实现50: 自动异常测试-3
本节开始之前,先解决下关于调试层遗漏的一个设计缺陷。就是当已经打开了一个接口的调试层后,如果直接点击其他接口的调试层便会出现显示错误。这类的问题非常多,我们最好是直接根本上绕过去。
我去热饭
2022/05/19
4810
接口测试平台代码实现50: 自动异常测试-3
接口测试平台代码实现12:用户管理系统的后台代码-登录
上节,我们尝试制作了一个登陆页面前端,有的小伙伴反馈说有点跟不上前端开发这块,这是正常的,而且公众号又不是什么直播课程,是没有跟不跟的上之说,哪怕一周敲出来一节课的内容也无所谓。不过的确前端开发对我们测试来说一直是一块黑洞,很少有人掌握这里的技术,或者说我们做出来的东西有点丑,不过这正常,如果好看的话,基本都去做前端开发了。
我去热饭
2022/05/19
1.4K0
接口测试平台代码实现12:用户管理系统的后台代码-登录
接口测试平台代码实现番外:主页终焉-1
好了,不知不觉,该平台已经跨过了130章的教程,主要功能已经实现过半,一些同学也开始实际项目中使用起来,各种提出的改进建议 优化也都接踵而至,其中最多的就是主页,请求改版。
我去热饭
2022/05/19
2440
接口测试平台代码实现番外:主页终焉-1
接口测试平台代码实现56:首页重构-4
本节继续开发首页右侧的显示效果,可能有的同学觉得这里节奏太慢了,不怕,咱养肥再看。
我去热饭
2022/05/19
1.5K0
接口测试平台代码实现56:首页重构-4
接口测试平台代码实现145: 平台主题-夏日清凉4
如图,给最外层的div的class上box,内部div或其他标签变白或半透明背景色。
我去热饭
2022/05/19
2890
接口测试平台代码实现145: 平台主题-夏日清凉4
接口测试平台代码实现147: 平台主题-夏日清凉-终
本节我们重新做这个全局公共变量的页面,因为只做外表样式,所以不会懂script的脚本代码,其实改动不算大,大家直接复制下面的源码即可:
我去热饭
2022/05/19
1660
接口测试平台代码实现147: 平台主题-夏日清凉-终
接口测试平台代码实现149:加密算法的增删改查
我们目前要做的加密算法是一个实体,或者说一个表达式。那么它就自然而然的要考虑下面几点:
我去热饭
2022/05/19
3360
接口测试平台代码实现149:加密算法的增删改查
接口测试平台代码实现番外:主页改版-4
我们这里准备当用户进入这个首页的时候,就自动带进来4个字段。count_***** 所以我们现在去views.py中找到child_json,来添加这个4个字段。
我去热饭
2022/05/19
3520
接口测试平台代码实现番外:主页改版-4
接口测试平台代码实现番外:主页改版-7
现在来看左上方区域,用的还是我们早期的设计,一大片空白和一句位置不好的欢迎语,所以本节我们来简单改造下左上顶 区域。
我去热饭
2022/05/19
2020
接口测试平台代码实现番外:主页改版-7
接口测试平台代码实现11: 用户管理模块设计和开发
上节,我们已经做完了首页,那么针对于一个平台来说,这并不仅仅是一个有界面的工具/脚本,而是实实在在可多人协同使用的平台。那么就必然不可缺少 用户概念。
我去热饭
2022/05/19
7740
接口测试平台代码实现11: 用户管理模块设计和开发
接口测试平台代码实现64: 多接口用例-4
首先打开P_cases.html,找到这个设置按钮,给它加入onclick:
我去热饭
2022/05/19
5180
接口测试平台代码实现64: 多接口用例-4
接口测试平台代码实现98:全局域名-5
如上图,我们开辟一块空间,用来存放全局域名,整体内容,基本和全局请求头类似,所以我们依然是复制粘贴,然后改各个标签的id和内部其他字段数据。
我去热饭
2022/05/19
6270
接口测试平台代码实现98:全局域名-5
网页更换主题以及绘制图形js代码实现
HTML代码实现: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>换肤主题</title> <link rel="styles
汪凡
2019/03/01
1.8K0
【JavaEE初阶】博客系统的前端页面设计
css部分: 由于四个网页中有共同的导航栏等部分,所以我们可以将公用的部分写入一个common.css中 common.css:
xxxflower
2023/10/16
2220
【JavaEE初阶】博客系统的前端页面设计
js写时钟实现钟摆效果,js制作动态时钟特效
季春二九
2023/07/16
1.2K0
Spring Boot使用websocket实现聊天室
先看效果:这里面demo用的是原生js跟html,方便打包一体化,在效果上我更倾向于使用vue、react等进行页面开发
余生大大
2022/11/02
9440
Spring Boot使用websocket实现聊天室
推荐阅读
相关推荐
接口测试平台代码实现52: 自动异常测试-5
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验