Выполнение тест-плана называется прогоном (проходом, тест-раном). Прогон можно представить как эквивалент объекта и класса. Выполнение тест-плана создает прогон подобно тому, как при работе с классом мы можем создать объект. Тест-план является картой, показывающей, куда можно пойти, в то время как прогон подобен путешествию.
Выполнение тест-плана должно быть сравнительно простым процессом, предполагающим, что тест-план разработали надлежащим образом. В конце концов, вы потратили время, чтобы убедиться, что все предусловия выполнимы, что входные значения заданы, что шаги выполнения достаточно детализированы, а выходные значения и постусловия могут быть протестированы. На данном этапе выполнение тест-кейсов будет сравнительно механическим процессом (и это одна из причин появления автоматизированного тестирования). Вы можете отправить кого-то в помещение, где находится компьютер, на котором можно запустить программу, и спустя несколько часов, в зависимости от длительности тест-плана, этот человек выйдет из помещения с полностью протестированной системой.
К сожалению, это прекрасное видение не всегда становится реальным. В процессе выполнения тест-кейса этот тест-кейс может получать различные статусы. В итоге тест-кейс получит некий финальный статус, хотя во время прогона этот статус будет изменяться. Существуют также статусы "нулевой" или "не протестирован", которые означают, что этот данный тест-кейс еще не был выполнен.
Хотя не существует универсального хранилища статусов, можно привести репрезентативную выборку тест-кейсов, с которой вы можете встретиться в своей работе тестировщика. Названия могут меняться, но эти шесть типов обеспечивают хорошее покрытие ситуаций, в которых может оказаться ваш тест-кейс:
1. Пройден (Passed).
2. Неудавшийся (Failed).
3. Остановлен (Paused).
4. Запущен (Running).
5. Заблокирован (Blocked).
6. Ошибка (Error).
Пройденный тест является тем, в котором всё ожидаемое поведение (т. е. выходные значения и постусловия) соответствует наблюдаемому поведению. Проще говоря, это тест, где всё работает.
Напротив, неудавшийся тест является тем тестом, в котором по крайней мере одна из составляющих наблюдаемого поведения не соответствует ожидаемому поведению. Это различие может быть в выходных значениях или постусловиях. Например, если функция вычисления квадратного корня возвращает значение квадратного корня четырех, равное 322, то этот тест-кейс должен быть помечен как неудавшийся. Если у тест-кейса было постусловие, что на экране должно появиться сообщение "ОШИБКА: СЛОНЫ НЕ МОГУТ ТАНЦЕВАТЬ", а на экране сообщение об ошибке гласит "ОШИБКА: СЛОНЫ НЕ МОГУТ ВЫБРАСЫВАТЬСЯ ИЗ ОКНА", то этот тест-кейс также является неудавшимся. Всякий раз, когда тест-кейс помечается неудавшимся, должен быть зарегистрирован соответствующий дефект. Это может быть новый дефект или же известный дефект, вызывающий множество проблем, например ошибки для всех животных с утверждением, что они не могут выбрасываться из окна, в то время как правильным будет сообщение, что они не могут танцевать. Если нет дефекта, связанного с неудавшимся тест-кейсом, то либо тест-кейс не был достаточно важен для тестирования, либо найденный дефект недостаточно важен для документирования. Если это так, вам надо переосмыслить ваш тест-кейс!
Остановленный тест является тестом, который был запущен, но затем поставлен на удержание на какой-то период времени. Это позволяет другим тестировщикам и менеджерам знать статус теста и прогресс, которого достиг тестировщик. Это также гарантирует, что другой тестировщик не начнет выполнять тест, который уже выполняется. Тест-кейс может быть остановлен по банальным причинам — скажем, тестировщик отправился перекусить или занялся чем-то, связанным с тестируемой системой (например, покинул помещение для получения новых тестовых данных). В любом случае предполагается, что тестировщик продолжит работу над тестом после своего возвращения, но не означает, что тест сам по себе не может быть выполнен (это покрывается статусом "Заблокирован", рассматриваемым дальше).
Запущенный тест является тестом, который начат, но пока еще не завершен, и таким образом, конечный результат пока неизвестен. Данный статус обычно используется в случаях, когда выполнение теста занимает значительное время и тестировщик хочет дать понять другим тестировщикам, что тест находится в стадии выполнения. Хотя технически все тесты находятся в состоянии "запущен" короткий период времени (когда тестировщик выполняет шаги выполнения), и если нет какой-либо автоматизации, то этот статус обычно присваивается долго исполняемым тестам.
Иногда тест невозможно выполнить в данный момент. Причиной этого могут быть внешние факторы (например, в связи с недоступностью части тестового оборудования) или внутренние (скажем, часть функционала не доработана, или невозможно тестировать в связи с дефектами, присутствующими в системе). В таких случаях тест может быть помечен как заблокированный. Это означает, что тест не может быть запущен в настоящее время, хотя к нему можно вернуться во время будущих прогонов, когда разрешатся проблемы, препятствующие его запуску.
Наконец, в некоторых случаях тест-кейс просто не может быть выполнен сейчас или в будущем в связи с проблемой в самом тест-кейсе. В таких случаях статус теста может быть отмечен как "ошибка". Помеченные ошибочными тесты могут вступать в противоречие с требованиями: например, в требовании может говориться о том, что фон веб-страницы должен быть синим, в то время как тестируемое приложение является работающей с командной строкой консольной программой. Проблемой может быть, если, скажем, ожидаемое поведение говорит о том, что квадратный корень из 25 должен выдавать результат "пудель". Иногда причиной пометки теста ошибочным может оказаться простая опечатка, но чаще это указывает на фундаментальную проблему с пониманием командой разработчиков или командой тестировщиков разрабатываемого программного обеспечения. Тест-кейсы с пометкой "ошибка", в отличие от тест-кейсов, помеченных заблокированными, не должны запускаться, пока эта ошибка не будет устранена.