用例设计方法——软件自动化测试入门攻略(2)

发表于:2024-3-04 09:31

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:杨定佳    来源:51Testing软件测试网原创

  11.2  用例设计方法
  接口测试需要测试该接口的功能、参数、应用场景和环境对该接口的影响等情况。与单元测试不同的是,单元测试重点在内部逻辑上,而接口测试的重点在接口使用上,我们不能看到接口是如何实现的,只能通过入参和出参判断接口实现是否正确,因此接口测试是一种黑盒测试
  表11-1列出了Leadshop项目的登录接口。
表11-1  Leadshop项目的登录接口
  从表11-1列出的接口中可以看到,一个接口有接口地址、请求方式、请求格式、输入参数和输出参数,接口测试就是验证这几部分内容的正确性,因此测试用例的设计首先是分析接口的特点,然后通过一些设计方法更合理地覆盖接口各个部分。常见设计方法有等价类划分法、边界值分析法、错误推测法、因果图法、判定表驱动法、正交试验法、功能图法和场景图法。
  接口测试用例设计的重点在于功能性的业务逻辑检查和数据检查,数据检查是分析接口的输入参数,覆盖各种可能的场景。对于一个具体的接口测试,需要考虑的因素有预置条件、输入参数、业务场景、数据验证、后置条件、异常测试等,分别说明如下:
  ·预置条件:满足条件和不满足条件下接口的使用情况。
  · 输入参数:检查接口中的参数类型、必填参数、参数关联、参数值限制(空、null、范围、特殊字符)、参数数量、参数顺序。
  · 业务场景:一条业务线上的接口相互调用,例如下单支付业务,下单接口和支付接口关联使用。
  · 数据验证:对接口的输出内容进行验证,包括正常验证和异常验证。
  · 后置条件:也称数据销毁,接口执行后相应的数据可以正常处理。
  · 异常测试:构造异常环境或使用场景,验证接口可以正常使用。例如幂等(重复提交)、分布式测试、事物测试、大数量测试、环境异常的测试,环境异常包含负载均衡和冷热备份。
  · 其他:其他可能存在风险的地方,例如缓存信息、缓存加载方式、失效时间校验、权限等。通常来说,在设计测试用例时,先正向设计,后负向设计,最后异常设计。
  11.3  实战对象
  本节我们以Leadshop项目后台接口文档(https://doc.leadshop.vip/api.html)中Admin管理员下4个接口为对象进行实战练习,本练习以数据驱动模型实现单接口测试,暂不涉及接口依赖的用例。接口文档部分截图如图11-1所示。
图11-1  接口文档
  Admin管理员下有下载小程序包、修改密码、清理缓存、账户登录共计4个接口,账户登录接口见表11-1,下载小程序包、修改密码、清理缓存接口如表11-2~表11-4所示。
表11-2  下载小程序包接口
表11-3  修改密码接口
表11-4  清理缓存接口
  11.4  构建项目结构
  一个接口有名称、地址、请求方式、请求头、请求体和响应结果6个部分,测试人员虽然需要测试不同的接口,但每个接口都是开始于此6部分,也结束于此6部分。故接口测试非常契合数据驱动模型,因此我们可以将接口测试用例保存到Excel文件中,然后写一个驱动程序从Excel文件中读取测试用例并依次执行。
  确定好了测试模型,便可根据其特点构建出如图11-2所示的项目结构,本测试采用pytest单元测试框架,因此在项目结构中会有一些pytest相关的配置文件。
图11-2 项目结构
  项目目录结构中的文件说明如下:
  · case:测试用例目录。
  · case\change_pwd_case:修改密码的测试用例目录。因为修改密码后需要重新获取登录用户的认证,因此需要单独出来。
  · case\change_pwd_case成功修改密码.xlsx:密码可以修改成功的测试用例文件。
  · case\login_case:登录测试用例目录。登录测试不需要携带登录用户认证,和正常的测试用例有所区别,因此单独写测试用例。
  · case\login_case登录.xlsx:登录测试用例文件。
  · case\Admin管理员.xlsx:Admin管理员模块测试用例文件。
  · common:公用的模块、方法。
  · common\__init__.py:空文件,用于标识common是一个Python包。
  · common\read_config.py:读取配置文件config.ini文件内容。
  · core:核心内容。
  · core\__init__.py:空文件,用于标识core是一个Python包。
  · core\compare.py:自定义断言文件。
  · core\conftest.py:共享夹具。
  · core\get_case.py:获取测试用例文件。
  · core\send_request.py:发送接口请求文件。
  · core\test_case.py:测试用例文件。
  · download:测试过程中下载的文件目录,便于后续追踪下载内容。
  · report:测试报告目录。本例会采用Allure工具生产测试报告,该目录存放Allure测试报告。
  · __init__.py:空文件,用于标识所在目录是一个Python包。
  · config.ini:配置文件,用以设置常用的、基础的一些信息。
  · pytest.ini:pytest配置文件,用以设置pytest运行时的默认行为。
  · run.py:项目入口,执行该文件后,会运行所有的测试用例,并生成测试报告。
  根据构建的项目目录结构,相信读者对整个接口测试项目的运行已经有了一个整体思路,如图11-3所示。
图11-3  接口测试项目运行流程
  run.py文件作为项目入口,执行该文件将自动在test_case.py文件中查找测试用例函数/方法,测试用例函数/方法通过参数化的方法获取测试用例数据,测试用例数据是使用get_case.py文件封装的一些函数自动读取case目录下Excel文件中可执行的测试数据;获取到测试数据后,测试用例函数/方法通过conftest.py夹具实现前置操作,然后调用send_request.py文件中封装的一些函数实现接口请求并得到响应结果,再通过compare.py中自定义的断言函数将实际结果和预期结果进行对比得到测试结果,最后通过conftest.py夹具实现后置操作;在测试用例执行的过程中,会将下载的文件保存到download目录下,测试数据保存到report/json下。整个测试执行完成后,通过Allure命令将report/json下的JSON文件转化成可视化的XML报告,保存在report/xml下,之后用浏览器即可看到xml下漂亮的Allure测试报告。
查看《软件自动化测试入门攻略》全部连载章节
版权声明:51Testing软件测试网获得作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号