如何使用C#编写自动系统测试?

时间:2012-01-24 17:04:52

标签: c# asp.net testing automated-tests

我们有一个旧的asp.net应用程序,没有单元测试,集成测试,组件测试或UI /功能测试 - 出乎意料!

现在,我们想介绍一些自动系统测试来测试功能,以便在应用中出现问题时立即得到通知!

例如,用户注册表单,用户可以在其中输入用户名和电子邮件地址并在系统中注册。

引入单元测试太晚/太昂贵了(因为目前的设计不是可单元测试的)所以现在最重要的是编写自动化系统测试。

例如,我们想在 C#中编写测试,打开浏览器,将数据输入文本框,单击“注册”按钮,然后我们的测试检查数据是否已插入进入数据库以及是否发送验证电子邮件,最后是否向用户显示正确的消息(当然这只是主要方案,并且会有许多特殊情况)。基本上不测试隔离的单元,但测试整个过程是否有效!

那么,我可以用什么工具帮助我编写这样的测试并自动化呢?

您建议使用哪种方法?

我看过Selenium和Fitnesse,但他们似乎不允许我编写C#代码来测试数据库等。我看了SoapUI / LoadUI同样的问题。可能会使用WatiN,不确定。任何想法/建议都非常感谢。

希望问题很明确。

非常感谢,

5 个答案:

答案 0 :(得分:9)

Selenium绝对允许您编写C#代码进行系统测试。首先,您将有一个与网站交互的方法,第二种方法来验证数据库是否正确。所有这些都在一个测试应用程序/类中。

对于网络互动,您可以使用WebDriver(取自Selenium API doc)。这是IWebDriver接口的一些示例代码。它与谷歌进行互动,但您可以对其进行修改以与您的网站进行互动。

using OpenQA.Selenium.Firefox;
using OpenQA.Selenium;

class GoogleSuggest
{
    static void Main(string[] args)
    {
        IWebDriver driver = new FirefoxDriver();
        driver.Navigate().GoToUrl("http://www.google.com/");
        IWebElement query = driver.FindElement(By.Name("q"));
        query.SendKeys("Cheese");
        System.Console.WriteLine("Page title is: " + driver.Title);
        driver.Quit();
    }
}

然后,您将使用LinqToSql或其他C#数据库API等方法实现另一个验证数据库条目是否正确的方法。

答案 1 :(得分:2)

如果你有Visual Studio Ultimate,或许你正在寻找一个Coded UI Test? http://msdn.microsoft.com/en-us/library/dd286681.aspx

答案 2 :(得分:1)

答案 3 :(得分:1)

您还可以将Telerik's Test Studio视为满足测试需求的解决方案。 (披露:我为Telerik工作,作为他们的测试工作室传播者。)

Test Studio可让您轻松创建极其可维护的功能和性能测试。

您还可以在C#(或VB.NET)中轻松添加步骤或测试,以处理测试夹具设置/拆卸等操作,或处理您提到的测试oracle情况。 (检查数据库以确保正确保存记录,绑定类似nDumbster的电子邮件验证等)。

答案 4 :(得分:1)

Selenium Webdriver可以作为包添加到Visual Studio Express IDE中的C#项目中,然后添加nUnit包就可以编写测试用例。以下几个链接可以帮助您启动selenium webdriver自动化测试用例

关于如何设置IDE(VS express),nUnit和selenium参考 How to setup C#,nUnit and selenium client drivers on VSExpress for Automated tests

在创建启动浏览器的简单脚本时,请参考几个步骤 Creating Basic Selenium web driver test case using Nunit and C#

关于如何在我建议引用的许多不同浏览器上加载相同的网页 How to invoke locally different types of browser driver using selenium and c#

在为多个虚拟机加载相同的网页时,您需要使用远程webdriver而不是普通的webdriver。使用远程webdriver,您可以启动不同类型的浏览器。请参阅此网页 How to invoke/run different type of web driver browser using remote webdriver in C#

要在不同的浏览器上拍摄快照,您可以参考该链接 Capturing screen shots using remote/local webdriver in C#/Selenium webdriver