自动化测试:理论

输入-过程-输出

--通过测试脚本和测试数据来完成测试过程,并比较测试结果,进而形成测试报告。

Web自动化测试

自动化测试过程:

  • 明确测试范围:确定需要进行自动化测试的功能和颗粒度,编写测试脚本(最后的输出:比如sanity test的case有哪些,regression的case有哪些)
  • 明确脚本执行策略:执行周期,比如sanity case需要每个新版本构建之后立马执行一遍
  • 编写测试框架:确定脚本分层-数据文件,公共文件,page文件,test case文件,封装公用功能,比如重新封装find element
  • 编写测试脚本并调试
  • 执行测试脚本并输出测试报告
  • 分析测试报告
  • 维护测试脚本

测试脚本编写基本流程:定位元素-操作元素-获取结果-比较结果-输出报告

 

自动化测试理论

理论1:数据驱动-测试数据与测试脚本分离

优点-

  • 可读性强
  • 可扩展性强
  • 强大的第三方支持
  • 脚本修改简单

实例-

  • Python+Selenium UI自动化测试:使用Excel存取数据
  • JavaScript+Selenium UI自动化测试(Nightwatch):会将统一类型的数据放在一个单独的文件中,然后去读取
  • Jmeter 性能测试和接口测试:使用Csv存取数据
  • TestNG 单元测试:@DataProvider注解

理论2:测试脚本分层:测试描述,测试步骤,测试对象分离(业务流程,功能点,操作组件)

优点-

  • 可复用性高
  • 独立性强,依赖低
  • 快速定位查找问题

实例-

  • Cucumber UI自动化测试:feature文件(.feature 测试描述),step文件(.rb 功能点实现)
  • JavaScript+Selenium UI自动化测试(Nightwatch)& Java+Selenium UI自动化测试:pageObject模式

PageObject模式

基本原理: 将页面的元素定义(类属性)和元素操作(类方法)封装成一个类,在case文件中直接调用。如果一个page很庞大,也可以将一个page封装成多个组件

优点-

  • 实现了测试脚本分层(测试用例和页面对象分离):代码可读性强,代码可复用,代码维护简单

BasePage模式

优点-

  • 进一步实现了测试脚本分层:代码可读性强,代码可复用,代码维护简单

 理论3:测试case之间耦合性要低

优点:

  • 提高自动化测试脚本的稳定性

如果case之间关联性太大,下一个case依赖上一个case的输出:

  • 并发测试会报错
  • 上一个case报错,直接影响下一个case的执行,但实际上,下一个case的功能并不受上一个case的影响,这样就测不到下一个case了

 

UI自动化测试常遇到的问题

1. 如何去提升用例的稳定性?用例在运行过程中经常会出现不稳定的情况,也就是说这次可以通过,下次就没办法通过了。

  • 常见的不稳定因素就是定位不到元素:
    • 使用sleep(5) - 牺牲测试脚本执行时间
    • 使用隐性等待和显性等待
    • 使用try捕捉异常,并进行相应处理 - 比如可以换种方法
  • 减少函数冲突(低耦合)

2. 如何去提升用例执行的速度?

  • 优化等待时间:尽量少使用sleep,implicitly wait, 多使用WebDriverWait
  • 减少不必要的元素操作
  • 使用并发测试

 

posted @ 2019-03-22 15:09  Catherine-Wang  阅读(595)  评论(0编辑  收藏  举报