Тестирование — это процесс исполнения программы, с целью обнаружения ошибок.
Тестирование процесс деструктивный (разрушительный), направленный на отыскание ошибок. Поэтому желательно чтобы процедуру тестирования осуществляли не заинтересованные в программе лица.
Достоверность тестирования систем определяется тем, кто будет ее тестировать и каков его образ мышления. Вопросы психологии тестирования выдвигаются на первый план. Одновременно, если мы тестируем МС, то к существующей стоимости МС нужно добавить дополнительную стоимость, связанную с затратами времени на тестирование. тестирование проводится как для аппаратной части, так и для программной части МС.
По стадиям различают следующие виды тестирования:
- отладка – проводится в процессе разработки модулей системы и ее сборки;
- итоговое тестирование работоспособности – проводится после полной сборки системы;
- тестирование предельных показателей – прогон системы с использованием экстремальных показателей окружающей среды и технологических процессов ( при повышенных/пониженных температурах, вибрациях, запыленности, в магнитных полях, в воде/тумане/дожде и т.д.);
- эксплуатационное тестирование – проводится при внедрении системы путем установки системы на место эксплуатации и прогон работы системы в течение определенного периода с использованием реальных задач и данных (изготовление изделий необходимого качества с необходимой скоростью из конкретного металла и т.д.).
Стратегически можно подойти к процедуре построения тестов по двум направлениям.
Стратегия “Черного ящика”, тестирование с управлением по данным или по входу/выходу. Такое тестирование имеет целью выяснить обстоятельства, в которых поведение МС не соответствует ее внешним спецификациям.
Стратегия “Белого ящика” позволяет исследовать внутреннюю структуру МС и направлена на исчерпывающее тестирование всех маршрутов программы МС.
Но эти стратегии не могут однозначно сказать, что МС, сданная в эксплуатацию, не имеет ошибок. Исчерпывающее тестирование в принципе не возможно по причине:
- количество тестов при сложной МС может превысить возможное время на их реализацию;
- за правильность логики отвечает человек;
- обнаружение ошибок, которые зависят от обрабатываемых данных тоже может быть неполной.
Традиционно объединяют методы “Черного” и “Белого ящика”, при этом руководствуясь рядом принципов.
1. Тест должен включать обязательно две компоненты:
- описание входных данных и объектов;
- описание точного результата.
2. Следует избегать тестирования МС ее автором за исключением процесса отладки.
3. Необходимо досконально изучать результаты применения каждого теста.
4. Тесты для неправильных и не предусмотренных входных данных следует разрабатывать также тщательно как для правильных и предусмотренных; необходимо проверять делает ли программа то, что она должна делать или то, что она не должна делать.
5. Вероятность наличия не обнаруженных ошибок в части МС пропорциональна количеству ошибок уже обнаруженных в этой части.
6. Данный процесс творческий в том смысле, что процесс применения методов тестирования должен быть творческим.
Традиционно при составлении крупных МС обязательно проводится процедура инспекции и сквозных проверок, в рамках которой инспекция из 4-х человек слушает доклад авторов о целях и задачах МС, логике программы и задает вопросы по заранее сформулированному перечню возможного блока ошибок (ошибки описания данных, интерфейса и т.д.) , каждому из блоков задаются вопросы. Задача инспекции состоит в том, чтобы обнаружить возможные ошибки.
При сквозном просмотре группа инспекторов выполняет роль вычислительных машин. Автор предлагает набор тестов, а инспекторы осуществляют просмотр по всему алгоритму (или программе). Тесты должны быть простые и небольшие.
Проверка за столом как правило осуществляется одним специалистом (желательно не разработчиком программы). Такой метод менее эффективен, чем два предыдущих, но используется в случае отсутствия кадров (специалистов, тестирующих МС).
Оценка посредством просмотра служит для проведения квалификационной самооценки специалистов. Это метод оценки анонимной МС в терминах ее общего качества, ремонтопригодности, простоты эксплуатации и ясности.
Проектирование тестов. Стратегии проектирования тестов заключается в том, чтобы попытаться уменьшить полноту тестирования настолько, насколько это возможно. При этом, если ввести ограничения на время, стоимость машинного времени и т.п., то ключевым вопросом тестирования становится: “Какое подмножество всех возможных тестов имеет наивысшую вероятность обнаружения большинства ошибок”.
Традиционно процедура отладки предшествует процедуре тестирования и направлена на обнаружение ошибок осуществляется в два этапа:
1. определяется природа и местонахождение подозреваемой ошибки в программе;
2. ошибка фиксируется и исправляется.
Существуют следующие методы отладки МС :
1 Методы “грубой силы”. Являются довольно неэффективными поскольку не требуют большого влияния и умственных затрат.
- метод и использование распечатки всей памяти;
- отладка в соответствии с общим предположением;
- использование автоматических средств отладки.
2 Методы индукции. Метод индукции представляет собой тщательный анализ возможно даже без выхода на машину. Процесс анализа от частного к целому. При использовании метода рассматриваются детали (симптомы ошибки, установление одним или несколькими методами и взаимосвязи между ними). Метод реализуется в два этапа:
- определения данных и процессов, имеющих отношение к ошибке, а не всех данных;
- организация данных и процессов, т.е. структурирование данных, имеющих отношение к ошибке, с целью выявления закономерности.
Процедура структурирования осуществляется по вопросам:
- Что — список общих симптомов ошибки;
- Где — место, в котором эти симптомы обнаружены;
- Когда — содержит все, что известно о времени появления ошибки;
- Какова степень — область распространения и степень вложенности ошибок.
Выдвигается гипотеза или несколько гипотез о причине ошибки с учетом закономерностей, выявленных в структуре симптомов ошибки.
Доказательство гипотезы — путем сравнения ее с первоначальными симптомами ошибки или данными. Она должна полностью объяснять существование этих симптомов.
3 Метод дедукции. Позволяет на основании некоторых общих теорий и предпосылок используя операции исключения и уточнения прийти к определенному заключению, т.е. к обнаружению места ошибки.
Последовательность действий:
-перечисление возможных причин или гипотез (причины не должны полностью объяснять ошибку);
-начинается процесс исключения причин, использование данных для исключения, поиск противоречий, в итоге отсеиваются все причины кроме одной;
-уточнение выбранной гипотезы: для этого привлекаются дополнительные данные и составляются спецификации;
-доказательство выбранной гипотезы, выявление ошибки или исключение выбранной гипотезы и начала процесса снова.
4 Прослеживание логики в обратном порядке. Метод эффективен для локализации ошибки в небольших программах. Отладка программы начинается в точке, где была обнаружена ошибка. Мысленно программа выполняется в обратном порядке. Рассуждаем, если в этой точке значение переменных было таким, то в следующей точке их значения будут следующими и вычислить их. Таким образом можно будет обнаружить место в программе, где состояние ее соответствовало ожидаемому и соответственно отличалось от ожидаемого.
5 Метод сознательных ошибок. Специалист сознательно делает сбои в МС и ошибки в программе и тем самым могут обнаружится многие другие ошибки МС.