问题的历史:
最初,自动化测试经常被"直接"编写,没有架构分层:验证逻辑和执行机制混合在一起。随着项目的增长,逐渐显而易见,这种框架和测试逻辑的混合会导致脆弱且难以维护的代码库。出现了关于责任分离的架构建议。
问题:
如果测试依赖于框架的内部实现或包含与环境交互的逻辑,任何更改都会迫使重新编写大量测试。测试用例复杂,代码重复,迁移到新框架或平台变得困难。
解决方案:
严格分离:
关键特点:
测试步骤可以直接写在测试中吗,如果数量很少?
不推荐。即使是短测试也可能膨胀,缺乏分层会迅速导致混乱。
测试场景应该知道启动机制吗(例如,何时初始化驱动程序)?
不应该。所有基础设施的细节应隐藏在框架层中。
在用例中硬编码测试参数(例如,url、凭证)是正常的吗?
不正常。测试参数应通过框架和环境的设置进行配置。
在项目中,测试直接调用Selenium驱动程序的方法,每个测试中重复连接到WebDriver。每个测试单独解析配置。
优点:
缺点:
测试使用框架的基本抽象:通用的初始化和拆卸,通过配置器进行参数的贯穿传递,测试逻辑通过高级方法表达。
优点:
缺点: