Рассмотренные стратегии включают различные уровни тестирования – ниже и выше по иерархии. По этим уровням тестирование можно подразделить еще на один вид классификации:
1)модульное (unit) тестирование,
2)интеграционное тестирование,
3)системное тестирование
в порядке увеличения уровня, т.е. снизу вверх по иерархии.
Эти 3 вида тестирования покрывают все уровни.
Модульное (unit) тестирование – проверка функционирования первого компонента системы, самого элементарного. Обычно берется самый минимально возможный для тестирования компонент, например, одна функция программы.
В данном виде тестирования используется метод белого ящика. Кстати, обычно модульное тестирование выполняется программистами.
Цель этого вида тестирования – изолировать отдельные части программы, протестировать их и показать, что в отдельности они работоспособны. Надо рассмотреть их по отдельности. Каждую часть программы может писать отдельный программист,
он будет досконально знать этот модуль программы.
Преимущество этого вида тестирования в том, что программисты довольно легко идут на изменение программы, не сопротивляясь нововведениям. Это объясняется тем, что протестировать отдельный
модуль после изменения достаточно просто. В одном модуле получается достаточно маленький набор вариантов развития событий, и достаточно легко рассмотреть их все.
Этот вид тестирования помогает локализовать ошибку.
Локализовать ошибку – значит определить место, где содержится ошибка, т.е. в каком модуле, в какой функции она произошла. Когда мы находим ошибку, мы пытаемся установить, при каком наборе действий она возникает, и обобщить его. Затем пытаемся локализовать, т.е. определить в каком компоненте программы происходит сбой.
Юнит-тестирование не решит проблемы производительности, качества, безопасности, надежности. Поэтому остаётся еще целый ряд непроверенных параметров, для которых заданы определенные требования при разработке продукта. Проблемы взаимодействия компонентов этот вид тестирования также не решает.
Этот вид тестирования отдельно никогда не используют, только с другими видами тестирования!
На выходе этого вида тестирования мы получаем протестированные модули программы. Они в свою
очередь подаются на вход следующего уровня тестирования – интеграционного тестирования.
Этот вид тестирования проверяет взаимодействие компонентов, взаимодействие модулей, которые общаются между собой. Модули передают информацию друг другу и каким-то образом связаны. Вот на этой стыковке и могут быть сбои в передаче
этой информации. Либо она может передаваться неточно, либо вообще не передаваться, либо искажаться при передаче. Поэтому тестировать взаимосвязь компонентов нужно обязательно!
Таким образом, мы получаем на входе протестированные модули, затем объединяем их в группы, тестируем эти группы. И на выходе получаем протестированные группы модулей.
Этот вид тестирования проводится через интерфейс программы - методом черного ящика.
Также с помощью метода черного ящика тестируется следующий уровень.
На вход системного тестирования мы подаем выходные данные интеграционного тестирования, т.е. протестированные группы модулей.
На выходе же системного тестирования мы получаем полностью протестированную программу.
В системном тестировании мы проверяем всю систему целиком.
Какие ошибки обычно выявляются на этом уровне тестирования?
Это ошибки надежности, безопасности, производительности. Также на этом уровне тестируется интерфейс для внешнего окружения, например, доступ к другим программам, доступ к операционной системе, доступ к железу компьютеры. Знания внутреннего устройства работы программы не требуются.
Таким образом, модульное тестирование - проводим методом белого ящика, обнаруживаем ошибки функциональности. Затем проводим интеграционное тестирование - методом черного ящика, обнаруживаем ошибки взаимодействия модулей программы. И наконец, системное тестирование – методом черного ящика, выявляем ошибки производительности, надежности, безопасности
и других параметров.
В системном тестировании можно выделить два этапа, которые будут являться стадиями разработки продукта: альфа-тестирование, бета-тестирование.
Напоминаю, в альфа-тестировании
программу тестирует разработчик с точки зрения пользователя. Ближе к выходу продукта наступает следующая стадия тестирования – бета-тестирование, когда на тестирование программу отдают реальным, конечным пользователям. В бета-версии обычно ограничивают функциональность, время использования программы, взамен обратной связи, а также найденных ошибок.