Программирование – конструктивный процесс, требует высокой квалификации, неточность (оптимистичность).
Тестирование – деструктивный процесс, низкая квалификация, дотошность (пессимистичность).
Для чего нужно тестирование:
- повышает качество продукта (Þ его стоимость)
- тестирование – процесс исполнения с целью нахождения ошибок
Хороший тест – с большой вероятностью находит ошибку.
Как тестировать:
- тестирование не должно проводиться авторами исходных текстов
- должна быть конкуренция между программистами и тестировщиками (писать с минимальным числом ошибок, тестировать с начала работ)
- должно проверяться и ошибочное поведение (сообщения об ошибках должны быть осмысленными)
- вероятность ошибки пропорциональна числу уже найденных ошибок
- всегда чётко должен быть оговорен конечный результат
Обычно малые фрагменты программы содержат большое количество ошибок.
Виды тестирования:
- чёрный ящик (без просмотра исходного текста)
- белый ящик
test-coverage – покрытие тестами возможных вариантов.
- модульное тестирование
- комплексное тестирование
- получасовое тестирование
Quality assurance (оценка качества)
Отдельная группа, которой запрещено заниматься разработкой, общаться с разработчиками.
QA:
- эргономика
- по документации выполнить установку
- тестирование
- эффективность (время запуска, скорость работы)
QA должна быть как придирчивый пользователь.
Developers – (программа) – QA – (программный продукт) – users
Если QA нашла ошибки, страдают разработчики.
Если недовольны пользователи, страдает QA.