关于自动化测试数据驱动和关键字驱动的理解
一句话先分清
数据驱动:代码不变,换数据。
关键字驱动:代码不变,换步骤。
例子:测登录
1. 数据驱动
就是1个测试方法 + Excel里的多组账号密码。
Excel里有3行数据:
| username | password | 预期结果 |
|---|---|---|
| admin | 123456 | 登录成功 |
| admin | wrong | 密码错误 |
| (空) | 123456 | 请输入用户名 |
代码只写1个方法,循环用这3组数据跑3遍:
java
@Test(dataProvider = "loginData") public void testLogin(String username, String password, String expected) { 输入用户名(username); 输入密码(password); 点登录按钮(); 断言(页面提示 == expected); // 逻辑完全一样,只是数据不同 }👉一句话:同一套动作,喂不同的数据,看结果对不对。
2. 关键字驱动
就是把每一步操作起个名字(关键字),用例变成一串关键字的组合。
比如定义:
openBrowser= 打开浏览器input= 输入内容click= 点击check= 检查结果
然后测试用例在Excel里写成这样(像剧本一样):
| 序号 | 关键字 | 参数1 | 参数2 |
|---|---|---|---|
| 1 | openBrowser | https://xxx.com | - |
| 2 | input | 用户名框 | admin |
| 3 | input | 密码框 | 123456 |
| 4 | click | 登录按钮 | - |
| 5 | check | 页面标题 | 首页 |
代码里实现每个关键字具体干啥(findElement、click、getText...),然后程序逐行读Excel执行。
👉一句话:把“我要做什么”写在Excel里,底层代码去执行。不懂代码的人也能写自动化用例。
面试时这样说(30秒讲清楚)
面试官问:数据驱动和关键字驱动有什么区别?
“数据驱动就是数据变,代码不变。比如测登录,我把10组账号密码放在Excel里,代码只写一套登录逻辑,自动跑10遍,每遍用不同数据。
关键字驱动是步骤变,代码不变。我把‘打开浏览器’‘输入’‘点击’这些都封装成关键字,测试人员在Excel里像搭积木一样编排步骤,底层代码去执行。
数据驱动适合参数组合多的场景,关键字驱动适合流程固定、需要不懂代码的人协作维护的场景。实际项目中两者经常混着用——用关键字编排流程,用数据驱动提供参数。”
