Тестирование программного обеспечения
Тестирование программного обеспечения
Одним из новых направлений деятельности отдела разработки программного обеспечения ОАО «Омский НИИ приборостроения» является контроль качества программных продуктов, разрабатываемых в подразделении.
Эта процедура была введена 11 ноября 2013 года и в настоящий момент охватывает половину всех проектов отдела.
Тестирование — проверка соответствия между реальным и ожидаемым поведением программы, осуществляемая на конечном наборе тестов, выбранном определенным образом. В более широком смысле, тестирование - это одна из техник контроля качества, включающая в себя действия по планированию работ (Test Management), проектированию тестов (Test Design), выполнению тестирования (Test Execution) и анализу полученных результатов (Test Analysis).
При контроле качества программного обеспечения используются следующие виды тестирования:
· функциональное тестирование (Functional testing) — рассматривает заранее указанное поведение и основывается на анализе спецификаций функциональности компонента или системы в целом;
· тестирование безопасности (Security and Access Control Testing) – проверка безопасности системы, а также - анализа рисков, связанных с обеспечением целостного подхода к защите приложения;
· тестирование взаимодействия (Interoperability Testing) — проверяет способность приложения взаимодействовать с одним и более компонентами или системами и включающее в себя тестирование совместимости (compatibility testing) и интеграционное тестирование (integration testing);
· нагрузочное тестирование (Performance and Load Testing) – имитирует работу определенного количества бизнес пользователей на каком либо общем (разделяемом ими) ресурсе;
· объемное тестирование (Volume Testing) – при увеличении объемов данных в базе данных приложения;
· тестирование стабильности или надежности (Stability / Reliability Testing) – при длительном (многочасовом) тестировании со средним уровнем нагрузки;
· стрессовое тестирование (Stress Testing) – позволяет проверить насколько приложение и система в целом работоспособны в условиях стресса и также оценить способность системы к регенерации, т.е. к возвращению к нормальному состоянию после прекращения воздействия стресса;
· тестирование удобства пользования (Usability Testing) – метод тестирования, направленный на установление степени удобства использования, обучаемости, понятности и привлекательности для пользователей разрабатываемого продукта в контексте заданных условий;
· тестирование на отказ и восстановление (Failover and Recovery Testing) – проверяет тестируемый продукт с точки зрения способности противостоять и успешно восстанавливаться после возможных сбоев, возникших в связи с ошибками программного обеспечения, отказами оборудования или проблемами связи (например, отказ сети);
· конфигурационное тестирование (Configuration Testing) – специальный вид тестирования, направленный на проверку работы программного обеспечения при различных конфигурациях системы (заявленных платформах, поддерживаемых драйверах, при различных конфигурациях компьютеров и т.д.);
· дымовое тестирование (Smoke Testing) – короткий цикл тестов, выполняемый для подтверждения того, что после сборки кода (нового или исправленного) устанавливаемое приложение, стартует и выполняет основные функции;
· регрессионное тестирование (Regression Testing) – вид тестирования направленный на проверку изменений, сделанных в приложении или окружающей среде для подтверждения того факта, что существующая ранее функциональность работает как и прежде;
· санитарное тестирование или проверка согласованности/исправности (Sanity Testing) – узконаправленное тестирование достаточное для доказательства того, что конкретная функция работает согласно заявленным в спецификации требованиям.
Пакет тестовой документации включает в себя:
· Тестовый набор – документ, содержащий все возможные тестовые случаи, максимально покрывающие все имеющиеся требования к тестируемому программному обеспечению. Тестовый случай (Test Case) – это артефакт, описывающий совокупность шагов, конкретных условий и параметров, необходимых для проверки реализации тестируемой функции или её части.
· Матрицу прослеживаемости – документ, включающий в себя совокупность опциональных связей между пунктами требований к программному продукту и тестовыми случаями, проверяющими их.
· Спецификацию тестовой процедуры – документ, отражающий информацию об имеющихся тестах, покрывающих заявленные требования к тестируемому ПО, и включающий в себя тестовый набор.
· План тестирования – документ, описывающий весь объем работ по тестированию, начиная с описания объекта, стратегии, расписания, критериев начала и окончания тестирования, до необходимого в процессе работы оборудования, специальных знаний, а также оценки рисков с вариантами их разрешения.
· Отчет о состоянии тестирования – документ, в численном и процентном соотношении показывающий, насколько успешно система в целом и каждый отдельный тестируемый модуль или требование к программному обеспечению прошли тестирование.
· Отчет об ошибках – документ, описывающий ситуацию или последовательность действий, приведшую к некорректной работе объекта тестирования, с указанием причин и ожидаемого результата.
· Сводный отчет – документ, отражающий информацию о состоянии тестирования, сводку по ошибкам, найденным во время тестирования и отклонения от плана и графика тестирования.
При составлении тестового набора инженеры по тестированию руководствуются различными техниками тест-дизайна:
a. Эквивалентное Разделение (Equivalence Partitioning - EP). Как пример, у вас есть диапазон допустимых значений от 1 до 10, вы должны выбрать одно верное значение внутри интервала, скажем, 5, и одно неверное значение вне интервала - 0.
b. Анализ Граничных Значений (Boundary Value Analysis - BVA). Если взять пример выше, в качестве значений для позитивного тестирования выберем минимальную и максимальную границы (1 и 10), и значения больше и меньше границ (0 и 11). Анализ Граничный значений может быть применен к полям, записям, файлам, или к любого рода сущностям имеющим ограничения.
c. Причина / Следствие (Cause/Effect - CE). Это, как правило, ввод комбинаций условий (причин), для получения ответа от системы (Следствие). Например, вы проверяете возможность добавления клиента, используя определенную экранную форму. Для этого вам необходимо будет ввести несколько полей, таких как "Имя", "Адрес", "Номер Телефона" а затем, нажать кнопку "Добавить" - эта "Причина". После нажатия кнопки "Добавить", система добавляет клиента в базу данных и показывает его номер на экране - это "Следствие".
d. Предугадывание ошибки (Error Guessing - EG). Это когда тест-аналитик использует свои знания системы и способность к интерпретации спецификации на предмет того, чтобы "предугадать" при каких входных условиях система может выдать ошибку. Например, спецификация говорит: "пользователь должен ввести код". Тест-аналитик, будет думать: "Что, если я не введу код?", "Что, если я введу неправильный код? ", и так далее. Это и есть предугадывание ошибки.
e. Исчерпывающее тестирование (Exhaustive Testing - ET) - это крайний случай. В пределах этой техники вы должны проверить все возможные комбинации входных значений, и в принципе, это должно найти все проблемы. На практике применение этого метода не представляется возможным, из-за огромного количества входных значений.