测试用例流程设计
霍格沃兹测试开发
ceshiren.com
同学们大家好,今天我们继续来学习测试用例流程设计,测试用例流程设计是指在进行软件测试时,对测试用例的整体规划和组织的过程。它涉及到制定一系列测试用例,以确保对软件系统的各个方面进行全面、系统和有效的测试。
现有测试用例的问题
- 可维护性不高
- 低模块化性
- 高耦合性
- 缺乏可复用性
- 可读性较差
- 命名不清晰
- 缺乏注释和文档
- 不符合代码风格指南
- 稳定性较差
- 未处理异常
- 断言不足
- 依赖不清晰
现有的自动化测试用例问题是:可维护性不高、可读性较差、稳定性较差。可维护性不高指的是1低模块化性:测试用例的结构缺乏良好的模块化,测试逻辑可能混杂在一起,难以分离和更新单独的部分。2高耦合性:测试用例之间或测试步骤之间的耦合度高,一个测试用例的更改可能会影响其它测试用例,增加了维护的难度。3缺乏可复用性:测试用例中的代码无法轻松地在不同的测试场景中复用,导致了冗余和不必要的代码。可读性较差指的是1命名不清晰:变量、函数和类的命名不具备描述性,不清楚其胜任,降低了代码的可读性。2缺乏注释和文档:测试用例缺乏详细的注释和文档,不提供足够的信息来理解测试目的和预期结果。3不符合代码风格指南:测试用例的编写风格可能不符合团队或行业的代码风格指南,导致不一致的代码外观。稳定性较差指的是1未处理异常:测试用例没有适当地处理可能出现的异常情况,导致测试中断或不稳定。2断言不足:测试用例可能不包括足够的断言语句,以验证测试结果,从而无法捕获潜在的问题。3依赖不清晰:测试用例依赖外部因素(如环境、数据)的清晰性差,使得测试的稳定性受到影响。
用例结构设计
- 测试用例的编排
- 测试用例组织
- 测试步骤
- 前置条件
- 测试数据
- 操作和期望结果
- 清理操作
- 参数化测试
- 测试用例的项目结构
- 测试套件
- 目录结构
- 共享资源
- 报告和日志
- 版本控制
- 测试框架集成
下面我们来看一下用例结构设计,我们可以把结构设计分为两大类,用例的编排和测试用例的项目结构,测试用例的编排是指通过优化测试用例组织、测试步骤、前置条件、测试数据、操作和预期结果、清理操作以及合理的参数化。测试用例的项目结构指的是通过优化测试套件、目录结构、共享资源、报告和日志、版本控制以及测试框架的集成
自动化测试用例流程-回顾
- Pytest
- setup_method setup_class setup_module
- fixture
- Junit4
- @BeforeClass、@AfterClass
- @Before、@After
- TestNG
- @BeforeClass @BeforeMethod
- @BeforeGroup、@BeforeSuite
- Junit5:@BeforeClass @BeforeEach
通过回顾我们可以发现,通过控制测试用例的setup和teardown可以实现我们的测试过程的前置条件和清理还原测试环境的操作。
web 自动化测试-用例设计
类型 | 框架对应 | 作用 |
---|---|---|
前置 | setup_class/BeforeAll | 准备测试数据 实例的初始化 |
setup/BeforeEach | 恢复用例初始状态 数据清理(也可以在用例级别完成) |
|
后置 | teardown_class/AfterAll | driver 进程退出 |
teardown/AfterEach | 恢复用例初始状态 数据清理(也可以在用例级别完成) |
下面我们来看一下setup和teardown具体的使用方法,setup_class他的作用主要是通常用于初始化类级别的资源,如数据库连接、测试数据准备等,setup用于恢复用例初始状态或准备测试数据。teardown_class通常用于清理类级别的资源,如关闭数据库连接、释放资源等。teardown用于恢复用例初始状态或清理测试数据。
恢复用例初始状态
如图所示执行完用例1时,此时的状态处于C页面,但是我们的测试用例2需要从状态A页面开始,那么就会出现执行用例2中断的情况,而回复用例初始状态是通过用例1的后置步骤或者用例2的前置步骤将我们的状态恢复到我们需要的状态。
恢复用例初始状态
- 每条用例执行完成都
quit()
,虽然能够确保初始状态,但可能会影响执行效率。 - 可以封装一个方法,在每条用例执行完成后调用该方法,实现回到首页的操作,以优化上述问题。
在每条用例执行完成之后,如果不恢复到下一条用例的初始状态,可能会对后续用例的执行产生影响。我们的解决方案就是1每条用例执行完成都quit虽然能够确保初始状态,但可能会影响执行效率。2可以封装一个方法,在每条用例执行完成后调用该方法,实现回到首页的操作,以优化上述问题。
数据清理
- 调用业务接口:通常是一种高效的方式,能够确保以业务逻辑为基础的数据清理
- 通过 UI 自动化方式操作:可以模拟用户界面操作,适用于需要还原用户界面状态的情况
- 连接数据库执行 SQL(不推荐)
清理策略及方式对于测试用例的整体执行至关重要,以确保每条用例在执行前后都处于预期的初始状态,清理策略一般有在前置处理中执行和在后置处理中执行。常见的清理方式为1调用业务接口,这通常是一种高效的方式,能够确保以业务逻辑为基础的数据清理。2通过 UI 自动化方式操作,可以模拟用户界面操作,适用于需要还原用户界面状态的情况。3连接数据库执行 SQL 这个操作一般不推荐使用。
web 自动化测试项目结构
# python 项目
- page: 页面对象
- testcases: 测试用例
- utils: 公共工具
- log: 日志信息
# java项目
- main/java
- com.xxx.page: 页面对象
- com.xxx.utils: 公共工具
- resources: 日志配置
- test/java
- com.xxx: 测试用例
通过拆解我们的测试用例,大体可以分为page、testcase、utils以及log,从上述结构可以看出有一个page的页面对象,这就是我们后面要介绍的PO设计模式,通过PO设计模式来改良我们的测试用例。