Тестирование программного средства 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Тестирование программного средства



 

Основные определения:

Тестирование (testing) — процесс выполнения программы (или части программы) с намерением (или целью) найти ошибки.

Доказательство (proof) — попытка найти ошибки в программе безотносительно к внешней для программы среде.

Контроль (verification) — попытка найти ошибки, выполняя программу в тестовой, или моделируемой, среде.

Испытание (validation) — попытка найти ошибки, выполняя программу в заданной реальной среде.

Аттестация (certification) — авторитетное подтверждение правильности программы. При тестировании с целью аттестации выполняется сравнение с некоторым заранее определенным стандартом.

Отладка (debugging) не является разновидностью тестирования. Хотя слова «отладка» и «тестирование» часто используются как синонимы, под ними подразумеваются разные виды деятельности.

Тестирование модуля, или автономное тестирование (module testing, unit testing), — контроль отдельного программного модуля, обычно в изолированной среде (т. е. изолированно от всех остальных модулей). Тестирование модуля иногда включает также математическое доказательство.

Тестирование сопряжений (integration testing) — контроль сопряжений между частями системы (модулями, компонентами, подсистемами).

Тестирование внешних функций (external function testing) — контроль внешнего поведения системы, определенного внешними спецификациями.

Комплексное тестирование (system testing) — контроль и/или испытание системы по отношению к исходным целям. Комплексное тестирование является процессом контроля, если оно выполняется в моделируемой среде, и процессом испытания, если выполняется в среде реальной, жизненной.

Тестирование приемлемости (acceptance testing) — проверка соответствия программы требованиям пользователя.

Тестирование настройки (installation testing) — проверка соответствия каждого конкретного варианта установки системы с целью выявить любые ошибки, возникшие в процессе настройки системы.

 

 

Аксиомы (принципы) тестирования

 

u Хорош тот тест, для которого высока вероятность обнаружить ошибку

u Одна из самых сложных проблем при тестировании — решить, когда нужно его закончить.

u Не нужно тестировать свою собственную программу.

u Необходимая часть всякого теста — описание ожидаемых выходных данных или результатов.

u Избегайте невоспроизводимых тестов, не тестируйте «с лету».

u Готовьте тесты как для правильных, так и для неправильных входных данных.

u Детально изучите результаты каждого теста.

u По мере того как число ошибок, обнаруженных в некотором компоненте программного обеспечения, увеличивается, растет относительная вероятность существования в нем необнаруженных ошибок.

u Поручайте тестирование самым способным программистам.

u Проект системы должен быть таким, чтобы каждый модуль подключался к системе только один раз.

u Никогда не изменяйте программу, чтобы облегчить ее тестирование.

u Тестирование, как почти всякая другая деятельность, должно начинаться с постановки целей.

   Приведем еще раз три наиболее важных принципа тестирования.

1. Тестирование — это процесс выполнения программ с целью обнаружения ошибок.

2. Хорошим считается тест, который имеет высокую вероятность обнаружения еще не выявленной ошибки.

3. Удачным считается тест, который обнаруживает еще не выявленную ошибку.

 

Рисунок 8 График соотношения между обнаруженными и необнаруженными ошибками

Модель Шумана

 

Модель Шумана строится на основе нескольких критериев:

¾ общее число команд в программе на машинном языке постоянно;

¾  в начале компоновочных испытаний число ошибок равно некоторой постоянной величине, и по мере исправления ошибок их становится меньше. В ходе испытаний программы новые ошибки не вносятся;

¾  ошибки изначально различимы, по суммарному числу исправленных ошибок можно судить об оставшихся;

¾  интенсивность отказов программы пропорциональна числу остаточных ошибок.

Предполагается, что до начала тестирования (т.е. в момент t=0) имеется M ошибок. В течение времени тестирования τ обнаруживается ε1(t) ошибок в расчете на одну команду в машинном языке.

Тогда удельное число ошибок на одну машинную команду, оставшихся в системе после времени тестирования τ, равно:

 

(1)

 

где I -- общее число машинных команд, которое предполагается постоянным в рамках этапа тестирования.

Предполагается, что значение функции количества ошибок Z(t) пропорционально числу ошибок, оставшихся в программе после израсходованного на тестирование времени τ.

 

Z (t) = C * ε2 (τ),

 

где С -- некоторая постоянная, t - время работы программы без отказов.

Тогда, если время работы программы без отказа t отсчитывается от точки t = 0, а τ остается фиксированным, функция надежности, или вероятность безотказной работы на интервале от 0 до t, равна

 

(2)

(3)

Нам необходимо найти начальное значение ошибок M и коэффициент пропорциональности С. Эти неизвестные оцениваются путем пропуска функционального теста в двух точках переменной оси отладки ta и tв, выбранных так, что ε1(ta)<ε1(td).

В процессе тестирования собирается информация о времени и количестве ошибок на каждом прогоне, т.е. общее время тестирования τ складывается из времени каждого прогона:

 

τ = τ1 + τ2 + τ3 + … + τn.

 

Предполагая, что интенсивность появления ошибок постоянна и равна λ, можно вычислить ее как число ошибок в единицу времени,

 

(4)

 

где Ai - количество ошибок на i - ом прогоне

Тогда .(5)

 

Имея данные для двух различных моментов тестирования ta и tв, можно сопоставить уравнения (3) при τa и τb:

 

(6)

