Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Тестирование программного обеспечения. Фундамен...docx
Скачиваний:
3
Добавлен:
01.05.2025
Размер:
936 Кб
Скачать
☆

Глава 3: Типы тестов ... 79

Намеренные ошибки: псевдоотладка и мутационное тестирование

Одной из довольно специфических технологий тестирования программ является псевдоотладка (bebugging). В программу намеренно внедряется ряд ошибок. По мнению Вейнберга (Weinberg, 1971), программист, зная навер­няка, что в программе есть ошибки, будет гораздо тщательнее ее тестиро­вать.

Но главное назначение этой технологии — оценить эффективность проводимых тестов. Если внедрить в программу 100 ошибок, а затем про­вести тестирование, в результате которого будет выявлено только 20 из них, значит, в программе останется еще около 80% невыявленных ошибок.

Еще одним способом проверки адекватности проводимых тестов явля­ется мутационное mecmupoeame(mutation testing). В программу вносится ма­ленькое изменение, называемое мутацией. В процессе тестирования результат такого изменения должен обязательно проявиться. Если же это­го не случится, это может означать, что тесты подобраны неудачно.

Подробное описание технологии мутационного тестирования можно най­ти у Де Милло (DeMillo, 1987).

Анализ производительности

Для анализа производительности программного продукта можно приме­нять технологию как “черного” так и “стеклянного ящика”. Однако вторая из них дает лучшие результаты, поскольку позволяет с помощью дополни­тельных программных средств фиксировать время выполнения отдельных модулей, прохождения конкретных путей или скорость обработки специ­фических типов данных.

Одной из целей выполнения анализа производительности является ее увеличение. Если выявить модули, которые выполняются чаще или доль­ше остальных, их можно переработать и тем самым повысить скорость работы всей системы.

Группы тестирования обычно работают с программой как с “черным ящиком”. Они сравнивают производительность последовательных версий программы, и, если обнаруживают, что после последней доработки она замедлилась, это является для них сигналом о возможной ошибке.

Производительность программного продукта анализируют и еще с од­ной целью — для выяснения его конкурентоспособности: если имеющие­ся на рынке аналогичные программы работают значительно быстрее, придется “ускорить” и свою.

80 Часть I: Основы

За более обширной информацией об анализе производительности про­граммного обеспечения мы советуем обратиться к книге Бейзера (Beizer, 1984).

Регрессионное тестирование

Основной работой тестировщиков является регрессионное тестирование. У этого термина два значения, объединенных идеей повторного использо­вания разработанных тестов.

• Представьте, что вы провели тест, обнаружили ошибку и програм­мист ее исправил. Вы снова проводите тот же тест, чтобы убедить­ся, что ошибки больше нет. Это и есть регрессионное тестирование. Можно провести несколько вариаций исходного теста, чтобы как следует проверить исправленный фрагмент программы. В данном случае задача регрессионного тестирования состоит в том, чтобы убедиться, что выявленная ошибка полностью исправлена програм­мистом и больше не проявляется.

В некоторых коллективах в набор регрессионных тестов включают каждую найденную ошибку, даже если она исправлена уже давным- давно. Каждый раз, когда в программу вносится изменение, все эти тесты проводятся снова. Особенно важно провести такое обстоятель­ное тестирование, если программа изменяется спустя достаточно длительное время или новым программистом. Исправления очень чувствительны к таким изменениям, поскольку в тексте программы, если только они не задокументированы самым тщательным образом, выглядят как непонятные или неудачные фрагменты.

• Второй пример применения регрессионного тестирования. После выявления и исправления ошибки проводится стандартная серия тестов, но уже с другой целью: убедиться, что исправляя одну часть программы, программист не испортил другую. В этом случае тестиру­ется целостность всей программы, а не исправление одной ошибки.

При инкрементальном тестировании основой автоматизации прове­дения регрессионных тестов служат разработанные заглушки и обо­лочки. А для автоматизации регрессионного тестирования “черного ящика” можно воспользоваться программами перехвата и воспроиз­ведения ввода, описанными в главе 11.

Тестирование "черного ящика"

Когда кодирование завершено, программа передается группе тестирова­ния. Вы ищете ошибки, составляете о них отчеты, затем получаете новую