我目前正在为Web应用程序设计测试框架。该框架是一个混合(数据和关键字驱动)框架。我有它设置所以我有完整的UI函数的包,我可以调用测试类来导航和单击应用程序。
我想知道最佳做法。
我应该每走一步都检查结果吗?或者我应该在测试结束时检查结果吗?
有关更多详细信息,这是我使用最小化代码进行测试的当前结构:
// This test contains one step. The following method navigates to the page and inputs invalid credentials.
// We than check if we're still on the login page. If we are, the test passes. If we can't find the
// "login text", than the test has failed.
LoginPage.invalidCredentialsOne.run(driver);
Thread.sleep(2000);
WebElement logintext = driver.findElement(By.xpath(prop.getProperty("logintext")));
if (logintext.getText().equals("LOG IN")) {
//add pass entry to the excel sheet
testresultdata.put("3", new Object[] {
2d, "User should not be able to login with an invalid password", "Login failed", "Pass"
});
driver.close();
Alert alert = driver.switchTo().alert();
alert.accept();
} else {
//add fail entry to the excel sheet
testresultdata.put("3", new Object[] {
2d, "User should not be able to login with an invalid password", "Login failed", "Fail"
});
fail();
driver.close();
Alert alert = driver.switchTo().alert();
alert.accept();
}
在上面的代码中,我检查了预期/实际结果 AFTER 我运行了该方法。是否可以检查方法本身内的预期/实际结果?这有什么优点/缺点?
我觉得在该方法中运行预期/实际结果可以提高可维护性和测试准确性(能够准确查看测试失败的位置)。
或者为什么不试试两者?
方法 - 检查每个导航。如果导航失败,请在控制台中输出一行,告诉您在哪里。这会检查简单的UI错误。
测试类 - 检查更具体的用户场景。
对正确的最佳做法非常感兴趣。提前谢谢。
答案 0 :(得分:1)
我会将测试方法(尤其是使用selenium编写的系统测试)划分为Action和Verification。这意味着您必须划分导致某些系统更改的方法(如您的invalidCredentialsOne
)以及应在更改发生后验证/测试系统状态的方法。
为什么这样好?通过这种方式,您可以使用一些操作来构建用户场景,并在所需位置验证此设置。这种方法为构建各种场景和verios测试提供了灵活性。
如果我们回到你的例子,让我们假设你不仅要测试你回到登录页面,以防错误的凭据,但是,例如,在5次尝试后系统(只是假设!)将阻止用户。 在这种情况下,您可以使用您的第一个操作5次,然后验证系统是否阻止用户。
P.S。请尽量避免在硒代码中使用Thread.sleep
。等待物体外观要好得多。