Слайд 2
Для чего нужно тестирование ПО
Для надежной работы программ,
так как от этого зависит, например, развитие бизнеса или
даже человеческая жизнь.
Слайд 3
На практике часто встречается
При создании определенных типов ПО
отступление программистов и управляющего персонала от стандартизированной методологии абсолютно
недопустимо.
При разработке ПО тестирование проводится, как правило, в условиях нехватки бюджета, сотрудников, согласия между ними и времени.
Слайд 4
Глава 1 Примеры серии тестов
Пусть у нас есть
программа, назначение которой - сложить два введенных вами числа,
и ее описание:
в каждом из чисел должна быть одна или две цифры.
программа выполняет эхо-отображение вводимых чисел, а затем выводит их сумму.
ввод каждого числа завершается нажатием клавиши .
запускается программа с помощью команды ADDER.
Слайд 5
Первый цикл тестирования.
Проверяется стабильность работы программы.
Шаги 1
- 3.
Следует провести 4 основных типа ввода
для тестирования:
- допустимые входные значения;
- недопустимые входные значения;
- ввод с редактированием;
- несвоевременный ввод;
В случае, если проблемы в работе найдены, составляется отчет:
Слайд 7
Первый цикл тестирования.
Шаг 1. Начнем с простого
и наиболее очевидного теста
С программой нужно познакомиться: посмотреть, оценить
стабильность.
В программах, предоставленных для первого формального тестирования, часто сразу же происходит сбой. Не стоит тратить на них много времени.
Слайд 8
Первый цикл тестирования
Отчет о проблемах,
выявленных первым тестом
Программа работает — она приняла числа 2
и 3 и вернула 5. Но проблемы все же есть. Для их описания составляется отчет.
1. Ошибка проектирования. Нет никаких указаний на то, с какой программой вы работаете. Откуда вам знать, что именно с той, которая нужна?
Слайд 9
Первый цикл тестирования
Отчет о проблемах,
выявленных первым тестом (продолжение)
2. Ошибка проектирования. На экране нет
никаких инструкций. Откуда вам знать, что нужно делать? Что, если вы вводите недопустимые числа?
Отобразить инструкцию на экране не трудно, и она всегда будет перед глазами, в то время как печатная документация может потеряться.
Слайд 10
Первый цикл тестирования
Отчет о проблемах,
выявленных первым тестом (продолжение)
3. Ошибка проектирования. Как остановить программу?
Эта инструкция тоже должна быть на экране.
4. Ошибка кодирования. Сумма (число 5) выведена в стороне от слагаемых.
Слайд 11
Первый цикл тестирования
Шаг 2. Составим заметки о
том, что еще должно быть протестировано
Выполнив первые, и самые
очевидные тесты, следует подумать о том, что еще следует протестировать.
Свои соображения нужно записать: одни из записей примут форму заметок, другие же могут представлять собой достаточно строго формализованные описания серий тестов.
Слайд 12
Первый цикл тестирования
Шаг 2 (продолжение)
Такие документированные группы
тестов в дальнейшем могут послужить для проверки следующих версий
программы.
Пример на рис. 1.4.
Слайд 14
Первый цикл тестирования
Шаг 2. (продолжение)
Эти тесты охватывают
все допустимые входные данные программы — пары чисел, которые
ей полагается складывать правильно.
В первом тесте вы ввели два числа и проверили результат. На рис. 1.4 для тестирования программы предлагается восемь примеров.
Слайд 15
Первый цикл тестирования
Шаг 2. (продолжение)
Прежде всего, тесты
были подобраны так, чтобы каждая цифра встречалась в них
хотя бы один раз. Мы подобрали по одной комбинации чисел на каждую из вероятных проблем.
А чтобы определить, на каких данных вероятнее всего возникнут проблемы, эффективнее всего проверить граничные условия.
Слайд 16
Первый цикл тестирования
Шаг 3. Проверим допустимые значения
и посмотрим, что происходит
Серия тестов, приведенных на рис. 1.4,
охватывает только допустимые значения входных данных программы.
На следующем этапе тестирования можно создать такую же серию тестов для недопустимых значений.
Еще одна серия тестов может быть предназначена для проверки редактирования чисел: вы вводите значение, затем изменяете его и только после этого нажимаете .
Слайд 17
Первый цикл тестирования
Шаг 4.
Формальное тестирование
окончено. В дело вступает интуиция. Пробуйте все, что придет
вам в голову.
Шаг 5.
Самое время окинуть взглядом программу в целом, увидеть ее недостатки и продумать стратегию будущего тестирования.
Слайд 18
Первый цикл тестирования
Шаг 4. Немного тестирования в
режиме "свободного полета"
Разрабатывать новые тесты пока нет никакого смысла,
поскольку к новой версии они могут просто не подойти.
Поэтому можно провести несколько чисто исследовательских экспериментов — все, что придет в голову.
Слайд 19
Первый цикл тестирования
Замечания
Из двух тестов, от которых
ожидается один и тот же результат, проводите только один
Для
выполнения всегда выбирайте из класса те тесты, на которых вероятнее всего ожидается сбой программы
Так, часто это – граничные значения, на которых программа меняет свое поведение. С двух сторон проверять.
Слайд 20
Первый цикл тестирования
Шаг 5. Подведем итоги
тому, что мы узнали о программе и ее недостатках
Эта
последняя работа — только для вас. Она не всегда необходима, но часто оказывается очень полезной.
Самое время мысленно отступить немного назад и окинуть взглядом программу в целом, увидеть ее недостатки и продумать стратегию будущего тестирования.
Слайд 21
Первый цикл тестирования. Итоги
Вы начали с простейшего из
возможных тестов. Программа его прошла, вы разработали серию формальных
тестов, чтобы проверить, как она работает с допустимыми данными.
Часть проверок программа не прошла, вы провели несколько неформальных экспериментов и выяснили, что программа вообще очень нестабильна.
Если бы программа успешно прошла первую серию тестов, вы бы разработали вторую, более обстоятельную. И далее продолжили бы ее тестирование, пока не исчерпались бы идеи или отведенное время.
Слайд 22
Второй цикл тестирования. Добиваемся исправления ошибок.
Шаг
1.
Программист должен составить резолюцию на ваших отчетах об
ошибках. Из резолюций на ваших отчетах вы увидите, какие тесты больше проводить не нужно, а какие нужно заменить новыми.
Теперь у вас появятся новые идеи для тестирования.
Слайд 23
Второй цикл тестирования
Пример резолюции программиста
Слайд 24
Второй цикл тестирования
Шаг 2. Готовьтесь поспорить с автором
Проанализируйте
комментарии к ошибкам, которые не будут исправлены. Возможно, следует
провести дополнительное тестирование
Чтобы добиться у программиста исправления ошибки, нужно продемонстрировать ситуацию, в которой ее появление абсолютно недопустимо (например, программа «зависает»)
Слайд 25
Второй цикл тестирования
Шаг 3
Просмотрите записи, которые вы
сделали в прошлый раз, добавьте к ним новые замечание,
и приступайте к тестированию
После исправлений ошибок снова повторите старые и нудные тесты и убедитесь, что программа по-прежнему работает на них правильно.
Слайд 26
Итог второго цикла тестирования
По мере дальнейшей разработки программы
вы будете создавать новые серии формальных тестов и выполнять
их снова и снова.
В последнем цикле тестирования все тесты нужно снова выполнить в полном объеме.
Когда работа над проектом приблизится к концу, придет время самых строгих и самых сложных тестов.
Ваша главная задача — добиться, чтобы те, кто отвечает за ход разработки, до конца понимали серьезность каждой описанной вами проблемы.
Слайд 27
Глава 2. Желаемое и действительное
в жизни тестировщика
Полностью протестировать
программу невозможно.
Хорошее тестирование – не исправление всех ошибок,
а гарантирование того, что программа будет работать правильно.
Правильный подход к проверке научной теории заключается в поиске не подтверждающих, а опровергающих ее фактов — попытке доказать, что в ней есть ошибки. И чем более тщательное тестирование выдерживает выдвинутая теория, тем больше у нас уверенности в том, что она верна.
Слайд 28
Глава 2 Желаемое и действительное
в жизни тестировщика.
причины, по
которым полное тестирование не может быть выполнено
никогда
Невозможно проверить реакцию
программы на каждую комбинацию входных данных
Пользовательский интерфейс программы обычно слишком сложен для полного тестирования.
На обнаружение и исправление ошибок тратится от 40 до 80 процентов общей стоимости разработки ПО.
Слайд 29
Глава 2. Желаемое и действительное
в жизни тестировщика.
Замечания
Результаты
проверки очень сильно зависят от ваших ожиданий (психологический фактор).
Чем больше вы выведите ошибок и чем серьезнее они будут, тем лучше.
Поэтому приступайте к тестированию, надеясь на наличие ошибок – они всегда есть.
Слайд 30
Глава 2 Желаемое и действительное
в жизни тестировщика.
Замечания
Невозможно
проверить реакцию программы на каждую комбинацию входных данных:
в предыдущей главе описывалась совсем простенькая программка. И даже для нее объем возможных входных данных был огромным.
Чтобы проверить эту программу полностью, нужно провести множество разнообразных тестов.
Слайд 31
Следует проверить все недопустимые входные значения:
Вам следует поверить, как обрабатывает программа не только допустимые
входные данные, но и вообще все, что пользователь может ввести с клавиатуры
Глава 2 Желаемое и действительное
в жизни тестировщика.
Замечания
Слайд 32
Следует проверить все способы
редактирования входных данных:
если программа позволяет редактировать вводимые числа, нужно убедиться, что
она это делает правильно.
Проверьте, сможете ли вы изменить любой введенный символ.
Протестируйте повторное редактирование: введите число, измените его, потом измените еще раз.
Глава 2 Желаемое и действительное
в жизни тестировщика.
Замечания
Слайд 33
Следует проверить реакцию программы на ввод в каждый
момент ее работы:
нужно попробовать ввести данные, когда
программа их совсем не ждет.
Вводите числа, пока программа еще обрабатывает предыдущие данные, выводит на экран результат или отображает сообщение.
Глава 2 Желаемое и действительное
в жизни тестировщика.
Замечания
Слайд 34
Итак, для чего же тестируют программы?
Программу тестируют для
того, чтобы найти в ней ошибки
Смысл тестирования заключается в
поиске проблем. Ваша цель — найти их как можно больше, и чем серьезнее найденные проблемы, тем лучше.
Помните, что времени всегда очень мало, и старайтесь использовать его как можно эффективнее.
Если тест позволил выявить проблему, значит, он успешный. А тест, не выявивший проблем, был потерей времени.