• 在自动化测试中使用TestNG【第 4 章 接口自动化测试 4.1 HTTP 简介4.2 部署待测程序4.3 手工测试用例设计】


    第 4 章 HTTP 接口自动化测试

    4.1 HTTP 简介

    在 TCP/IP 中,HTTP 属于传输层协议。HTTP 采用「请求—应答」模式,并且该协议是无状态的,即后续的处理如果需要用到前面的信息,则必须重传。HTTP 通过 SSL/TLS 加密成为 HTTPS,与 HTTP 相比,HTTPS 的安全性更好,但传输速度不及 HTTP

    HTTP 中有多种请求方法

    1.GET 方法

    GET 方法用于获取指定资源,可理解为「读取」资源。在 GET 方法的 URL 中可以携带参数,携带参数的格式为「key1=value1&key2=value2&key3=value3

    2.POST 方法

    POST 方法用于创建或修改指定资源,比如常见的提交表单或上传文件等。POST 方法既可以在 URL 中携带参数,也可以在请求体中携带参数。POST 方法和 GET 方法是最常用的两种 HTTP 请求方法

    3.PUT 方法

    与 POST 方法一样,PUT 方法也用于创建或修改指定资源,区别在于,PUT 方法是幂等的,即调用一次与调用多次的效果一样;而 POST 方法是非幂等的,即调用多次效果可能有差异

    4.DELETE 方法

    DELETE 方法用于请求服务器删除指定的资源

    5.OPTIONS 方法

    OPTIONS 方法一般用于检测服务器支持的请求方法,响应报文中包含一个名为 Allow 的响应头字段,该字段的值表示了服务器支持的 HTTP 方法

    6.CONNECT 方法

    CONNECT 方法一般用于代理服务器。比如,服务器使用 HTTPS 进行数据传输,且浏览器需要代理服务器,那么浏览器首先使用 CONNECT 方法以明文方式向代理服务器发送目标服务器的 IP 地址和端口,在代理服务器与目标服务器建立连接后再进行后续的数据传输。这样做的好处是代理服务器不会破坏 HTTPS 传输过程的安全性

    在客户端发起 HTTP 请求后服务器会进行响应,不同的响应码对应不同的场景。响应码由 3 位数字组成,第一个数字代表当前响应的类型

    1XX——提示信息,服务器的临时响应,此时客户端应继续发起请求

    2XX——成功,请求已被服务器成功处理,比如 200 OK

    3XX——重定向,需要客户端进行后续操作才能达成目的,比如 302 Found

    4XX——客户端错误,客户端请求发生错误,比如 404 Not Found

    5XX——服务器错误,服务器处理正确请求时发生错误,比如 500 Internal Server Error

    4.2 部署待测程序

    1.安装 JDK

    在即将部署待测程序的服务器PC上安装 JDK

    2.部署待测程序

    笔者的 GitHub 下载待测程序,程序名为 httpinterface-0.0.1-SNAPSHOT.jar,下载后放在服务器上,执行以下命令运行即可

    java -jar E:httpinterface-0.0.1-SNAPSHOT.jar

    上述命令把本地电脑作为了服务器,且把待测程序放在 E 盘根目录,读者可根据实际情况替换以上路径。运行成功后如图 4-1 所示

    4.3 手工测试用例设计

    4.3.1 分析待测接口

    在做接口测试时,需要以接口文档作为标准。接口文档一般以 Word 文档、Excel 表格或接口文档服务器(例如Eolinker)等形式呈现。下面以 Excel 表格形式给出待测程序的接口文档,文档内容如表 4-1 所示

    表 4-1

    这是一个简单的接口文档,在实际项目中,接口文档应该更为规范

    1.RESTful 接口分析

    待测程序有两个 RESTful 接口

    /mobilePhone GET 接口:入参为手机型号,接口功能为通过手机型号获取手机信息,包括手机品牌、手机型号和手机操作系统

    /mobilePhone POST 接口:入参为手机信息,接口功能为保存手机信息

    2.SOAP 接口分析

    待测程序只有一个 SOAP 接口,入参为手机型号,接口功能为通过手机型号获取手机信息,包括手机品牌、手机型号和手机操作系统

    SOAP 接口的功能和上面的/mobilePhone GET 接口的功能是一样的,这样编写待测程序的目的是方便读者比较两种接口的差异。RESTful 接口一般基于 JSON 传输数据,而 SOAP 接口基于 XML 传输数据,因此 RESTful 接口的效率更高,这也是目前 RESTful 接口更为流行的原因之一

    4.3.2 测试用例设计

    接口测试常用的工具有 JMeter、Postman 和 SoapUI 等,无论使用哪个工具,都应提前做好接口测试用例设计

    接口测试用例设计应该从入参、返回值、接口逻辑、性能和安全等各个方面考虑。这里以入参作为示例设计手工测试用例,后面会将这部分手工测试用例转换为自动化测试用例

    1.RESTful 接口测试用例设计

    (1)/mobilePhone GET 接口

    ① 参数必填项

    ② 参数长度

    接口文档未提及参数长度,理论上 GET 请求没有参数长度限制,但我们可以提交一个相对较长的参数

    Case 4:model=「01234567890123456789012345678901234567890123456789」——返回空

    ③ 参数组合

    在多个参数的接口中,参数可能相互响应或制约,因此对参数组合的用例设计必不可少。本接口不涉及(因为只有一个参数

    ④ 参数规则

    一般特殊的参数会有相应规则,比如手机号、身份证号或统一社会信用代码等。本接口不涉及

    ⑤ 参数枚举

    有些参数只接收几个固定的参数值,这类参数在服务端大多用枚举定义,这种情况下需要测试每种枚举值。本接口不涉及

    综合以上各种情况,/mobilePhone GET 接口一共设计了 4 条手工测试用例

    (2)/mobilePhone POST 接口

    ① 参数必填项

    ② 参数长度

    接口文档未提及参数长度,理论上 POST 请求没有限制请求体长度,但我们可以提交一个相对较长的参数

    这里没有对 os 参数做参数长度测试,稍后会说明原因

    ③ 参数组合

    本接口不涉及

    ④ 参数规则

    本接口不涉及

    ⑤ 参数枚举

    os 参数代表操作系统,目前主流的手机操作系统是 Android 和 iOS。接口文档示例中 os 的值为「ANDROID,在 Java 中枚举用大写表示,故推测该字段在后台以枚举方式定义

    os 的值为「ANDROID,上述已有用例覆盖,因此不再单独设计用例进行覆盖

    综合以上各种情况,/mobilePhone POST 接口一共设计了 11 条手工测试用例

    2.SOAP 接口测试用例设计

    由于待测程序中 SOAP 接口的功能和上面的/mobilePhone GET 接口的功能是一样的,因此手工测试用例设计参考/mobilePhone GET 接口,不再赘述。

  • 相关阅读:
    js,JavaScript,a标签onclick传递参数不对,A标签调用js函数写法总结
    Java两大测试方法Junit和TestNG的比较
    java简单的测试方法执行了多少时间
    利用Chrome的Performance工具排查页面性能问题(原叫timeline)
    P3317 [SDOI2014]重建(Matrix-tree+期望)
    P2221 [HAOI2012]高速公路(线段树)
    P2473 [SCOI2008]奖励关(期望)
    P3302 [SDOI2013]森林(主席树+启发式合并)
    bzoj3932 / P3168 [CQOI2015]任务查询系统(主席树+差分)
    P2219 [HAOI2007]修筑绿化带(单调队列)
  • 原文地址:https://www.cnblogs.com/MarlonKang/p/14205022.html
Copyright © 2020-2023  润新知