一、UI自动化测试框架
Selenium是自动化工具,工具,工具!面试的时候不想再听到谁说用的测试框架是Selenium。
构成框架的组件,最起码应该具备以下的功能,才能够称为一个完整的自动化测试框架:
1. 日志
Java常用的日志工具有Log4j 、Slf4j 、Logback。
2. Report
博主用过ReportNG,或者将数据Statistics的数据写入excel文件、生成图表,需自主实现。
3. Source、Common
自主实现。
4. TestCase、TestData、TestSuite
多用TestNG管理Case和Suite。TestNG提供了@DataProvider注解,它可以管理一定量的数据代入测试用例依次执行,是数据驱动的雏形。@DataProvider注解的数据需要代码实现,如要读取csv、excel、txt等文件,则需要自主实现,有很多文章写这个,自行搜索查看便是。
5. Statistics
大部分测试框架不包含此部分,需要测试人员手动统计分析,可记录自动化测试用例执行结果数据,分析,自主实现。
6. Continuous
一般是借助其他工具如Jenkins自主实现。
二、UI自动化测试框架的分层结构
测试框架的实现,各有各的特色,适合产品或者公司的自动化测试框架,就是好的测试框架。这里只说一下常见的UI自动化测试框架的分层结构:基础层,对象层,操作层,用例层。
1. 基础层
这一层封装Selenium或其它工具的相关操作和一些工具类。
2. 对象层
先说一个概念,PO:PO模式,全称Page Object模式,是Selenium中的一种测试设计模式,主要是将每一个页面设计为一个Class,其中包含页面中需要测试的元素(按钮,输入框,标题 等),这样在写测试脚本时,可以通过调用页面类来获取页面元素。当页面某个元素id或者位置变化时,这时不用更改测试脚本,只用改下对应的页面类就行了。 这一层用来保存页面对象,这一层大大提高了测试框架的复用性和可维护性,在测试框架中起到核心作用,实现方法各不相同。
3. 操作层
这一层基于对象层的页面对象,实现页面上的相关操作,大部分都是基础操作,供用例层反复使用,降低维护成本。特殊操作多数只是用一次或者少次,在个别用例中单独实现即可。
4. 用例层
这一层是实际的测试脚本,为保持代码美观、可读性高,尽量多备注,并且不出现基础层代码如定位元素等等。
|