自动化测试框架是一个集成体系,这个体系中包含测试功能的函数库、测试数据源、测试对象识别标准以及可重用的模块。
一、线性测试
线性测试:通过录制或编写脚本,一个脚本完成一个场景(一组完成功能操作)通过对脚本的回放来进行自动化测试。这是早期进行自动化测试的一种形式。
优势是每一个测试脚本都是独立的,任何一个脚本文件拿出来都能单独运行;缺点是用例的开发和维护成本高,这种模式下数据和脚本是混在一起的,如果数据发生变化,脚本也需要进行变更。
二、模块化与库
模块化与库:在实际自动化测试过程中,比如发帖、回贴操作,都需要进行登录操作,采用线性脚本,每个脚本都需要登录代码,此时可以把重复的部分写成一个公共的模块,需要的时候进行调用,提高编写脚本的效率
这么做有两方面的优势:
提高开发效率,不用重复的编写相同的脚本;
方便代码维护,假设登录模块发生了变化,只用修改公共的登录脚本就行,其它调用登录模块的脚本不需要做任何修改。
编写testNG测试类:
三、数据驱动
数据驱动:是自动化的一个进步,从本意来讲,数据的改变(更新)驱动自动化的执行,从而引起结果改变。相当于把测试数据进行参数化,输入数据的不同从而引起输出结果的变化。
举例:
driver.get("https://www.baidu.com");
String[] searchtxt = new String[]{"12306","火车票","selenium"};
for(String search:searchtxt){
driver.findElement(By.id("kw")).sendKeys(search);
driver.findElement(By.id("su")).click();
Thread.sleep(3000);
driver.navigate().back();
}
从上面的例子可以看出,不管我们读取的是列表、字符串还是txt、csv等文件,都可以实现数据与脚本的分离,也就是参数化。
使用表格进行参数化:
当需要同时使用多个参数的时候,使用之前提供的方式就不太方便,比如,要参数化一个注册表单,表单需要填写的信息有用户名,密码,年龄,邮箱等,这个时候可以通过表格表单来解决该问题。
1、创建userinfo.xls文件,如下图:
2、利用java第三方工具包poi工具读取execl
3、读取后给testng提供测试数据
使用函数进行参数化:
函数可以预先给参数化赋值,借助这个特性,可以通过函数调用的方式进行参数化。
四、关键字驱动
关键字驱动测试是数据驱动测试的一种改进类型,它将测试逻辑按照关键字进行分解,形成数据文件,关键字对应封装的业务逻辑。
主要关键字包括三类:被操作对象(Item)、操作(Operation)和值(value),依据不同对象还有其他对应参数。关键字驱动的主要思想是:脚本与数据分离、界面元素名与测试内部对象名分离、测试描述与具体实现细节分离。
关键字驱动测试方法把测试脚本的创建分成两个阶段:计划阶段和实现阶段。
计划阶段:分析应用程序,并决定哪些对象和操作会被测试过程使用到,决定哪些操作需要使用个性化的关键字来提供额外的功能,从而完成清晰的业务操作,并且最大化测试的效率和可维护性。
实现阶段:创建对象库,对象库中每一个对象都能唯一对应被测试应用程序上的界面对象。开发业务层面的关键字和功能指令库,用于驱动测试应用程序的各项功能,实现自动化测试。
QTP 、 robotframework 、selenium IDE 等自动化工具就是典型的关键字驱动(填表格)
下面二张图是robotframework中的截图: