понедельник, 6 января 2014 г.

Что такое автоматизированное тестирование и для чего оно нужно?


Тестирование - выявление ошибок в программном обеспечении, необходимо для создания качественного программного обеспечения.
Что такое качественное программное обеспечение? Программа, которой удобно пользоваться, понятная, без ошибок, при ошибках выдающая понятные сообщения, стабильно работающая при высоких нагрузках.

Тестирование разделяется на несколько видов:

  • usability - тестирование внешнего вида: насколько все понятно, удобно. Хорошо проверяется ab тестированием (например, для интернет-магазина: создаются несколько видов внешне отличающихся форм, и проверяется, сколько процентов пользователей сделали покупки или перешли к следующему шагу при использовании конкретного варианта и для достоверного результата необходима достаточно большая выборка пользователей)
    Рекомендуемая литература: Дженнифер Тидвелл, "Разработка пользовательских интерфейсов"
  • функциональное тестирование - тестирование основной функциональности, описанной в техническом описании проекта
    Рекомендуемая литература: Роман Савин, "Тестирование DOT COM или Пособие по жестокому обращению с багами в интернет-стартапах"
  • нагрузочное тестирование - определение границ нагрузок, при которых система работает стабильно, нахождение предела нагрузок с допустимым временем ответа, выявление узких мест
  • unit тестирование - чаще всего выполняется разработчиками, пример теста: есть некоторая функция f(a), которая вычисляет квадрат числа, тесты можно написать приблизительно такие: equal(f(2), 4), т.е. соответствие вычисленного результата ожидаемому
Это далеко не все виды тестирования, есть множество других.

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

Комментариев нет:

Отправить комментарий