Как написать автоматизированные системные тесты с C #? - PullRequest
9 голосов
/ 24 января 2012

У нас есть старое приложение asp.net , в котором нет модульных тестов, интеграционных тестов, тестов компонентов или пользовательского интерфейса / функциональных тестов - сюрприз!

Теперь мы хотели бы представить автоматизированное системное тестирование , которое проверяет функциональность, чтобы в случае поломки приложения мы сразу получали уведомление!

Например, форма регистрации пользователя , где пользователь может ввести имя пользователя и адрес электронной почты и зарегистрироваться в системе.

Слишком поздно / дорого вводить юнит-тесты (так как текущий дизайн не тестируется юнитами), поэтому сейчас самое важное - это написание автоматических системных тестов.

Например, мы хотели бы написать тест в C # , который открывает браузер, вводит данные в текстовые поля, нажимает кнопку «Регистрация», затем наш тест проверяет, вставлены ли данные в базу данных и о том, отправлено ли письмо с подтверждением и, в конце концов, показано ли пользователю правильное сообщение (конечно, это только основные сценарии, и было бы множество особых случаев). В основном это не тестирование отдельных модулей, а проверка работоспособности всего процесса!

Итак, какой инструмент я могу использовать, чтобы помочь мне написать такой тест и автоматизировать его?

Какой подход вы бы порекомендовали использовать?

Я взглянул на Selenium и Fitnesse, но, похоже, они не позволяют мне писать код на C # для тестирования базы данных и т. Д. Я посмотрел на ту же проблему SoapUI / LoadUI. WatiN можно было бы использовать, не уверен. любые мысли / рекомендации очень ценятся.

Надеюсь, вопрос ясен.

Большое спасибо,

Ответы [ 5 ]

9 голосов
/ 24 января 2012

Selenium действительно позволяет вам писать код на C # для тестирования системы. Во-первых, у вас есть метод взаимодействия с веб-сайтом, а второй - для проверки правильности базы данных. Все в одном тестовом приложении / классе.

Для веб-взаимодействия вы должны использовать WebDriver (взят из Selenium API doc ). Вот пример кода интерфейса IWebDriver. Он взаимодействует с Google, но вы можете изменить это для взаимодействия с вашим сайтом.

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 или другого API базы данных C #.

2 голосов
/ 24 января 2012

Если у вас есть Visual Studio Ultimate, возможно, вам нужен тест с закодированным пользовательским интерфейсом?http://msdn.microsoft.com/en-us/library/dd286681.aspx

1 голос
/ 14 октября 2013

Selenium Webdriver можно добавить в виде пакета в проект C # в Visual Studio Express IDE, а затем, добавив пакет nUnit, можно написать контрольные примеры. Ниже приведены несколько ссылок, которые помогут вам начать работу с Selena Webdriver. Автоматизированные тестовые случаи

О том, как настроить IDE (VS Express), nUnit и selenium, см. Как настроить клиентские драйверы C #, nUnit и selenium в VSExpress для автоматических тестов

При создании простого скрипта, запускающего браузер, нужно выполнить несколько шагов Создание базового теста для веб-драйвера Selenium с использованием Nunit и C #

О том, как загрузить одну и ту же веб-страницу в разные браузеры, я предлагаю обратиться Как вызвать локально различные типы драйверов браузера, используя selenium и c #

При загрузке одной и той же веб-страницы на нескольких виртуальных машинах для этого вам необходимо использовать удаленный веб-драйвер вместо обычного веб-драйвера. Также с помощью удаленного веб-драйвера вы можете запускать различные типы браузеров. Ссылка на эту веб-страницу Как вызвать / запустить браузер другого типа с помощью удаленного веб-драйвера в C #

Чтобы сделать снимок в другом браузере, вы можете обратиться по ссылке Снимки экрана с помощью удаленного / локального веб-драйвера в C # / Selenium webdriver

1 голос
/ 26 января 2012

Вы также можете посмотреть Telerik's Test Studio как решение для ваших задач тестирования.(Раскрытие информации: я работаю в Telerik в качестве их евангелиста Test Studio.)

Test Studio позволяет легко создавать чрезвычайно функциональные и функциональные тесты, которые можно легко обслуживать.

Вы также можете легко добавлять шаги или тесты в C # (или VB.NET) для обработки таких вещей, как настройка / демонтаж тестового оборудования, или для решения ситуаций тестирования оракула, о которых вы упомянули.(Проверка базы данных, чтобы убедиться, что запись правильно сохранена, связывание с чем-то вроде nDumbster для проверки электронной почты и т. Д.)

1 голос
/ 25 января 2012

Использование CodedUI или Сетевой драйвер Selenium

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...