(7)

 

Из соотношений (6) и (7) найдем неизвестный параметр С и М:

 

(8)

(9)

 

Получив неизвестные M* и C*, можно рассчитать надежность программы по формуле (2).

Пример 1.

Программа содержит 2 000 командных строк, из них, до начала эксплуатации (после периода отладки), 15 командных строк содержат ошибки. После 20 дней работы обнаружена 1 ошибка. Найти среднее время безошибочной работы программы и интенсивность отказов программы при коэффициенте пропорциональности, равном 0,7.

I=

2000

M=

15

t=

20

x=

1

C=

0,7

 

 

 

 

E1(t)=

0,0005

 

 

E2(t)=

0,007

 

 

P(t)=

0,906649

 

 

tср=

204,0816

 

 

λ=

0,0049

-- интенсивность отказов

 

Пример 2.

На условиях примера 1 определить вероятность безошибочной работы программы в течение 90 суток.

I=

2000

M=

15

t=

90

x=

1

C=

0,7

P(t)=

0,643393

 

 

 

Пример 3.

Определить первоначальное количество возможных ошибок в программе, содержащей 2 000 командных строк, если в течение первых 60 суток эксплуатации было обнаружено 2 ошибки, а за последующие 40 суток была обнаружена одна ошибка. Определить T0 – среднее время безошибочной работы, соответствующее первому и второму периоду эксплуатации программы и коэффициент пропорциональности.

I=

2000

 

 

 

t1=

60 суток

 

 

 

t2=

100 суток

 

 

 

x1=

2 ошибок

 

 

 

x2=

3 ошибок

 

 

 

T0=

30,333333

 

 

 

λ1= 0,033333

 

 

 

 

λ2=

0,03

 

 

 

C=

6,666667

 

 

 

E1(t1)=

0,001

 

 

 

E2(t2)=

0,0015

 

 

 

M=

12

 

 

 

Л2/Л1=

0,9

 

 

 

 

Модель Миллса

 

Использование этой модели предполагает необходимость перед началом тестирования искусственно «засорять» программу, т.е вносить в нее некоторое количество известных ошибок. Ошибки вносятся случайным образом и фиксируются в протоколе искусственных ошибок. Специалист, проводящий тестирование, не знает ни количества, ни характера внесенных ошибок до момента оценки показателей надежности по модели Миллса. Предполагается, что все ошибки (как естественные, так и искусственно внесенные) имеют равную вероятность быть найденными в процессе тестирования.

Тестируя программу в течение некоторого времени, собирают статистику об ошибках. В момент оценки надежности по протоколу искусственных ошибок все ошибки делятся на собственные и искусственные. Соотношение, называемое формулой Миллса,

N =

Дает возможность оценить первоначальное число ошибок в программе N. Здесь S – количество искусственно внесенных ошибок; n – число найденных собственных ошибок; V – число обнаруженных к моменту оценки искусственных ошибок.

 

Модель Джелински-Моранды

 

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

Функция плотности распределения времени обнаружения i-й ошибки, отсчитываемого от момента выявления (i – 1)-й ошибки, имеет вид

 

)

 

Где  – интенсивность отказов, которая пропорциональна числу еще не выявленных ошибок в программе:

 

 

Где N – число ошибок, первоначально присутствующих в программе; С – коэффициент пропорциональности.

Наиболее вероятные значения величин N и С определяются на основе данных, полученных при тестировании. Для этого фиксируют время выполнения программы до очередного отказа t1,t2,t3,…,tk. Значения N и С можно получить, решив систему уравнений

Где Q = ; A = ; B = .

Чтобы получить числовые значения λ, нужно подставить вместо N и С их возможные значения N и C. Рассчитав К значений по формуле (5) и подставив их в выражение (4), можно определить вероятность безотказной работы на различных временных интервалах.

 

Модель Липова

Липов модифицировал модель Миллса, рассмотрев вероятность обнаружения ошибки при использовании различного числа тестов. Если сделать то же предположение, что и в модели Миллса, т.е что собственные и искусственные ошибки имеют равную вероятность быть найденными, то вероятность обнаружения n собственных и V внесенных ошибок

Где m – количество используемых тестов, q – вероятность обнаружения ошибки в каждом из m тестов, рассчитанная по формуле ; S – общее количество искусственно внесенных ошибок; N – количество собственных ошибок, имеющихся в ПО до начала тестирования.


 

6. МЕТРИКИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ [4]

 

Критерий должен

· численно характеризовать основную целевую функцию программы;

· обеспечивать возможность определения затрат, необходимых для достижения требуемого уровня качества, а также степени влияния на показатель качества различных внешних факторов;

· быть по возможности простым, хорошо измеримым и иметь малую дисперсию.

Для измерения характеристик и критериев качества используют метрики.

Метрика качества программ - система измерений качества программ. Эти измерения могут проводиться на уровне критериев качества программ или на уровне отдельных характеристик качества. В первом случае система измерений позволяет непосредственно сравнивать программы по качеству. При этом сами измерения не могут быть проведены без субъективных оценок свойств программ. Во втором случае измерения характеристик можно выполнить объективно и достоверно, но оценка качества ПО в целом будет связана с субъективной интерпретацией получаемых оценок.

 

 



Поделиться:


Последнее изменение этой страницы: 2020-11-23; просмотров: 510; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.223.124.244 (0.093 с.)