Лекции. Тестирование ПО (all in one) (1186159), страница 34
Текст из файла (страница 34)
Чтобыпокрыть все исходные ситуации, достаточно, чтобы N было не меньше двух.B,D,E0B,D,EA1CB,D,EAC2B,D,EA3CB,D,EA4CB,D,EA5CB,D,EA6CB,D,EA7CB,D,EA8CB,D,EACA — add(), Normal caseB — add(), Exceptional caseC — remove(), Normal caseD — remove(), Exceptional caseE — indexOf(), все случаиРисунок 2. Граф состояний автомата, моделирующего список, для значения параметра 9.Осталось оформить неявное описание такого автомата в виде тестового сценария.public scenario class ListTest{ListSpecification<Object> list = mediator VectorAdapter<Object>(target = new Vector()); // инициализируем используемый адаптерint maxSize = 9;Object[] objPool = new Object[] { new Object(), null };public static void main(String[] args) // метод запуска теста{ListTest test = new ListTest();// устанавливаем используемый алгоритм обходаtest.setExplorer(new jatva.exploration.DFSExplorer());test.run(); // выполняем тест}// блок, задающий вычисление текущего состоянияstate { return list.items.length; }scenario add(){if(list.items.length < maxSize) // добавляем элементы не всегда{iterate(int i = 0; i < maxSize; i++)iterate(Object o : objPool)list.add(i, o);}}scenario remove(){iterate(int i = 0; i < maxSize; i++)list.remove(i);}scenario indexOf(){iterate(Object o : objPool)list.indexOf(o);}}9Анализ результатов тестированияПри анализе результатов необходимо выполнить следующие действия.1.
Анализ обнаруженных ошибок.Отчеты по результатам тестирования содержат список обнаруженных нарушений.Нарушение может иметь различную природу.• Это может быть ошибка в спецификациях, адаптерах или сценариях,проявляющаяся как исключительная ситуация.Наличие такой ошибки, означает, что спецификации написанынеправильно. Может быть, это просто описка или ошибка в кодеспецификаций. Может быть, их автор рассчитывал на выполнениеопределенныхограничений,которые не соблюдаются.Стоитпроанализировать эти ограничения — быть может, это пропущенноеусловие, которое нужно проверять или инвариант. В любом случае нужновнести поправки в спецификацию, хотя причиной подобной ситуацииможет быть неожиданное поведение тестируемой системы.• Другой вид ошибок — нарушения в структуре автомата теста.Например, он может оказаться слишком большим, и после некоторогочисла переходов или состояний алгоритм обхода сообщит об этом, оннеожиданно оказаться недетерминированным или несвязным — алгоритмобхода может не найти способа вернуться в некоторое обобщенноесостояние, где он раньше уже был.Причиной таких ошибок чаще всего является неправильное построениетеста — неправильно проведена детерминизация или ограничениеслишком слабое (может быть, наоборот, нужно увеличить максимальновозможное число переходов), забыты или неправильно определены какието действия.Гораздо реже причиной такой ошибки может стать ошибка в тестируемойсистеме.
В этом случае, скорее всего, забыты какие-то проверки, которыепомогли бы выявить ее раньше.• Нарушение предусловия.Оно означает, что нужно исправить тест, чтобы данная операция невызывалась с некорректными аргументами.• Несоответствие между наблюдаемым поведением тестируемой системы иее моделью поведения.Такие несоответствия проявляются как нарушения постусловий иинвариантов, невыполнение дополнительных проверяемых ограничений всценариях, неожиданные исключения в тестируемой системе.В этом случае ошибка может быть как в спецификациях, адаптерах илитестах, так и в тестируемой системе. Чтобы выяснить это, нужнопроанализировать создавшуюся ситуацию, еще раз проверить нарушенныеограничения — действительно они должны быть выполнены в этом случаеи т.д.
Часто такой анализ приводит к ошибкам не в тестируемой системе, ав тестах или моделях.Только в том случае, если это действительно ошибка тестируемойсистемы, в тесты не нужно вносить исправлений.2. Анализ тестового покрытия.Отчеты анализируются и на предмет достигнутого покрытия, наличия непокрытыхситуаций и причин этого. Если достигнута желаемая полнота тестирования,разработку тестов можно прекратить. Если же непокрыты какие-то важныеситуации или общее покрытие недостаточно, нужно поправить имеющиеся тестыили разработать новые, нацеленные на еще не покрытые ситуации.Литература.