网站测试自动化系统—在测试代码中硬编码测试数据
2010-09-30 22:42:51 来源:WEB开发网3. 增加不必要的测试用例失败,测试可以分好几块,一种是功能测试,也就是验证产品的功能是否可以正常工作;一种是压力测试,即测试产品在极端情况下的执行情况;还有其他的例如性能测试,国际化测试等等。一般来说,不同的测试都会有自己的自动化测试用例集合。如果在功能测试当中,用例代码在系统里面添加了很多冗余数据,执行的测试用例多了,必然导致网站的性能和反应速度会有所下降。而在测试代码中,一般都会在执行一步操作以后,等待一段时间—等网页的内容刷新。网站反应速度的下降,直接导致测试失败。例如本来在编写测试代码的时候,3秒钟肯定会刷新的网页,在测试执行的环境中,因为过多的冗余数据,30秒可能都打不开一个网页。当然啦,网站反应速度的下降肯定是产品代码的缺陷,但是不应该将压力测试和功能测试混合起来做。
因此,我个人建议,在测试过程中,例如前面举的评论功能的测试中,完全可以事先在网站的数据库中先创建好一篇或多篇专门用来做评论测试的文章。而每天晚上,在大规模执行自动化测试用例之前,编写一个小的脚本,将网站的数据库替换成这个基准数据库。
又比如,为了测试用户权限管理的功能,完全可以事先在网站的数据库当中先准备好一个管理员帐号,这个管理员帐号和密码可以当作一个常量,然后测试代码里都使用这个帐号来执行权限管理的测试。例如下面的代码:
public class Consts
{
public const string TimeToWaitForPageToLoad = "30000";
public const string AdminUserName = "administrator";
public const string AdminPassword = "0123456";
}
public class UserHelper : UIHelperBase
{
public UserHelper(TestLibrary settings)
: base(settings)
{
}
public void LogOnAsAdmin()
{
LogOn(TestLibrary.Consts.AdminUserName, TestLibrary.Consts.AdminPassword);
}
public void LogOn(string username, string password)
{
if (String.IsNullOrEmpty(username))
throw new CaseErrorException(new ArgumentNullException("username"));
if (String.IsNullOrEmpty(password))
throw new CaseErrorException(new ArgumentNullException("password"));
selenium.Open("/");
Thread.Sleep(2000);
if (selenium.IsElementPresent("link=Log On"))
{
selenium.Click("link=Log On");
}
if (selenium.IsElementPresent("link=Login"))
{
selenium.Click("link=Login");
}
selenium.WaitForPageToLoad(TestLibrary.Consts.TimeToWaitForPageToLoad);
selenium.Type("username", username);
selenium.Type("password", password);
selenium.Click("//input[@value='Log On']");
selenium.WaitForPageToLoad(TestLibrary.Consts.TimeToWaitForPageToLoad);
}
}
更多精彩
赞助商链接