Найти в Дзене
//testing.education();

Теория тестирования #1 Основные определения

При изучении любого вопроса мы всегда первым делом касаемся теории, и чаще всего это определения основных понятий. Тестирование программного обеспечения не является исключением. Так что погнали. Итак, тестирование. Тестирование программного обеспечения (software testing) - проверка соответствия между реальным и ожидаемым поведением ПО, осуществляемая на конечном наборе тестов, выбранных определенным образом. Ожидаемое поведение ПО - то, как должен вести себя продукт согласно требованиям, спецификации или здравого смысла. Реальное поведение ПО - включаем систему в работу и смотрим, что произойдет. А ещё можно встретить вот такое определение: Тестирование программного обеспечения - процесс анализа программного средства и сопутствующей документации с целью выявления дефектов и повышения качества продукта. Качество ПО - способность ПО удовлетворять установленным и предполагаемым потребностям при заданных условиях. Если совсем лень запоминать много слов и букв, вот самое минималистичное:

При изучении любого вопроса мы всегда первым делом касаемся теории, и чаще всего это определения основных понятий. Тестирование программного обеспечения не является исключением. Так что погнали.

Итак, тестирование.

Тестирование программного обеспечения (software testing) - проверка соответствия между реальным и ожидаемым поведением ПО, осуществляемая на конечном наборе тестов, выбранных определенным образом.

Ожидаемое поведение ПО - то, как должен вести себя продукт согласно требованиям, спецификации или здравого смысла. Реальное поведение ПО - включаем систему в работу и смотрим, что произойдет.

А ещё можно встретить вот такое определение:

Тестирование программного обеспечения - процесс анализа программного средства и сопутствующей документации с целью выявления дефектов и повышения качества продукта.

Качество ПО - способность ПО удовлетворять установленным и предполагаемым потребностям при заданных условиях.

Если совсем лень запоминать много слов и букв, вот самое минималистичное: тестирование - поиск багов.

О самих багах как-нибудь в другой раз.

-2

Полезно знать и о такой вещи, как иерархия обеспечения качества.

Есть, прямо скажем, очень запутанные определения, но на самом деле разобраться в этой иерархии и понять, что и на каком месте находится, совсем несложно. А состоит эта иерархия из трёх компонентов: обеспечение качества, управление качеством и непосредственно тестирование ПО.

На самом высоком уровне находится Обеспечение качества (Quality Assurance) - совокупность мероприятий, охватывающая все технологические этапы разработки ПО и применяемая на всех этапах жизненного цикла ПО для обеспечения требуемого уровня качества продукта.

На более низком уровне располагается Управление качеством (Quality Control) - мероприятия, проводимые над продуктом в процессе его разработки, для получения информации о его актуальном состоянии: насколько продукт готов и соответствует ли он требованиям качества в каждый конкретный промежуток времени.

И на самом низком уровне разместилось Тестирование ПО (Software Testing) - одна из техник контроля качества, включающая в себя мероприятия по планированию тестовых действий, дизайну тестов, выполнению этих тестов и анализу полученных результатов.

В состав обеспечения качества входит управление качеством. В свою очередь тестирование ПО входит в состав управления качеством.
В состав обеспечения качества входит управление качеством. В свою очередь тестирование ПО входит в состав управления качеством.

И обязательны к изучению и пониманию принципы тестирования. Иногда их называют аксиомами. Их семь:

1. Тестирование демонстрирует наличие дефектов. Это «философский» принцип. Тестирование может показать наличие ошибок в ПО. А доказать, что их нет, не может. Просто надо постараться найти максимальное количество дефектов до того, как их найдёт пользователь.

-4

2. Исчерпывающее тестирование невозможно. За исключением совсем примитивных программ и случаев невозможно провести тестирование с использованием всех возможных сценариев и комбинаций входных данных. Для более качественного тестирования необходимо ориентироваться на приоритетность, оценивать риски и использовать техники тест-дизайна для увеличения покрытия.

-5

3. Раннее тестирование. Тестирование должно начинаться как можно раньше в жизненном цикле ПО. Чем раньше будет обнаружен дефект, тем дешевле его устранение для компании. Легко согласовать несколько правок в документации, терпимо исправить несколько строк кода и совсем тяжело и недёшево исправлять продукт, который не работает, либо работает не так, как хотелось бы пользователю и заказчику.

-6

4. Скопление дефектов. Плотность скопления дефектов в разных модулях ПО отличается. Поэтому усилия по тестированию таких модулей должны распределяться пропорционально. Часто исправление бага в одной функциональности рождает два новых бага в соседних, образуя новые скопления.

-7

5. Парадокс пестицида. Прогоняя одни и те же тесты вновь и вновь, можно столкнуться с тем, что они находят всё меньше и меньше ошибок. Необходимо вносить изменения в существующие наборы тестов и актуализировать их, регулярно обновлять входные данные для тестов. Не дадим багам выработать иммунитет к нашим тестам.

-8

6. Тестирование зависит от контекста. И методология, и техника, и тип тестирования напрямую зависит от природы самого ПО. Медицинское и военное ПО во время тестирования требует максимальной концентрации и тщательного анализа в отличие от, например, сайта с анекдотами.

-9

7. Заблуждение об отсутствии ошибок. Тот факт, что тестирование не обнаружило дефектов, не значит, что их нет. Как писал Роман Савин в книге «Тестирование дот ком»: был бы код - баги найдутся.

-10