手机网站免费做推广,门户网站建设工作,学电脑培训多少钱,企业网站图片上传1、引言 1.1 文档版本 版本 作者 审批 备注 V1.0 XXXX 创建测试方案文档 1.2 项目情况 项目名称 XXX 项目版本 V1.0 项目经理 XX 测试人员 XXXXX#xff0c;XXX 所属部门 XX 备注 1.3 文档目的 本文档主要用于指导XXX-YY项目常用接口自动化测试…1、引言 1.1 文档版本 版本 作者 审批 备注 V1.0 XXXX 创建测试方案文档 1.2 项目情况 项目名称 XXX 项目版本 V1.0 项目经理 XX 测试人员 XXXXXXXX 所属部门 XX 备注 1.3 文档目的 本文档主要用于指导XXX-YY项目常用接口自动化测试工作的开展。本文档的主要目的在于提供项目接口自动化测试的技术方案、实施方案和计划方案等。
2、接口自动化实施目标 2.1 实施原则 XXX-YY项目采用接口自动化测试主要目的是为了应对迭代版本测试过程中的重复工作任务以期达到效果如下
降低测试成本提高测试效率更频繁地执行覆盖重要接口提供更高的准确性和一致性节约时间成本 虽然能达到上述预期效果但实际实施过程中需要注意的是接口自动化的高效应用对于被测系统有着更高的要求也需要遵循合理的方法流程现总结如下
接口自动化的实施应该被用于解决测试过程中高重复性的工作很大一部分是用于回归测试老的功能接口否则其本身工作量投入会大于其收益所以不能盲目对所有接口或功能追求自动化。对于提测版本自身稳定性需要有一定程度的保障。过于频繁的接口变动会加大后续接口自动化的实施难度增加自动化脚本维护地成本。接口自动化的整体实现应采用分布进行测试过程中优先覆盖功能稳定且比较重要的接口进而逐步扩展到整体项目的接口回归。接口自动化测试是一个长期的过程随着项目版本的不停迭代优化项目本身的接口也会不断优化或新开发所以后续自动化测试脚本的代码维护和调优也具有可观的工作量。 2.2 接口自动化测试范围 系统范围 自动化实施阶段 被测模块 功能接口范围 第一阶段 登录获取tokenYY标签页 第二阶段 阶段范围 这里我们优先测试一下登录的接口和一些插入XXX功能的接口。 2.3 接口自动化测试任务
制定测试方案
脚本编码前需要对项目有一个整体把握合理预估接口数量与复杂度。结合版本迭代时间预估自动化脚本开发时间并制定出相应的接口自动化测试方案。
提取分析测试点
根据前面写好的接口自动化测试范围分析每个接口的测试点包含请求方式传入参数请求头返回状态返回数据等。这个过程中需要和相对应的开发对接清楚在测试范围内的接口的相关信息并提前在postman中逐一确认调通必要时生成相应的测试文档或编写进入测试用例中。
搭建测试框架 此次接口自动化测试框架采用的是以Python语言为脚本开发语言选用unittest接口测试框架。目的希望达成可配置能自动运行脚本自动生成测试报告并将生成的测试报告发送到指定邮件。
编写脚本代码 脚本首次实现不需要覆盖到每个接口。先预计挑选几个重要接口进行覆盖测试等整体测试框架搭建好后整体流程确认调通无误后再后续维护完善脚本覆盖更多的功能接口。
持续集成 同上初次脚本代码完成后需要对现有自动化脚本进行升级持续集成开发不断完成尚未覆盖到的接口将这些接口加入到自动化测试的范围内使得整体自动化程度进一步加深更大程度上节约人力和时间成本。
脚本维护 脚本维护是在整体自动化脚本阶段性完成后将现有生成的交付物归档整理好给相应的负责人管理并进行阶段性的更新整理维护。包含项目日常版本迭代维护过程中对接口有改动的部分和后续新加入接口得自动化覆盖等。
3、接口自动化技术选型 3.1 整体体系 结合测试金字塔从下到上依次是单元测试服务测试用户界面测试以及XXX-YY项目本身的流程特性考量本次自动化实现主要是以接口自动化的形式来开展。整个自动化脚本以 Python3.X 中 requests 库为核心机制以 unittest 为测试组织以 HTMLTestRunner 生成最终测试报告Jenkins 实现持续集成并选取 Python3.X 作为编程语言实现。 3.2 核心技术 3.2.1 接口自动化执行库--Requests 首先Requests 是使用 Python 语言编写基于 urllib采用 Apache2 licensed 许可证的 HTTP 库。它比一般的 urllib 等库更加方便、简洁可以节约我们大量的工作完全满足HTTP 测试需求总结为一句话Requests 是 Python 实现的简单易用的 HTTP 库。其次Requests 库安装和导入非常方便。 pip3 install requests ## 安装 Requests 库 import requests ## 导入 Requests 库到项目中 我们可以使用该库实现以下各种方法 requests.get(https://url.cn) # GET请求 requests.post(http://url.cn) # POST请求 requests.put(http://url.cn) # PUT请求 requests.delete(http://url.cn) # DELETE请求 requests.head(http://url.cn) # HEAD请求 requests.options(http://url.cn) # OPTIONS请求 3.2.2 测试组织和断言机制--unittest unittest 模块是 Python 中自带的一个单元测试模块我们可以用来做接口自动化代码级别的测试组织和断言机制。其中比较重要的小组件模块有TestCaseTestSuitTestLoaderTextTestRunnerTextTestResult等。 TestCase用来编写逐条的测试用例是所有测试用例的基类他是 unittest 模块中最基本的组成单元。一个 testcase 就是一个测试用例是一个完整的测试流程包括测试前的环境搭建准备 setUp执行测试代码和断言机制以及测试一条用例完成后的环境还原 tearDown 等。 TestSuit多个TestCase就组成了一个TestSuit测试用例集这是用来存放一条一条测试用例的集合。 TestLoader是用来将逐条的测试用例 TestCase 加载到用例集合 TestSuit 中其中加载的方式有多种就是从脚本项目中寻找到单独的用例创建他们的实例然后加载到一起组成TestSuit再返回一个TestSuit的实例。 TextTestRunner是用来执行用例集 TestSuit 中的测试用例。 TextTestResult用来保存测试结果包含执行了多少条测试用例成功与失败用例的条数等信息。 示意图如下网络来源图 3.2.3 测试报告生成--HTMLTestRunner 当我们批量执行完用例集 TestSuit 中的接口用例后生成的测试报告是dos端文本格式展示的不是很直观这里我们引入一个第三方库--HTMLTestRunner使用这个第三方库我们可以生产成 HTML 网页格式的测试报告。 3.2.4 持续集成机制--Jenkins 这里我们脚本持续集成选择 Jenkins 来实现通过使用 Jenkins我们能够实现脚本自动化执行包含定时执行自动化测试脚本和自动化脚本运行后的测试报告发送到指定的邮箱中。 3.3 框架思想 3.3.1 封装思想 整个接口自动化测试脚本采用面向对象的封装思想尽量将一些可配置的模块单独提取出来便于后续操作配置使得整体项目更加灵活多变便于后续地迭代维护和二次开发。封装思想主要体现在测试环境可配置测试用例可导入测试数据和脚本分离文件路径采用相对路径表示等具体我们会在实际编码分层中得到体现。 3.3.2 数据驱动实现 数据驱动这里我们采用的是 Python 中的装饰器--DDTData Driven Tests来体现。通过他我们可以复用我们的脚本代码达到数据驱动测试的目的。官方对DDT的描述是DDT数据驱动测试允许您通过使用不同的测试数据运行一个测试用例并使其显示为多个测试用例。 这里官方网站中对DDT的介绍做一个简单描述。首先DDT主要是由一个类装饰器 ddt用于我们脚本中的TestCase子类和两个方法装饰器用于我们想要批量处理的测试数据分别是 data这里需要保持提供参数和被测参数个数一致和 file_data将从JSON 或者 YAML 文件中加载测试数据。其次关于data修饰的方法传入的参数会被当做一个整体传入如果这些参数像是元组一类的参数那么你必须将他们分解开传入到你的测试中。另外你可以使用另一个装饰器 unpack来解压缩分解你的参数为多个参数。附DDT官方文档Welcome to DDT’s documentation! — DDT 1.5.0 documentation
4、测试环境需求 4.1 硬件环境 目前暂未涉及到性能相关或者需要分布式执行的内容因此对硬件要求不是很高日常办公硬件即可。如果后续有涉及性能相关内容硬件环境需要再另外的性能测试方案中体现。 4.2 软件环境 软件相关 版本号 备注 Python v3.7 脚本编码语言为 Python3.x PyCharm v2016.3.3
5、人员进度安排 5.1 职责分配 组别/人员 职责 备注 5.2 进度安排 测试任务 负责人 开始时间 备注 自动化测试方案制定 接口用例编写 自动化测试环境搭建 自动化测试框架搭建 自动化脚本代码编写 持续集成实现 测试报告输出 脚本二次维护开发 5.3 交付物管理 交付物 负责人 备注 《自动化测试方案》 自动化框架 自动化脚本代码 测试执行报告 Python接口自动化测试零基础入门到精通2023最新版