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

The*_*ght 9 c# asp.net testing automated-tests

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

现在,我们想介绍一些测试功能的自动化系统测试,以便在应用程序出现故障时立即得到通知!

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

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

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

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

你建议使用什么方法?

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

希望问题很清楚.

非常感谢,

mat*_*per 9

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

对于Web交互,您将使用WebDriver(取自Selenium API文档).这是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();
    }
}
Run Code Online (Sandbox Code Playgroud)

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