自动化测试的框架
软件自动化测试的框架和工具的发展大致将经历以下4个阶段。
线性测试。
模块化与库。
数据驱动。
关键字驱动。
下面将以京东商城登录界面为例,说明4种框架的特点。
测试步骤如下。
(1)输入用户名。
(2)输入密码。
(3)单击“登录”按钮。
(4)验证是否成功登录并进入首页。
1.线性测试
线性测试通过录制对应应用程序的操作,产生了线性脚本,对齐进行回放来进行自动化测试。
线性测试是自动化测试的最早期的一种形式,由工具录制并记录操作的过程和数据,形成脚本。通过回放来重复人工操作的过程。在这种模式下数据和脚本混在一起,几乎一个测试用例对应一个测试脚本,维护成本很高。而且即使界面的简单变化也需要重新录制,脚本可以重复使用率低。
如果要实现京东商城登录的测试步骤,测试脚本的伪代码如表格所示,这里假设京东的账号为“jingdongUser1”,密码为“jingdongPwd1”。
线性测试伪代码
步骤 | 伪代码 |
1 | Input “jingdongUser1” into 用户名 textbox |
2 | Input“jingdongPwd1”into 密码textbox |
3 | Click 登录 Button |
4 | If“Home page"exists then |
5 | Pass the test |
6 | Else |
7 | Fail the test |
8 | End if |
2.模块化与库
为了增强脚本的重用性,降低测试脚本的维护成本,产生了模块化与库的思想。
它将测试分为不同的区域。这种框架要求把对应程序各个模块的测试操作、检查等过程封装为各个函数,形成库文件(SQABasiclibraries,APIs,DLLs等),这些库文件可以被测试用例脚本直接调用。通过这样的方式,产生可重用的函数或库文件,各个功能可独立维护,并能重复使用。
3.数据驱动
可以看到,模块化与库很好的解决了用例重用性的问题,但是不难发现,用例中测试的操作和测试数据是放在一起的,一旦需要对大量不同的数据进行测试,就得重新编写大量的用例。例如Login1()、Login2()、Login3()。
为了解决这个问题,数据驱动就诞生了,它将测试用例中的测试数据和操作分离,数据存放在另外的文件中进行单独的维护。通过这样的方式,可以快速增加相似测试,完成在不同数据情况下的测试。
4.关键字驱动
将脚本于数据彻底分离,提高了脚本的使用率,大大降低了脚本的维护成本。虽然数据驱动框架解决了脚本于数据分离的问题,但并没有将被测对象于操作分离。
关键字驱动框架是在数据驱动框架的基础上改进的一种框架模型。它将测试逻辑按照关键字进行分解,形成数据文件与关键字对应封装的业务逻辑。关键字主要包括3类:被测试对象(Object)、操作(Action)和值(Value)。该框架能实现界面元素名于测试内部对象名分离、测试描述与具体实现细节分离。
但这种关键字驱动也有缺点,就是很难处理复杂的逻辑,编写的用例会受到限制。
5.混合驱动
如果仔细查看这些框架,不难发现,虽然框架在不断的发展,但这种发展并不是一种更新换代的模式,而是一种互相补充的模式。纵观线性测试,模块化与库、数据驱动、关键字驱动4种框架,它们谁也不能淘汰谁,所以出现了第5种框架:混合驱动。它将前4种框架灵活的融合到一起,互相发挥作用。这种混合驱动也是实际测试中最常用的框架。
联系客服