接口自动化测试文档
- 格式:docx
- 大小:61.13 KB
- 文档页数:15
接口自动化测试方案第1篇接口自动化测试方案一、前言随着信息化建设的不断深入,接口在各个系统间的数据交互中扮演着举足轻重的角色。
为确保接口稳定、可靠且高效地运行,降低系统上线后因接口问题导致的故障风险,提高软件质量,特制定本接口自动化测试方案。
二、目标1. 提高接口测试的效率,降低人工测试成本。
2. 实现对接口的全面覆盖,确保接口的稳定性和可靠性。
3. 建立可持续集成的自动化测试体系,为项目的快速迭代提供支持。
三、测试范围1. 系统内部接口:包括各模块间的数据交互接口。
2. 系统外部接口:包括与第三方系统或服务的接口。
3. 数据库接口:涉及数据库操作的接口。
四、测试工具及环境1. 测试工具:JMeter、Postman、Swagger等。
2. 测试环境:开发环境、测试环境、预生产环境、生产环境。
3. 数据库:MySQL、Oracle、SQL Server等。
五、测试策略1. 功能测试:验证接口的功能是否符合需求规格说明书。
2. 性能测试:评估接口在高并发、大数据量下的性能表现。
3. 安全测试:检查接口是否存在安全漏洞,如SQL注入、越权访问等。
4. 兼容性测试:验证接口在不同操作系统、浏览器、数据库等环境下的兼容性。
5. 异常测试:模拟各种异常场景,检查接口的容错性。
六、测试流程1. 需求分析:分析接口的业务需求,明确接口的功能、性能、安全等要求。
2. 测试设计:根据需求分析,编写接口测试用例。
3. 测试开发:搭建测试环境,编写自动化测试脚本。
4. 测试执行:在各个测试环境中执行自动化测试。
5. 结果分析:分析测试结果,定位问题原因,反馈给开发人员。
6. 跟踪验证:验证开发人员修复的问题,确保问题得到解决。
7. 测试报告:输出测试报告,包括测试覆盖率、通过率、问题列表等。
七、测试用例设计1. 根据接口文档,设计测试用例,包括正常场景、异常场景。
2. 测试用例应涵盖接口的功能、性能、安全等各个方面。
Page 1 of 1
Tencent and the Tencent logo are registered trademarks of Tencent Corporation. Copyright © 2010 Tencent. All rights reserved. 第三方应用自动化测试接口需求说明模版
说明:该文档由TX 测试人员填写,交由第三方公司来开发接口。
蓝色字体为说明部分,最后可以用接口功能标题生成目录,方便点击跳转到对应说明。
接口是否需要写死固定的几个openid ,请和PM 商讨并将结果告知第三方公司。
一.接口功能
1.优先级
(如:P0,P1,P2...,P0是表示接口的紧急度最高,依次类推)
2.接口功能详细说明
(这里尽量可以将接口作用描述的更详细一些,或者电话和第三方负责同事说明一下)
3.接口命名以及请求的参数说明
(该项非必填,一般是由第三方公司来定义,如果觉得有必要,也可以由TX 测试人员来定义,具体可以将接口参数以及取值列举说明一下)
接口命名
参数名称 参数功能 参数取值对应意义 举例:steal.cgi
type 偷取方式 1,表示单个偷
2,表示一键偷
...... ...... ......。
目录一、Jmeter的下载、安装 (1)1、下载:/(另:附件有安装包) (1)2、Jmeter的环境配置 (1)3、检验jmeter安装成功 (2)4、配置默认为中文(可以根据自己的需求) (2)5、运行jmeter (2)二、Jmeter简单接口测试 (3)1、添加线程组 (3)2、添加HTTP请求 (3)3、填写接口请求参数 (3)4、HTTP信息头管理器 (4)5、监听器-查看结果树 (5)三、接口测试中的参数依赖 (5)1、登录接口的响应结果 (5)2、正则表达式提取token (6)3、JSON提取器提取 (7)4、将提取的参数进行入参 (8)四、响应断言以及数据校验 (9)1、响应断言:校验接口是否响应成功,响应数据是否与期待结果匹配(接口是否请求成功) (9)2、数据校验:通过请求参数、响应内容,查询数据库对比数据入库的正确性 (10)五、上传文件 (13)1、抓取接口信息并填写 (13)一、Jmeter的下载、安装1、下载:/(另:附件有安装包)2、Jmeter的环境配置2.1安装JDK(jmeter基于Java环境)2.2配置jmeter环境变量JMETER_HOME C:\apache-jmeter-5.3(jmeter的安装路径)CLASSPATH %JMETER_HOME\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-2.0.jar;Path %JMETER_HOME%\bin;3、检验jmeter安装成功Jmeter –version4、配置默认为中文(可以根据自己的需求)找到bin目录中的jmeter.properties文件,修改language=zh_CN5、运行jmeter5.1、找到bin目录的jmeter.bat文件,双击打开5.2、打开CMD窗口,输入jmeter,回车(前提环境变量需要配置好)二、Jmeter简单接口测试1、添加线程组2、添加HTTP请求3、填写接口请求参数3.1、协议:http、https…等(此处可以为空)3.2、服务器地址:填写服务器ip地址3.3、端口号:有特殊声明的端口号就填写,默认为空3.4、请求方式:post、get、put、delete3.5、路径:对应的接口3.6、编码格式:utf-83.7、请求参数:接口定义的请求方式、定义的参数内容4、HTTP信息头管理器Jmeter在向服务器发送http请求的时候,往往需要一些验证的信息,比如token、cookie进行验证,一般都是放在请求头中(header)4.1、Content-Type表示具体请求中的媒体类型信息text/html :HTML格式text/plain :纯文本格式text/xml :XML格式image/jpeg :jpg图片格式application/json :json数据格式multipart/form-data :需要在表单中进行文件上传时,就用这个格式5、监听器-查看结果树主要用于查看接口请求结果,响应报文三、接口测试中的参数依赖在接口测试中,往往存在一些接口参数的依赖;如token,所以就需要在登录的时候,将响应报文中的token值保存起来,在需要用到token的接口再引用。
《接口自动化测试开发实战》教程教案章节一:接口自动化测试概述1.1 接口自动化测试的概念与意义1.2 接口自动化测试的发展与应用1.3 接口自动化测试的优势与挑战1.4 接口自动化测试工具与技术选型章节二:接口测试基础2.1 常见的网络协议及应用2.2 请求方法与状态码2.3 结构与参数传递2.4 响应数据格式与解析章节三:自动化测试工具介绍3.1 主流自动化测试工具比较3.2 JMeter介绍与安装3.3 Postman介绍与使用3.4 Python自动化测试框架介绍章节四:接口自动化测试实战4.1 创建测试项目及环境4.2 编写测试用例4.3 执行测试用例并与实际结果对比4.4 测试报告与分析章节五:接口测试优化与最佳实践5.1 测试用例设计原则5.2 测试数据管理策略5.3 测试脚本优化与维护5.4 持续集成与持续部署(CI/CD)章节六:测试用例设计与编写规范6.1 测试用例编写原则6.2 测试用例结构与要素6.3 测试用例分类与分层6.4 测试用例评审与维护章节七:请求与响应断言编写7.1 断言概念与作用7.2 常见断言方法与示例7.3 组合断言与逻辑断言7.4 自定义断言与扩展章节八:数据库操作与数据驱动8.1 数据库连接与操作8.2 测试数据准备与维护8.3 数据驱动原理与实现8.4 参数化测试与数据匹配章节九:接口性能测试9.1 性能测试概念与目标9.2 性能测试工具与方法9.3 响应时间、并发数与负载测试9.4 性能瓶颈分析与优化章节十:安全测试与稳定性测试10.1 常见安全漏洞与防护措施10.2 安全测试工具与方法10.3 接口稳定性测试策略10.4 监控与报警机制Implementing interface-automated testing 章节十一:测试环境与测试资源管理11.1 测试环境搭建与维护11.2 测试资源分配与管理11.3 环境一致性与版本控制11.4 测试环境监控与问题排查章节十二:持续集成与持续部署(CI/CD)12.1 CI/CD概念与流程12.2 常用CI/CD工具介绍12.3 自动化测试在CI/CD中的应用12.4 CI/CD实践案例与最佳实践章节十三:测试报告与数据分析13.1 测试报告与管理13.2 测试结果统计与分析13.3 测试趋势与可视化展示13.4 测试报告自动化与邮件通知章节十四:测试团队协作与沟通14.1 测试团队组织与管理14.2 敏捷测试与Scrum实践14.3 团队沟通工具与技巧14.4 跨部门协作与沟通策略章节十五:未来接口自动化测试趋势与挑战15.1 与机器学习在测试领域的应用15.2 测试自动化与智能化15.3 微服务架构与容器化测试15.4 法规遵从性与数据保护测试重点和难点解析本文档为您提供了一整套关于接口自动化测试开发的教程教案,内容涵盖了接口自动化测试的概述、基础、工具、实战以及优化等多个方面。
I.背景介绍1.简介功能测试、性能测试、GUI自动化回归测试已经能够满足我们的测试需求,保证网站质量,而随着产品功能越来越多、系统架构越来越复杂、新人越来越多,一些预想不到的缺陷出现在我们面前,我们必须要寻找一种更加有效的测试方法来适应当前的变化,保证产品的质量。
因此接口测试应运而生。
对于Web接口应用,包含浏览器与服务器交互的HTTP协议的接口和webService接口,软件测试人员在日常的测试工作中,需要大量的手动操作来验证接口的功能。
开发人员在开发过程中,需要访问其应用并且验证其功能是否正常运行,反复调试重复验证。
系统维护人员也需要经常访问其应用,以确保系统的正常运行。
如果某系统的接口较多,功能较为复杂,如上所述的这些操作就需要花费大量的时间和人力,如能引入自动化测试代替人工重复操作,将极大地提高团队的生产效率。
在这里,我们将介绍如何使用HttpClient框架完成接口自动化测试。
2.web接口自动化测试如今,大多数的应用软件是基于Web的应用程序并通过浏览器展示给用户并与之进行交互。
不同公司和机构组织都需要测试这些应用程序的有效性。
在一个高度交互性和响应的软件时代,许多组织及团队倾向于运用敏捷开发理论,自动化测试一定程度上成为了敏捷开发流程中不可或缺的手段。
所谓自动化测试,就是执行自动测试工具或者用某种程序设计语言编写程序,控制被测软件中的各种模块,模拟手动测试步骤,完成测试的过程。
测试自动化有很多优点,比如:频繁快速的迭代回归、高效的测试反馈、一致与重复性的执行、化繁为简的形式、弥补手工测试的可能遗漏缺陷等。
目前也有许多商业和开源的软件,可辅助面向Web接口自动化测试,如:HttpClient、HttpUnit、HtmlUnit、JwebUnit等。
HttpClient是一个功能丰富支持HTTP协议的客户端编程工具包,能够很好满足我们对接口的自动化测试。
II.协议请求1.HTTP协议HTTP协议即超文本传输协议,是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。
自动生成接口测试用例全文共四篇示例,供读者参考第一篇示例:自动生成接口测试用例是指通过自动化工具或脚本来生成接口测试用例,以提高测试效率和覆盖度。
接口测试是软件测试中的一个重要环节,主要是测试系统各个模块之间的数据传输是否正确、接口调用是否符合规范、数据格式是否正常等。
接口测试用例的编写是接口测试工作的核心内容之一,其质量和覆盖度直接影响着接口测试的效果和结果。
在传统的软件测试中,很多测试工作都是依靠人工来完成的,包括编写测试用例、执行测试用例、分析测试结果等。
但是随着软件的规模和复杂性不断提升,人工测试的效率和准确性都面临着挑战,特别是在接口测试中,需要测试大量的接口和数据组合,人工编写和执行测试用例的工作量较大,容易出现疏漏和遗漏。
自动生成接口测试用例成为了一种新的测试方法,能够提高测试效率和质量,缩短测试周期,降低测试成本。
自动生成接口测试用例的主要优势包括:1. 提高测试效率:自动生成接口测试用例可以快速生成大量的测试用例,覆盖接口的各种输入和输出情况,减少人工编写测试用例的时间和工作量。
2. 提高测试覆盖度:自动生成接口测试用例可以对接口的各种情况进行全面覆盖,包括正常输入、异常输入、边界条件等,确保接口测试的全面性和准确性。
4. 提高测试质量:自动生成接口测试用例可以避免人为因素对测试用例的质量产生影响,确保测试用例的完整性、准确性和一致性。
自动生成接口测试用例的实现方法主要有两种:基于规则生成和随机生成。
基于规则生成是指根据接口的规范和要求,通过设定一定的规则和条件,自动生成符合规则的测试用例。
可以根据接口的参数类型、取值范围、数据格式等,来生成各种情况下的测试用例。
随机生成是指通过随机数生成器来随机生成测试数据,模拟各种情况下的输入和输出,以检验接口的稳定性和健壮性。
自动生成接口测试用例的实现工具有很多,包括开源工具和商业工具。
常用的开源工具有Postman、SoapUI、Rest Assured等,这些工具提供了丰富的接口测试功能和插件,可以支持接口测试的各个环节。
接口自动化测试用例案例全文共四篇示例,供读者参考第一篇示例:接口自动化测试是指通过自动化测试工具对接口进行测试的过程。
在现代软件开发中,接口自动化测试已经变得越来越重要,因为它可以帮助开发人员及时发现并解决接口问题,确保系统稳定性和可靠性。
接口自动化测试的用例设计是其中的重要环节,本文将介绍一些接口自动化测试用例案例,帮助读者更好地理解和应用接口自动化测试。
1. 测试接口的响应时间在接口自动化测试中,测试接口的响应时间是非常重要的一个指标。
如果接口响应时间过长,可能会影响用户体验,甚至导致系统故障。
我们可以设计一个用例来测试接口的响应时间,例如:发送一个请求到接口,并记录下请求发送时间和接口返回时间,计算二者之间的时间差,从而评估接口的响应时间是否在可接受范围内。
2. 测试接口的数据一致性另一个重要的接口自动化测试用例是测试接口的数据一致性。
在现代系统中,不同的模块之间经常需要相互交互数据,如果数据一致性出现问题,可能会导致系统功能异常。
我们可以设计一个用例来验证接口返回的数据是否与预期数据一致,例如:发送一个请求到接口,并比对返回数据与预期数据是否一致,从而检查接口的数据一致性。
3. 测试接口的安全性在接口自动化测试中,测试接口的安全性是至关重要的一环。
如今,网络攻击日益猖獗,系统的安全性问题已经成为软件开发中的一大难题。
我们可以设计一个用例来测试接口的安全性,例如:发送一个恶意请求到接口,验证系统是否能够正确地拦截和处理恶意请求,从而检查接口的安全性。
通过以上几个接口自动化测试用例案例的介绍,我希望能帮助读者更好地理解和应用接口自动化测试,提高软件开发质量和效率。
接口自动化测试是现代软件开发中不可或缺的一环,希木读者能够认真学习和应用接口自动化测试技术,共同推动软件开发行业的发展。
第二篇示例:接口自动化测试用例案例随着互联网技术的发展,越来越多的软件系统采用了分布式架构,不同的模块之间通过接口进行通信。
I.背景介绍1.简介功能测试、性能测试、GUI自动化回归测试已经能够满足我们的测试需求,保证网站质量,而随着产品功能越来越多、系统架构越来越复杂、新人越来越多,一些预想不到的缺陷出现在我们面前,我们必须要寻找一种更加有效的测试方法来适应当前的变化,保证产品的质量。
因此接口测试应运而生。
对于Web接口应用,包含浏览器与服务器交互的HTTP协议的接口和webService接口,软件测试人员在日常的测试工作中,需要大量的手动操作来验证接口的功能。
开发人员在开发过程中,需要访问其应用并且验证其功能是否正常运行,反复调试重复验证。
系统维护人员也需要经常访问其应用,以确保系统的正常运行。
如果某系统的接口较多,功能较为复杂,如上所述的这些操作就需要花费大量的时间和人力,如能引入自动化测试代替人工重复操作,将极大地提高团队的生产效率。
在这里,我们将介绍如何使用HttpClient框架完成接口自动化测试。
2.web接口自动化测试如今,大多数的应用软件是基于Web的应用程序并通过浏览器展示给用户并与之进行交互。
不同公司和机构组织都需要测试这些应用程序的有效性。
在一个高度交互性和响应的软件时代,许多组织及团队倾向于运用敏捷开发理论,自动化测试一定程度上成为了敏捷开发流程中不可或缺的手段。
所谓自动化测试,就是执行自动测试工具或者用某种程序设计语言编写程序,控制被测软件中的各种模块,模拟手动测试步骤,完成测试的过程。
测试自动化有很多优点,比如:频繁快速的迭代回归、高效的测试反馈、一致与重复性的执行、化繁为简的形式、弥补手工测试的可能遗漏缺陷等。
目前也有许多商业和开源的软件,可辅助面向Web接口自动化测试,如:HttpClient、HttpUnit、HtmlUnit、JwebUnit等。
HttpClient是一个功能丰富支持HTTP协议的客户端编程工具包,能够很好满足我们对接口的自动化测试。
II.协议请求1.HTTP协议HTTP协议即超文本传输协议,是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。
《接口自动化测试开发实战》教程教案第一章:接口自动化测试概述1.1 接口自动化测试的定义与作用1.2 接口自动化测试的优势与挑战1.3 接口自动化测试的发展趋势1.4 本章小结第二章:接口自动化测试理论基础2.1 接口的基本概念与分类2.2 协议简介2.3 RESTful API设计原则2.4 测试用例设计方法2.5 测试工具选择与比较2.6 本章小结第三章:接口自动化测试工具实战3.1 JMeter简介与安装3.2 JMeter核心组件与功能3.3 JMeter测试计划编写与执行3.4 Postman简介与使用3.5 Python接口自动化测试工具(requests)3.6 本章小结第四章:接口自动化测试脚本编写4.1 Java脚本编写基础4.2 JMeter函数与断言使用4.3 Python脚本编写基础4.4 Python常见库在接口测试中的应用4.5 本章小结第五章:接口自动化测试项目实战5.1 项目需求分析与规划5.2 测试环境搭建与配置5.3 测试用例设计与实现5.4 测试脚本编写与优化5.5 测试报告与分析5.6 本章小结第六章:数据库接口自动化测试6.1 数据库接口测试的重要性6.2 常见数据库接口测试技术6.3 使用JMeter进行数据库接口测试6.4 使用Python进行数据库接口测试6.5 本章小结第七章:文件与接口测试7.1 文件接口测试概述7.2 使用JMeter进行文件与测试7.3 使用Python进行文件接口测试7.4 文件接口测试的常见问题与解决方案7.5 本章小结第八章:第三方接口调用与测试8.1 第三方接口的分类与调用方式8.2 使用JMeter进行第三方接口测试8.3 使用Python进行第三方接口测试8.4 第三方接口测试的注意事项8.5 本章小结第九章:接口安全测试9.1 接口安全测试的重要性9.2 常见安全漏洞及其防御措施9.3 使用JMeter进行接口安全测试9.4 使用Python进行接口安全测试9.5 本章小结第十章:持续集成与自动化测试10.1 持续集成概述10.2 Jenkins与自动化测试10.3 GitLab CI/CD与自动化测试10.4 使用Python进行持续集成10.5 本章小结第十一章:性能测试与压力测试11.1 性能测试概念与指标11.2 使用JMeter进行性能测试11.3 使用Python进行性能测试11.4 压力测试与稳定性测试11.5 本章小结第十二章:移动端接口自动化测试12.1 移动端测试概述12.2 使用Appium进行移动端接口测试12.3 使用Python实现移动端接口自动化12.4 移动端接口测试的挑战与解决方案12.5 本章小结第十三章:云服务与容器化测试13.1 云服务测试概述13.2 使用AWS进行云服务测试13.3 使用Docker进行容器化测试13.4 使用JMeter和Python进行容器化测试13.5 本章小结第十四章:测试团队协作与项目管理14.1 团队协作工具与实践14.2 使用JIRA进行项目管理14.3 使用Git进行版本控制14.4 测试团队沟通与协作14.5 本章小结第十五章:未来接口自动化测试趋势15.1 与机器学习在测试领域的应用15.2 测试自动化与的结合15.3 开源测试工具的发展趋势15.4 接口测试的未来挑战与机遇15.5 本章小结重点和难点解析接口自动化测试概述与作用、优势、发展趋势接口的基本概念与分类、协议、RESTful API设计原则测试用例设计方法、测试工具选择与比较JMeter与Postman的使用、Python接口自动化测试工具(requests)接口自动化测试脚本编写、Java与Python脚本基础、JMeter函数与断言、Python常见库应用接口自动化测试项目实战、需求分析、测试环境搭建、测试用例设计与实现、测试脚本编写与优化、测试报告数据库接口自动化测试、文件与接口测试、第三方接口调用与测试、接口安全测试性能测试与压力测试、移动端接口自动化测试、云服务与容器化测试测试团队协作与项目管理、未来接口自动化测试趋势、与机器学习在测试领域的应用接口自动化测试脚本编写,特别是Java与Python脚本的编写与优化接口安全测试的实施与防御措施性能测试与压力测试的策略制定与执行移动端接口自动化测试的特殊性与挑战云服务与容器化测试的实践与部署测试团队协作与项目管理的实际操作与机器学习在测试领域的应用前景与实践读者在学习过程中,应重点掌握接口自动化测试的基础知识,在实践中逐步克服这些难点。
一、实现接口自动化测试2.2 常用接口1. http接口走http协议,通过路径来区分调用方法,请求报文一般是key-value形式的,返回报文一般是json串,常用的是get和post方法来请求。
2. webservice接口走的soap协议,通过http传输,请求报文和返回报文都是xml格式的。
2.3 http登录接口文档范例2.4 获取接口关键信息1. 开发提供接口文档/接口规范(正规流程),如上接口文档范例;说明:如果没有接口规范/文档(不正规流程),需要使用抓包工具,如Fiddler、>wireshark、httpwatch或直接在谷歌或火狐浏览器F12等获取接口关键信息;2. 接口关键信息:协议类型:http/htts请求URL/IP:如:网址:https:///;ip:127.0.0.1端口:http默认端口:80,https默认端口:443或自定义端口请求方式:如post/get/put/delete表头信息:如内容类型Content-Type:application/json请求参数:注意参数的传参类型如json;参数的属性如名称、类型、是否必填,参数的个数;响应结果:注意输出内容的类型如json响应状态:响应状态码需特别注意,意因为做接口测试有时需覆盖所有状态返回状态描述1xx请求已被成功接收、理解、接受2XX成功,操作被成功接收并完成响应3xx重定向--要完成请求必须进行更进一步的操作4xx客户端错误--请求有语法错误或请求无法实现5xx服务器端错误--服务器未能实现合法的请求三、什么项目适合做接口自动化测试1. 任务需求明确,不会频繁变动2. 项目周期较长,回归测试频繁(>=5次),开展自动化确实能提升测试效率及质量3. 产出的效益高于投入4. 测试预留的时间比较充裕四、接口自动化关键点1. 开发测试脚本需充分考虑脚本的复用性2. 脚本与数据分离五什么时候可以做接口自动化1. 需求评审完毕,接口需求明确稳定2. 版本升级项目发布之前的全流程回归测试六、与开发同步进行接口用例脚本开发软件开发未完成,接口还无法调试,测试如果需要同步开发接口,需根据接口文档规范,利用MOCK SERVER等接口模拟工具模拟接口,从而进行接口自动化用例调试开发七、接口自动化测试的流程业务流程1. 评估投入与收益比,是否需要进行接口自动化2. 根据项目组成员的能力及项目属性,选取适当的自动化工具或开发语言3. 分析业务,在功能测试用例提取主业务场景4. 先开发一个主业务场景脚本,根据需要补充其他业务场景开发流程1. 提取脚本可重复项,封装简化脚本,利用公共类或公共函数等方法,提高脚本的利用率、可读性及可维护性2. 提取脚本中可变的参数,修改成变量3. 利用csv、Excel、ini、数据库、yaml等参数化数据信息,使业务与数据分离,实现数据驱动测试4. 引入日志,利于运行调试发现问题5. 添加断言并生成可视化报告6. 持续基础Jenkins,实现自动打包,按时发布并执行,生成结果邮件发送注:如果需要做接口测试平台还需要用到前端知识与python 框架知识。
I.背景介绍1.简介功能测试、性能测试、GUI自动化回归测试已经能够满足我们的测试需求,保证网站质量,而随着产品功能越来越多、系统架构越来越复杂、新人越来越多,一些预想不到的缺陷出现在我们面前,我们必须要寻找一种更加有效的测试方法来适应当前的变化,保证产品的质量。
因此接口测试应运而生。
对于Web接口应用,包含浏览器与服务器交互的HTTP协议的接口和webService接口,软件测试人员在日常的测试工作中,需要大量的手动操作来验证接口的功能。
开发人员在开发过程中,需要访问其应用并且验证其功能是否正常运行,反复调试重复验证。
系统维护人员也需要经常访问其应用,以确保系统的正常运行。
如果某系统的接口较多,功能较为复杂,如上所述的这些操作就需要花费大量的时间和人力,如能引入自动化测试代替人工重复操作,将极大地提高团队的生产效率。
在这里,我们将介绍如何使用HttpClient框架完成接口自动化测试。
2.web接口自动化测试如今,大多数的应用软件是基于Web的应用程序并通过浏览器展示给用户并与之进行交互。
不同公司和机构组织都需要测试这些应用程序的有效性。
在一个高度交互性和响应的软件时代,许多组织及团队倾向于运用敏捷开发理论,自动化测试一定程度上成为了敏捷开发流程中不可或缺的手段。
所谓自动化测试,就是执行自动测试工具或者用某种程序设计语言编写程序,控制被测软件中的各种模块,模拟手动测试步骤,完成测试的过程。
测试自动化有很多优点,比如:频繁快速的迭代回归、高效的测试反馈、一致与重复性的执行、化繁为简的形式、弥补手工测试的可能遗漏缺陷等。
目前也有许多商业和开源的软件,可辅助面向Web接口自动化测试,如:HttpClient、HttpUnit、HtmlUnit、JwebUnit等。
HttpClient是一个功能丰富支持HTTP协议的客户端编程工具包,能够很好满足我们对接口的自动化测试。
II.协议请求1.HTTP协议HTTP协议即超文本传输协议,是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。
●请求信息请求行:例如GET /images/logo.gif HTTP/1.1,表示从/images目录下请求logo.gif这个文件。
请求头:例如Accept-Language: en。
空行可选消息体:请求行和标题必须以<CR><LF>作为结尾(也就是,回车然后换行)。
空行内必须只有<CR><LF>而无其他空格。
在HTTP/1.1协议中,所有的请求头,除post外,都是可选的。
●请求方法HTTP/1.1协议中共定义了八种方法(有时也叫“动作”)来表明Request-URL制定的资源不同操作方式。
比较常用的方法有HEAD、POST、GET方法。
HEAD:向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。
这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。
POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。
数据被包含在请求体中。
POST请求可能会导致新的资源的建立和/或已有资源的修改。
GET:请求获取Request-URL所标识的资源。
HEAD方法和GET方法几乎是一样的,对于HEAD请求的回应部分来说,它的HTTP头部中包含的信息与通过GET请求所得到的信息时相同的。
利用这个方法,不必传输整个资源内容,就可以得到Request-URL 所标识的资源信息,该方法常用于测试连接的有效性,是否可以访问,以及最近是否更新。
在本文使用的接口自动化框架中,主要使用POST和GET方法发送请求,下面对这两种方法简单做一下比较:1、GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditPosts.aspx?name=test1&id=123456。
POST方法是把提交的数据放到HTTP协议包的Body中。
2、GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制。
3、GET方式提交数据,会带来安全问题,比如一个登陆页面,通过GET方式提交数据时,用户名和密码将出现在URL上,如果页面可以被缓存或者其他人访问这台机器,就可以从历史记录获得该用户的账号和密码。
●响应信息在接收和解释请求消息后,服务器返回一个HTTP响应信息。
HTTP响应也是由三个部分组成,分别是:状态行、响应头信息和响应正文。
状态行:包含HTTP-Version表示服务器HTTP协议的版本;Status-Code表示服务器返回的响应状态码;Reason-Phrase表示状态代码的文本描述。
响应头信息:包括通用头、请求头、响应头和实体头四个部分。
(具体内容可以去网上查阅相关内容)响应正文:响应正文就是服务器返回的资源的内容。
2.Soap协议接口自动化框架测试中,有些模块之间采用了Soap协议的请求方式,本节我们对Soap协议进行简单的介绍。
Soap协议即简单对象访问协议,是一种轻量的、简单的、基于XML(标准通用标记语言的一个子集)的协议,它被设计成WEB上交换结构化和固化的信息。
Soap使用基于XML的数据结构和超文本传输协议(HTTP)的组合定义了一个标准的方法来使用Internet上各种不同的操作环境中的分布式对象。
●Soap协议包含四部分封装:定义一个框架,该框架描述了消息中的内容是什么,谁应当处理它以及它是可选的还是必选的。
编码规则:定义了一种序列化的机制,用于交换应用程序所定义的数据类型的实例。
RPC表示:定义了用于表示远程过程调用和应答的协定。
绑定:定义了一种使用底层传输协议来完成在节点间交换封装的约定。
SOAP消息基本上是从发送端到接收端的单向传输,但它们常常结合起来执行类似于请求/ 应答的模式。
所有的SOAP消息都使用XML 编码。
一条SOAP消息就是一个包含有一个必需的SOAP 的封装包,一个可选的SOAP 标头和一个必需的SOAP 体块的XML 文档。
把SOAP 绑定到HTTP 提供了同时利用SOAP 的样式和分散的灵活性的特点以及HTTP 的丰富的特征库的优点。
协议结构Soap消息格式:<SOAP-ENV:Envelope><SOAP:HEADER>……</SOAP:HEADER><SOAP:Body>……</SOAP:Body></SOAP-ENV:Envelope>III.H ttpClient1.简介HTTP 协议可能是现在Internet 上使用得最多、最重要的协议了,越来越多的Java 应用程序需要直接通过HTTP 协议来访问网络资源。
虽然在JDK 的java net包中已经提供了访问HTTP 协议的基本功能,但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活。
HttpClient 是Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持HTTP 协议的客户端编程工具包,并且它支持HTTP 协议最新的版本和建议。
HttpClient 已经应用在很多的项目中,比如Apache Jakarta 上很著名的另外两个开源项目Cactus 和HTMLUnit 都使用了HttpClient。
现在HttpClient最新版本为HttpClient 4.3 (GA) ,在接口自动化测试框架中我们使用的版本为HttpClient 4.2.5。
2.安装在介绍HttpClient的功能之前,首先需要安装好HttpClient。
◆HttpClient 可以在/commons/httpclient/downloads.html下载。
◆HttpClient 用到了Apache Jakarta common 下的子项目logging,你可以从这个地址/site/downloads/downloads_commons-logging.cgi下载到commonlogging,从下载后的压缩包中取出commons-logging.jar 加到CLASSPATH 中。
◆HttpClient 用到了Apache Jakarta common 下的子项目codec,你可以从这个地址/site/downloads/downloads_commons-codec.cgi 下载到最新的common codec,从下载后的压缩包中取出commons-codec-1.x.jar 加到CLASSPATH 中。
3.功能介绍HttpClient 提供的主要的功能如下,要知道更多详细的功能可以参见HttpClient 的主页。
◆实现了所有HTTP 的方法(GET,POST,PUT,HEAD 等)◆支持自动转向◆支持HTTPS 协议◆支持代理服务器等4.基本功能使用●GET方法1、创建HttpClient的实例。
HttpClient httpClient = new HttpClient();2、创建GET连接方法的实例,在这里使用HttpGet方法。
在HttpCet的构造函数中传入待连接的地址。
HttpGet get = new HttpGet(url);3、调用第一步创建好的实例的execute方法来执行第二步中创建好的method实例。
HttpResponse httpResponse = httpClient.execute(get);4、读取response。
从返回的response中获取状态码、响应正文等信息。
5、释放连接。
client.getConnectionManager().shutdown();6、对得到后的内容进行处理。
●POST方法POST方法用来向项目的服务器发送请求,要求它接受被附在请求后的实体,并且把它当作请求队列中请URL所指定资源的附加新子项。
调用HttpClient中的HttpPost方法与HttpGet方法类似,除了设置HttpPost 的实例与HttpGet有些不同之外,剩下步骤相同。
1、创建HttpClient的实例。
HttpClient httpClient = new HttpClient();2、创建POST连接方法的实例,在这里使用HttpPost方法。
在HttpPost的构造函数中传入待连接的地址。
HttpPost post= new HttpPost(url);3、给post实例填充表单的值。
例如一个登录接口,需要id和passwdNameValuePair[] data = { new NameValuePair("id", "youUserName"),newNameValuePair("passwd","yourPwd") };4、调用第一步创建好的实例的execute方法来执行第二步中创建好的method实例。