четверг, 25 октября 2012 г.

Проверки. Часть 1. Сравнение сущностей.

Все мы знаем, что основой любого теста, в том числе и автоматизированного, является проверка, это то, ради чего пишется сам тест. И часто мы думаем, как же правильно осуществить эти проверки. Я при написании автоматизированных тестов при тестировании через UI придерживаюсь политики, что лучше сравнивать сущности, чем отдельные значения. Например, если нам нужно сравнить ожидаемую информацию о пользователе, а эта информация содержит имя, фамилию, телефон и другие поля, то вместо нескольких проверок, первая из которых будет сравнивать ожидаемое и реальное значения поля "Имя", вторая - поля "Фамилия" и т.д., я создам класс, содержащую всю эту информацию о пользователе, и в итоге буду сравнивать 2 экземпляра этого класса.



ПРИМЕР.

Вместо

Пример 1

У меня получится
Пример 2


Сам класс выглядит следующим образом:


Но пока этого недостаточно. Мы должны определить, каким образом будут сравниваться экземпляры класса ContactSummary. Для этого в классе ContactSummary переопеределим метод Equals() для сравнения экземпляров (значения свойств должны быть одинаковы), и метод ToString() для вывода значений свойств экземпляра класса в случае непрохождения проверки.
Что вообще говоря нам это дает. В варианте 1 в случае, когда первая проверка упадет, мы не узнаем результаты остальных. В варианте 2 у нас только одна проверка на все поля, в случае падения теста мы будем знать, что минимум в одном поле ошибка, и благодаря методу ToString() сможем из описания ожидаемого и реального результата понять, в каком именно.

Результат может быть таким:


 В следующей части я расскажу о более сложном, но еще более эффективном способе сравнения двух сущностей.



4 комментария:

  1. Присоветовано мелкософтом
    http://blogs.msdn.com/b/ivo_manolov/archive/2010/07/29/10043968.aspx
    бесплатное API
    http://testapi.codeplex.com/

    ОтветитьУдалить
    Ответы
    1. Да-да, я в продолжении этого поста http://positiveflower.blogspot.ru/2012/10/2.html как раз о TestApi и рассказываю.

      Удалить
  2. Получается не сложнее ли?
    К примеру вам понадобилось проверять ещё и телефонный номер. В этом случае Вам вместо добавления одной строчки проверок придётся добавить три и изменить ещё пару. Не так ли?

    ОтветитьУдалить
    Ответы
    1. Нет, не сложнее получается, потому что при такой реализации проверок через сравнения сущностей при добавлении допустим номера мы внесем небольшие изменения только в класс ContactSummary, иначе нам придется эту строчку проверки добавлять во ВСЕ тесты, где происходит сравнение данных. Этих тестов может быть не 1, и не 2, они могут располагаться в нескольких файлах, мы можем где-то забыть добавить эту строчку. Плюс опять же, как я написала, такая проверка позволит нам проверить значения сразу всех полей.

      Удалить