Современные
информационные технологии/ 2. Вычислительная техника и программирование
Коваленко Любовь Викторовна
Карагандинский Государственный
Технический Университет
Терминология тестирования
программного обеспечения
Тестирование (software testing) – деятельность, выполняемая для оценки и
улучшения качества программного обеспечения. Эта деятельность, в общем случае,
базируется на обнаружении дефектов и проблем в программных системах.
Тестирование программного обеспечения состоит
из динамической верификации поведения программ на конечном (ограниченном) наборе тестов (set of test cases), выбранных соответствующим образом из обычно выполняемых
действий прикладной области и обеспечивающих проверку соответствия ожидаемому поведению системы.
Динамичность (dynamic) тестирования подразумевает
тестирование всегда предполагает выполнение тестируемой программы с заданными
входными данными. При этом, величины, задаваемые на вход тестируемому
программному обеспечению, не всегда достаточны для определения теста. Сложность
и недетерминированность систем приводит к тому, что система может по разному
реагировать на одни и те же входные параметры, в зависимости от состояния
системы. В данной области знаний термин “вход” (input) будет использоваться в рамках соглашения о
том, что вход может также специфицировать состояние системы, в тех случаях,
когда это необходимо. Кроме динамических техник проверки качества, то есть
тестирования, существуют также и статические техники, рассматриваемые в области
знаний “Software Quality”.
Конечность
(ограниченность, finite): даже для простых программ
теоретически возможно столь большое количество тестовых сценариев, что
исчерпывающее тестирование может занять многие месяцы и даже годы. Именно
поэтому, с практической точки зрения, всестороннее тестирование считается
бесконечным. Тестирование всегда предполагает компромисс между ограниченными
ресурсами и заданными сроками, с одной стороны, и практически неограниченными
требованиями по тестированию, с другой. То есть мы снова говорим об определении
характеристик “приемлемого” качества, на основе которых планируем необходимы
объем тестирования.
Выбор (selection): многие предлагаемые
техники тестирования отличаются друг от друга в том, как выбираются сценарии
тестирования. Инженеры по программному обеспечению должны обладать
представлением о том, что различные критерии выбора тестов могут давать разные
результаты, с точки зрения эффективности тестирования. Определение подходящего
набора тестов для заданных условий является очень сложной проблемой. Обычно,
для выбора соответствующих тестов совместно применяют техники анализа рисков,
анализ требований и соответствующую экспертизу в области тестирования и
заданной прикладной области.
Ожидаемое поведение (expected behavior): Хотя это не всегда легко,
все же необходимо решить, какое наблюдаемое поведение программы будет
приемлемо, а какое – нет. В противном случае, усилия по тестированию –
бесполезны. Наблюдаемое поведение может рассматриваться в контексте
пользовательских ожиданий (подразумевая “тестирования для проверки” - testing for validation),
спецификации (“тестирование для аттестации” - testing for verification)
или, наконец, в контексте предсказанного поведения на основе неявных требований
или обоснованных ожиданий.
Общий взгляд на тестирование программного
обеспечения последние годы активно эволюционировал, становясь все более
конструктивным, прагматичным и приближенным к реалиям современных проектов
разработки программных систем. Тестирование более не рассматривается как
деятельность, начинающаяся только после завершения фазы конструирования.
Сегодня тестирование рассматривается как деятельность, которую необходимо
проводить на протяжении всего процесса разработки и сопровождения и является
важной частью конструирования программных продуктов. Действительно,
планирование тестирования должно начинаться на ранних стадиях работы с
требованиями, необходимо систематически и постоянно развивать и уточнять планы
тестов и соответствующие процедуры тестирования. Даже сами по себе сценарии
тестирования оказываются очень полезными для тех, кто занимается
проектированием, позволяя выделять те аспекты требований, которые могут
неоднозначно интерпретироваться или даже быть противоречивыми.
Не секрет, что легче предотвратить проблему, чем
бороться с ее последствиями. Тестирование, наравне с управлением рисками,
является тем инструментом, который позволяет действовать именно в таком ключе.
Причем действовать достаточно эффективно. С другой стороны, необходимо
осознавать, что даже если приемочные тесты показали положительные результаты,
это совсем не означает, что полученный продукт не содержит ошибок. Этим
вопросам, в частности, адресована область знаний “Сопровождение программного
обеспечения” (Software Maintenance). Однако, адекватное внимание вопросам
тестирования качественно снижает риск возникновения ошибок на этапе
эксплуатации, обеспечивая более высокую удовлетворенность пользователей, что и
является, по существу, целью любого проекта.
Работы по тестированию могут
руководствоваться различными соображениями и критериями – от управления рисками
до специфицированных сценариев работы программных систем.
Литература:
1 Тестирование программного обеспечения.
Фундаментальные концепции менеджмента бизнес-приложений, Сэм Канер, Джек Фолк,
Енг Кек Нгуен, М.
2 Введение в тестирование программного
обеспечения, Луиза Тамре, М.
3
http://swebok.sorlik.ru/4_software_testing.html