Ошибки объединения модулей
Оценки ошибок Тестирование предназначено для поиска ошибок, а не для демонстрации того, что для некоторых данных программа работает правильно. Тем не менее, чем больше ошибок найдено, тем меньше уверенности в надежной работе модуля, так как если найдено много ошибок, то, во-первых, их было много и, во-вторых, возможно, многие ошибки остались необнаруженными. Поэтому необходимо разработать метод, позволяющий оценивать количество ошибок в модуле. Если приблизительное число ошибок известно, то, чем больше их найдено и исправлено, тем больше уверенности в корректности модуля. Намеренное внесение ошибок в текст Один из способов оценки числа ошибок заключается в преднамеренном внесении ошибок в программу; при этом считается, что во время тестирования будет обнаружен один и тот же процент намеренно внесенных ошибок и реальных ошибок, имеющихся в программе. Поэтому, когда проводится тестирование, необходимо уметь определять, сколько реальных и намеренно внесенных ошибок обнаружено. Пусть N — неизвестное число ошибок в модуле, S — известное число намеренно внесенных ошибок, п — количество найденных и исправленных ошибок us — количество найденных и исправленных намеренно внесенных ошибок. Будем считать, что s/S =n/N. (5.1) Тогда первоначальное количество ошибок в модуле можно приблизительно оценить по формуле (5.2): N=nS/s. (5.2) После тестирования остается N-n=n(S-s)/s (5.3) ошибок, т. е., если все намеренно внесенные ошибки найдены, имеется надежда, что и все первоначально существующие ошибки будут найдены. Степень уверенности в том, что существует не больше N ошибок в модуле, в который было намеренно внесено S ошибок, а п и s ошибок соответственно того и другого типа было обнаружено при тестировании, определяется выражением (5.4):
которое представляет степень уверенности в том, что все ошибки найдены [З]. В табл. 5.2 приведены значения степеней уверенности, вычисленные по формуле (5.5), для разных значений намеренно внесенных и первоначально существующих ошибок. Таблица 5.1 Степень уверенности в обнаружении всех ошибок
Чем больше ошибок, из числа намеренно внесенных, было обнаружено, тем выше уверенность в надежности модуля. Но чем больше реально существующих ошибок обнаружено, тем вероятнее, что есть еще другие, которые ппкя пймяпужить не удалось. Уравнение полученное из уравнения (5.5), позволяет определить количество ошибок, которые должны быть намеренно внесены в модуль, чтобы получить необходимую степень уверенности в его надежности [З]. Причем считается, что тестирование продолжается до тех пор, пока все намеренно внесенные ошибки не будут обнаружены. Например, можно считать, что обнаружение 5 ошибок дает 90% уверенности в том, что все ошибки найдены, если в модуль было намеренно внесено 60 ошибок, и в процессе тестирования все были обнаружены. Следует отметить, что необходимо вносить в модуль ошибки всех возможных типов, а именно: орфографические, пунктуационные, синтаксические, логические, ошибки в размещении, в типах данных и т. п. Можно ввести таблицу, в которой ошибки размещены в соответствии с их типами, и пользоваться ею. Можно случайно вносить ошибки в выбранные произвольным образом операторы модуля. Ошибки объединения модулей Фирмой IBM установлено, что в среднем одна ранее не обнаруженная ошибка появляется в каждых 100 операторах программы. Большинство ошибок содержится в сопряжениях модулей и операторах ввода-вывода. Такого рода ошибки затрагивают обычно сразу несколько модулей. После того как проведено тестирование отдельно каждого модуля, последние объединяются в систему. Экспериментально установлено, что в 90% всех новых модулей и в 15% старых необходимо вносить изменения. Приблизительно в 15% новых модулей и 6% старых следует внести более 10 изменений. Если осталось D старых модулей и сформировано М новых, число необходимых изменений N определяется эмпирически найденным выражением [3]:
N=2(0.9M+0.l5D)+23(0.lM+0.06D). (5.1) Другие оценки ошибок Эксперименты показали, что число ошибок в неотгестированных программах пропорционально Е^, где Е — мера Холстеда, характеризующая сложность программы. Коэффициент пропорциональности равен примерно 1/3200. В программах, пришедших стадии тестирования и отладки, это отношение сохраняется, но коэффициент пропорциональности уменьшается. Различные формулы оценки количества ошибок не учитывают вероятность внесения k новых ошибок при исправлении п старых. Вероятность того, что новый тестовый прогон позволит обнаруживать ошибки, будет зависеть от процента оставшихся ошибок. Последние ошибки обнаружить труднее. Формула позволяет установить среднее количество проверок, необходимых для обнаружения п ошибок. Здесь р — неизвестное значение, которое может быть определено экспериментально. Исходя из формулы (5.1), получаем формулу которая показывает, какой процент Р тестовых прогонов, необходимых для обнаружения всех N ошибок, был сделан, когда в процессе этих прогонов было найдено п ошибок. Если п=\0, по формуле (5.2) получим, что половина всех ошибок может быть обнаружена в первых 22 процентах тестовых прогонов, необходимых для обнаружения всех ошибок. Процент прогонов возрастает до 37, если требуется найти 7 из 10 ошибок, и до 66, если требуется обнаружить 9 ошибок из 10, т. е. третья часть времени затрачивается на обнаружение одной последней ошибки. Если в программе имеется 100 ошибок, то 90 обнаруживается за первые 44% тестовых прогонов. Этот закон, устанавливающий, что эффект от тестирования уменьшается со временем, позволяет сделать вывод о необходимости прекращать тестирование в тот момент, когда оно становится экономически невыгодным. Кроме того, можно утверждать, что в отлаженном модуле почти всегда остаются ошибки.
Воспользуйтесь поиском по сайту: ©2015 - 2025 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|