Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Ошибки объединения модулей

Оценки ошибок

Тестирование предназначено для поиска ошибок, а не для демонстрации того, что для некоторых данных программа работает правильно. Тем не ме­нее, чем больше ошибок найдено, тем меньше уверенности в надежной рабо­те модуля, так как если найдено много ошибок, то, во-первых, их было много и, во-вторых, возможно, многие ошибки остались необнаруженными. Поэтому необходимо разработать метод, позволяющий оценивать количество оши­бок в модуле. Если приблизительное число ошибок известно, то, чем больше их найдено и исправлено, тем больше уверенности в корректности модуля.

Намеренное внесение ошибок в текст

Один из способов оценки числа ошибок заключается в преднамеренном внесении ошибок в программу; при этом считается, что во время тестирова­ния будет обнаружен один и тот же процент намеренно внесенных ошибок и реальных ошибок, имеющихся в программе. Поэтому, когда проводится тес­тирование, необходимо уметь определять, сколько реальных и намеренно внесенных ошибок обнаружено. Пусть 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 Степень уверенности в обнаружении всех ошибок

s=S   n=N   сопц^У)      
5   0   0,83  
  0   0,91  
  0   0,95  
    0.71  
    0,83  
    0,91  
    0,625  
    0,77  
    0,87  

 

Чем больше ошибок, из числа намеренно внесенных, было обнаружено, тем выше уверенность в надежности модуля. Но чем больше реально сущест­вующих ошибок обнаружено, тем вероятнее, что есть еще другие, которые ппкя пймяпужить не удалось. Уравнение

полученное из уравнения (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 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...