测试对于一个应用系统来说是非常关键的,但沌单元测方式(XUnit)的方式在B/S结构的信息管理系统中仍然有一些不足,比如要测试界面元素,网页导行方面,需要其它的一些测试架框作为辅助,这两天开始查找并学习了一些网站测试方面的框架。 把学习心得发出来与大家工享。
一、几种常用框架的介绍。
1、NUnitAsp 官方网址:http://nunitasp.sourceforge.net/
优点:可以在测试代码中直接使用使用调用网页中的服务器控件。并获取该控件的属性。
缺点:不够灵活。正如他的官方网上所说的:
NUnitAsp is for unit testing ASP.NET code-behind only. It's meant for programmers, not QA teams, and it's not very good for QA-style acceptance tests. It only tests server-side logic. JavaScript and other client-side code is ignored. But if you're using ASP.NET, it's an essential part of your programmers' toolset.
NUnitAsp 主要是对后台代码进行单元测试,即它主要是用于测试服务端的逻辑,JavaScript和其它的客户端代码是被忽略的。
2、WatiN 官方网址:http://watin.sourceforge.net/
优点:非常灵活,可以模拟用户在客户端浏览器中的大部份操作,API也比较简单。
缺点:文档较少,官方网上的例子也很少。
因为我的目的是测试网站里网页的导行,主要是要模拟用户的操作,因此选择了使用WatiN。下面的内容也主要是讲述它的使用。
二、简单的例子
下面先看一下官司方网站上给出的一个简单的例子。
[Test]
public void SearchForWatiNOnGoogle()
{
/**/
/*这一句代码会打开一个IE浏览器,打开www.google.com网址。
*在创建军了IE对象以后也可以用ie.GoTo(url);来转到其它网址。
*/
using (IE ie = new IE("http://www.google.com"))
{
/**/
/*在浏览器中查找name属性为"q"的输入控件,然后调用它的TypeText方法
*模拟用户用键盘输入"WatiN"
*注意TypeText方法是真的模拟用户一个一个字母地输入进这个输入框的。
*如果只是想设置该控件的内容可以把这句改为:
*ie.TextField(Find.ByName("q")).Value="WatiN";
*/
ie.TextField(Find.ByName("q")).TypeText("WatiN");
ie.Button(Find.ByName("btnG")).Click();
Assert.IsTrue(ie.ContainsText("WatiN"));
}
}
这段代码的作用是模仿用户打开IE浏览器到GOOGLE网站查询WatiN的内容,然后确定有没有打到这些信息。