Тестирование - способ обеспечения качества
Качество программного продукта характеризуется набором свойств,
определяющих, насколько продукт "хорош" с точки зрения
заинтересованных сторон, таких как заказчик продукта, спонсор,
конечный пользователь, разработчики и тестировщики продукта, инженеры
поддержки, сотрудники отделов маркетинга, обучения и продаж. Каждый
из участников может иметь различное представление о продукте и о том,
насколько он хорош или плох, то есть о том, насколько высоко качество
продукта. Таким образом, постановка задачи обеспечения качества
продукта выливается в задачу определения заинтересованных лиц, их
критериев качества и затем нахождения оптимального решения,
удовлетворяющего этим критериям. Тестирование является одним из
наиболее устоявшихся способов обеспечения качества разработки
программного обеспечения и входит в набор эффективных средств
современной системы обеспечения качества программного продукта.
С технической точки зрения тестирование заключается в выполнении
приложения на некотором множестве исходных данных и сверке получаемых
результатов с заранее известными (эталонными) с целью установить
соответствие различных свойств и характеристик приложения заказанным
свойствам. Как одна из основных фаз процесса разработки программного
продукта (Дизайн приложения - Разработка кода - Тестирование ), тестирование характеризуется достаточно большим вкладом в суммарную
трудоемкость разработки продукта. Широко известна оценка
распределения трудоемкости между фазами создания программного
продукта: 40%-20%-40% (Рис. 1 1), из чего следует, что наибольший
эффект в снижении трудоемкости может быть получен прежде всего на
фазах Design и Testing. Поэтому основные вложения в автоматизацию или
генерацию кода следует осуществлять, прежде всего, на этих фазах.
Хотя в современном индустриальном программировании автоматизация тестирования является широко распространенной практикой, в то же
время технология верификации требований и спецификаций пока делает
только свои первые шаги. Задачей ближайшего будущего является
движение в сторону такого распределения трудоемкости (60%-20%-20%
(Рис. 1 2)), чтобы суммарная цена обнаружения большинства дефектов
стремилась к минимуму за счет обнаружения преимущественного числа на
наиболее ранних фазах разработки программного продукта.

Рис. 1.1.
Оценка трудоемкости обнаружения и исправления ошибок при создании программного продукта
Рис. 1.2.
Аналогичная оценка при автоматизации дизайна
Настоящий курс посвящен обсуждению способов решения задачи контроля
качества разработки программного обеспечения с позиций тестирования.
В этой области наряду с решением научных и технических проблем
немаловажная роль принадлежит проблеме подготовки кадров, способных
решать задачи тестирования и автоматизации тестирования в условиях
производства программного продукта. Задачей курса, реализующейся
через лекционный материал и практикум, является подготовка
тестировщиков программного проекта. Это тем более важно, что в
существующих вузовских программах подготовки профессиональных
программистов не предусмотрен достаточный для решения данной задачи
объем лекционного материала и практикумов. Поэтому предлагаемое
пособие следует рассматривать как дополнительный учебник для будущих
тестировщиков программных проектов.
Предлагаемый вниманию читателей курс обобщает опыт многолетней работы
учебного центра "Политехник - Моторола" в Санкт-Петербургском
государственном политехническом университете. Естественно, наш
учебник не единственный.
Среди учебников, посвященных подготовке тестировщиков, мы рекомендуем
обратить внимание на книги [1],[2],[3],[4],[5],[6], также посвященные
передаче опыта промышленного тестирования студентам и аспирантам,
выбравшим своей специальностью профессиональное программирование.
Требования к курсу
Курс соответствует требованиям специальности 220400 "Программное
обеспечение вычислительной техники и автоматизированных систем",
ориентированной на подготовку профессиональных программистов, в
частности покрывает разделы курса "Технология программирования",
посвященные тестированию.
Разделы курса соответствуют следующим разделам Computing Curricula
2001: Computer Science [7]:
- Раздел SE4 Процессы разработки ПО
- Раздел SE5 Спецификации и требования к ПО
- Раздел SE6 Проверка соответствия ПО