Результаты тестирования системы
Тестирование является одним из этапов жизненного цикла программного обеспечения, направленным на улучшение качественных характеристик. В случае программного обеспечения тестирование - это процесс многократного выполнения программы для обнаружения ошибок.
Принципы тестирования:
– процесс тестирования является более эффективным, если проводится не разработчиком программы;
– описание ожидаемых значений результатов тестовых запусков должно быть необходимой частью набора тестовых данных;
– нужно внимательно изучать результаты применения каждого теста;
– испытания неправильных и непреднамеренных входных данных должны разработаны так же внимательно, как для правильных;
– необходимо проверить не только, делает ли программа то, для чего она предназначена, но и делает ли она то, что она не должна делать;
– вероятность наличия необнаруженных ошибок в части программы пропорциональна числу ошибок, уже обнаруженных в этой части.
Методы тестирования:
– статическое тестирование – наиболее формализованное, основано на правилах структурного построения программ и обработки данных, проверка степени реализации этих правил осуществляется без изменения объектного кода программы путем формального анализа текста программы в язык программирования;
– детерминированное тестирование, которое требует повторного выполнения программы на компьютере с использованием определенных, специально отобранных наборов тестовых данных; мониторинг каждой комбинации входных данных и соответствующих результатов, а также каждого утверждения в спецификации тестируемой программы;
– стохастическое тестирование предполагает использование в качестве исходных данных набора случайных величин с соответствующими распределениями и для сравнения полученных результатов распределения случайных величин;
– тестирование в режиме реального времени – результаты обработки исходных данных проверяются на основе их времени прибытия, времени обработки и приоритета, динамики использования памяти и взаимодействия с другими программами, если отклонения от результатов программ от ожидаемых ошибок обнаруживаются, тогда время должно быть фиксированным и детермированным.
Детерминированное тестирование основывается на двух подходах: структурном тестировании и функциональном тестировании.
При построении пробных комплектов данных по принципу «белого ящика» (структурное тестирование) руководятся следующими критериями:
а) охват операторов – включает выбор тестового комплекта данных, который вызывает выполнение каждого оператора в программе по крайней мере один раз;
б) покрытие узлов ветвей (решение по покрытию) – включает в себя разработку ряда тестов, так что в каждой ветви узла был предусмотрен переход по ветвям «истина» и «ложь» хотя бы один раз;
в) охват условий – если узел ветви содержит более одного условия, то необходимо разработать ряд тестов, достаточных для того, чтобы возможные результаты каждого условия в решении выполнялись хотя бы один раз в каждой точке входа в программа;
г) комбинаторный охват условий – требует создания ряда тестов, чтобы все возможные комбинации условий приводили к каждому решению, и все точки входа выполнялись хотя бы один раз;
д) эквивалентный метод разбиения – построение тестов для методов эквивалентного разложения;
– анализ граничных значений – включает изучение ситуаций, возникающих на границах и вблизи границ разделов эквивалентности;
– метод функциональных диаграмм – состоит впреобразовании спецификации входной программы в функциональную диаграмму (диаграмму причинно-следственных связей) с использованием простейших булевских отношений, построение таблицы решений (метод обратной трассировки), которая является основой для написания эффективных наборов тестовых данных.
Критерии завершенности тестирования:
– когда срок, отведенный для графика тестирования, истёк;
– когда все тесты выполняются без обнаружения ошибок (т.е. сбой);
– критерий, основанный главным образом на здравом смысле и информации о количестве ошибок, полученных в процессе тестирования (график количества ошибок и время их время их появления, форму кривой можно определить, если тест равен продолжать или нет);
– подход, в котором количественные показатели надёжности, рассчитанные с использованием моделей надёжности, используются для определения критерия завершения испытания.
Для тестирования разработанной системы применялись методы детерминированного тестирования. Тестовые данные подбирались с учетом критериев покрытия операторов, покрытия узлов ветвления, покрытия условий и анализа граничных значений.
Всякая достаточно большая система не может быть протестирована за один раз. Поэтому можно выделить следующие этапы тестирования:
– тестирование модулей, которое производится в случае, если модуль может быть проверен автономно от других модулей. При этом необходимо убедительно продемонстрировать, что модуль работает корректно во всех граничных условиях;
– тестирование подсистем, целью которого является проверка сопряжения между собой модулей, входящих в подсистему, корректную передачу данных между ними;
– тестирование системы. На этом уровне выявляются ошибки сопряжения, сложные ошибки быстродействия и емкости, логические ошибки.
В качестве критериев полноты тестирования можно рекомендовать: число тестов, на которых была проверена программа; число часов правильного функционирования программы; процент модулей, проверенных при тестировании.