Все мы знаем, что основой любого теста, в том числе и автоматизированного, является проверка, это то, ради чего пишется сам тест. И часто мы думаем, как же правильно осуществить эти проверки. Я при написании автоматизированных тестов при тестировании через UI придерживаюсь политики, что лучше сравнивать сущности, чем отдельные значения. Например, если нам нужно сравнить ожидаемую информацию о пользователе, а эта информация содержит имя, фамилию, телефон и другие поля, то вместо нескольких проверок, первая из которых будет сравнивать ожидаемое и реальное значения поля "Имя", вторая - поля "Фамилия" и т.д., я создам класс, содержащую всю эту информацию о пользователе, и в итоге буду сравнивать 2 экземпляра этого класса.
ПРИМЕР.
Вместо
У меня получится
Сам класс выглядит следующим образом:
В следующей части я расскажу о более сложном, но еще более эффективном способе сравнения двух сущностей.
ПРИМЕР.
Вместо
![]() |
Пример 1 |
![]() |
Пример 2 |
Но пока этого недостаточно. Мы должны определить, каким
образом будут сравниваться экземпляры класса ContactSummary. Для этого в классе ContactSummary переопеределим метод Equals() для сравнения экземпляров
(значения свойств должны быть одинаковы), и метод ToString() для вывода значений свойств экземпляра
класса в случае непрохождения проверки.
Что вообще говоря нам это дает. В варианте 1 в случае, когда первая проверка упадет, мы не узнаем результаты остальных. В варианте 2 у нас только одна проверка на все поля, в случае падения теста мы будем знать, что минимум в одном поле ошибка, и благодаря методу ToString() сможем из описания ожидаемого и реального результата понять, в каком именно.
Результат может быть таким:
Присоветовано мелкософтом
ОтветитьУдалитьhttp://blogs.msdn.com/b/ivo_manolov/archive/2010/07/29/10043968.aspx
бесплатное API
http://testapi.codeplex.com/
Да-да, я в продолжении этого поста http://positiveflower.blogspot.ru/2012/10/2.html как раз о TestApi и рассказываю.
УдалитьПолучается не сложнее ли?
ОтветитьУдалитьК примеру вам понадобилось проверять ещё и телефонный номер. В этом случае Вам вместо добавления одной строчки проверок придётся добавить три и изменить ещё пару. Не так ли?
Нет, не сложнее получается, потому что при такой реализации проверок через сравнения сущностей при добавлении допустим номера мы внесем небольшие изменения только в класс ContactSummary, иначе нам придется эту строчку проверки добавлять во ВСЕ тесты, где происходит сравнение данных. Этих тестов может быть не 1, и не 2, они могут располагаться в нескольких файлах, мы можем где-то забыть добавить эту строчку. Плюс опять же, как я написала, такая проверка позволит нам проверить значения сразу всех полей.
Удалить