Scientific journal
Fundamental research
ISSN 1812-7339
"Перечень" ВАК
ИФ РИНЦ = 1,674

INTERMITTENT SOFTWARE DEFECTS LOCALIZATION USINGCHI-SUARED TEST AND ONE-WAY ANOVA

Petrosyan G.S. 1 Titov V.A. 1
1 Plekhanov Russian University of Economics
Defect management is one of the key areas in software testing.There are defects that are referred to as intermittent. One of the most sophisticated activitiesrelated to intermittent defects is their localization.This article is dedicated to the development oftwo models for detecting the external factors, which influence the probability of intermittent defect reoccurrence.In the first model implemented in the article the hypothesis oftwo random variables (defect occurrence and some external factor)independenceis tested using chi-squared criterion. The second model is based on one-way analysis of variance (ANOVA). Each of the mathematical models is provided by hands-on examples and R program code as well. R scripts presented in the article are implemented forworking with input data, statistical hypothesis testingand plotting. The suggestedmathematical methods are primarily aimed at software developers, also results of the work can be used in practical work of manual test engineers, automation test engineers and performance test engineers.
software testing
intermittent defects
statistical hypothesis testing
contingency tables
chi-squared test
one-way analysis of variance
R programming language

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

Работа с плавающими дефектами является одной из наиболее неразработанных проблем в современной литературе по тестированию и обеспечению качества. Также в существующих на данный момент инструментальных средствах тестирования отсутствует функциональность для работы с данным видом дефектов.

Проблема плавающих дефектов подробно рассматривается в работе [2]: дано определение плавающих дефектов, приведена их классификация, рассмотрены основные особенности и риски, связанные с управлением данными дефектами.

Также в работе [2] предлагается решение следующих задач:

- Грамотное описание дефекта.

- Оценка критичности.

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

Настоящая статья является продолжением работы [2]. Цель статьи – разработка двух математических моделей для локализации плавающего дефекта. Актуальность статьи объясняется тем, что локализация любого дефекта является первым этапом в процессе его исправления.

Перейдём к рассмотрению первой модели.

Предположим, имеется некоторый внешний фактор, который может находиться только в одном из двух различных состояний. Требуется проверить предположение о том, что данный фактор оказывает влияние на вероятность проявления дефекта.

Пусть р1 – вероятность проявления дефекта при состоянии 1 внешнего фактора, а р2 – вероятность проявления дефекта, когда данный фактор находится в состоянии 2.

Проверяется гипотеза H0, утверждающая, что вероятности проявления дефекта не отличаются в зависимости от рассматриваемого фактора.

petr01.wmf

petr02.wmf

Для проверки данной гипотезы осуществим несколько попыток воспроизвести дефект при каждом из двух состояний внешнего фактора.

Введём следующие обозначения:

- petr03.wmf – количество раз, когда дефект воспроизвёлся при состоянии i фактора (i = 1, 2);

- petr04.wmf – количество раз, когда дефект не воспроизвёлся при состоянии i фактора (i = 1, 2);

- petr05.wmf – общее число испытаний при состоянии i фактора (i = 1, 2);

- petr06.wmf – общее число испытаний, в которых дефект проявился;

- petr07.wmf – общее число испытаний, в которых дефект не проявился;

- petr08.wmf – общее число испытаний.

Результаты экспериментов удобно представить в виде таблицы сопряженности (табл. 1).

Таблица 1

Общий вид таблицы сопряжённости для анализа плавающего дефекта

 

Дефект проявился

Дефект не проявился

Сумма

Фактор в состоянии 1

n11

n12

n1.

Фактор в состоянии 2

n21

n22

n2.

Сумма

n.1

n.2

 

Общая сумма

n

Для тестирования гипотезы о равенстве p1 = p2 можно воспользоваться критерием хи-квадрат [1]. Данный статистический критерий можно использовать при выполнении условий

n > 20, (1)

petr09.wmf, j = 1, 2. (2)

Расчётное значение критерия имеет следующий вид:

petr10.wmf (3)

При petr11.wmf гипотеза H0 согласуется с результатами наблюдений на уровне значимости α;

При petr13.wmf гипотеза H0 отклоняется.

В данных формулах petr14.wmf – это критическая точка распределения хи-квадрат, где α – уровень значимости.

В качестве примера рассмотрим тестирование автоматизированной системы для оценки кредитных рисков. Периодически при попытке загрузки данных о клиентах из смежной MDM-системы (masterdatamanagement) возникает сбой. Система оценки рисков и MDM-система интегрированы через ESB (enterpriseservicebus). За месяц до обнаружения дефекта была произведена миграция на новую систему MDM, разработанную другим вендором. Проверим предположение о влиянии системы MDM на плавающий дефект. Для этого совершим 50 попыток воспроизвести дефект, затем осуществим переключение на старую MDM и совершим ещё 50 попыток. Результаты эксперимента зафиксируем в табл. 2.

Таблица 2

Статистика проявления дефекта в рамках примера с системой оценки кредитных рисков

 

Дефект проявился

Дефект не проявился

Сумма

MDM система (новая)

12

38

50

MDM система (нецелевая)

7

43

50

Сумма

19

81

 

Общая сумма

100

Проверим условия (1) и (2).

petr15.wmf

petr16.wmf

Следовательно, для проверки гипотезы можно воспользоваться критерием хи-квадрат.

petr17.wmf

petr18.wmf

petr19.wmf

Из последнего неравенства следует, что гипотеза H0 принимается. Это означает, что миграция данных о клиентах в новую MDM не оказывает значимого влияния на проявление плавающего дефекта. Дефект, вероятнее всего, относится к системе оценки рисков либо к ESB.

Продемонстрируем решение данной задачи в R при помощи расчета p-значения. Выполним следующий скрипт R [6]:

defects<- matrix(c(12, 38, 7, 43), nrow = 2, byrow = TRUE)

chisq.test(defects, correct=FALSE) # тест хи-квадрат

В результате исполнения скрипта будут получены следующие результаты (рис. 1).

X_test_statistic<-chisq.test(defects)$statistic # 1. Вычислениерасчетногозначения

X_critical_value<- qchisq(0.05,1, lower.tail=FALSE)# 2. Вычислениекритическогозначения

x=seq(0,6,by=0.01)# 3. Построение графика плотности распределения

y1=dchisq(x, 1, ncp = 0, log = FALSE)

plot(x,y1,type="l",xlab="x",ylab="p(x)",ylim=c(0,1), las=1, bty="n", axes = FALSE)

axis(1, pos=0)# 4. ПостроениеосиOX

axis(2, pos=0, las=1)# 5. ПостроениеосиOY

S<- seq(from = X_critical_value, to = 6, by = 0.001)# 6. Заливкакритической области

x <- c(X_critical_value, S, 6)

y <- c(0, dchisq(S, 1, ncp = 0, log = FALSE), 0)

polygon(x, y, col = "grey", lty = 1, border = "black")

points(X_test_statistic,0, pch=19) # 7. Отметим на графике расчетное значение

text(X_test_statistic, 0, "x^2расч", pos=3)

points(X_critical_value,0, pch=19) # 8. Отметим на графике критическое значение

text(X_critical_value, 0, "x^2крит", pos=3, offset=0.7)

petr1.tif

Рис. 1. Результаты исполнения скрипта теста хи-квадрат в среде RStudio

Данные результаты необходимо интерпретировать следующим образом:

- X-squared – это величина petr20.wmf, рассчитанная по формуле (3);

- p-value – это вероятность того, что случайная величина petr21.wmf окажется больше либо равна petr22.wmf.

Поскольку petr23.wmf, то гипотеза H0 принимается.

Проиллюстрируем тестирование гипотезы графически, выполнив следующий скрипт [6]:

petr2.tif

Рис. 2. График плотности вероятности χ2(1) с закрашенной критической областью, с отмеченными на графике расчётным и критическим значениями

В основе второй модели, разработанной в рамках данной статьи, лежит аппарат одномерного дисперсионного анализа (ANOVA).

Рассмотрим внешний фактор, который может находиться в одном из различных состояний. Обозначим через mi – среднее число по попыток до воспроизведения дефекта при i состоянии фактора, i = 1, 2,…,l.

Требуется проверить следующую гипотезу:

petr24.wmf

petr25.wmf

Для проверки гипотезы H0 осуществим nk испытаний для каждого из возможных состояний k = 1, 2…l фактора. Результат каждого испытания – число попыток до проявления дефекта.

Введём следующие обозначения:

- nk – число наблюдений при состоянии k фактора;

- petr26.wmf – общее число наблюдений.

Доказано [4], что:

petr27.wmf,

где

- petr28.wmf – сумма квадратов отклонений выборочных средних petr29.wmf от общего среднего petr30.wmf;

- petr31.wmf – сумма квадратов отклонений наблюдений от выборочных средних групп (внутри групп);

- petr32.wmf – распределение Фишера с l – 1 и n – l степенями свободы.

Расчётное значение может быть рассчитано по следующей формуле:

petr33.wmf (4)

Если petr34.wmf, то гипотеза H0 не противоречит результатам наблюдений и принимается.

Если petr35.wmf, то гипотеза H0 отклоняется, и следует считать, что среди значений petr36.wmf имеется хотя бы два не равных друг другу.

В формулах выше petr37.wmf – критическая точка распределения Фишера с l – 1 и n – l степенями свободы при уровне значимости α.

Вернёмся к примеру с риск-системой. Проверим предположение, что на вероятность проявления дефекта оказывает влияние нагрузка на систему (табл. 3).

Таблица 3

Статистика проявления дефекта в зависимости от уровня нагрузки

 

Число попыток до проявления дефекта

 

Уровень нагрузки 1

4

2

3

5

5

3

n1 = 6

Уровень нагрузки 2

6

5

4

7

6

8

n2 = 6

Уровень нагрузки 3

7

9

8

7

8

6

n3 = 6

Уровень нагрузки 4

1

7

3

8

5

7

n4 = 6

 

n = 24

Осуществим необходимые расчёты для проверки гипотезы H0:

l = 4,

l – 1 = 3,

n – l = 20,

Q1 = 46,17,

Q2 = 59,67,

petr38.wmf

petr39.wmf

petr40.wmf

H0 в нашем случае отклоняется и принимается гипотеза H1. Можно сделать вывод о значимо различных результатах испытаний при различных уровнях нагрузки. Это означает, что нагрузка на систему оказывает влияние на вероятность проявления дефекта.

Выполним следующий скрипт в R [5]:

Level1<-c(4,2,3,5,5,3) # вектор данных для уровня нагрузки 1

Level2<-c(6,5,4,7,6,8) # вектор данных для уровня нагрузки 2

Level3<-c(7,9,8,7,8,6) # вектор данных для уровня нагрузки 3

Level4<-c(1,7,3,8,5,7) # вектор данных для уровня нагрузки 4

# F-тест

Combined_Groups<-data.frame(cbind(Level1, Level2, Level3, Level4))

Stacked_Groups<-stack(Combined_Groups)

Anova_Results<-aov(values ~ ind, data = Stacked_Groups)

summary(Anova_Results)

Будут получены следующие результаты (рис. 3).

Построим график плотности распределения F(2,15):

F_test_statistic<- 5.158# 1. Вычисление расчетного значения

F_critical_value<-qf(0.05, 3, 20, lower.tail = FALSE, log.p = FALSE) # 2. Вычисление критического значения

x=seq(0,7,by=0.01)# 3. Построение графика плотности распределения

y1=df(x, 3, 20, log = FALSE)

plot(x,y1,type="l",xlab="x",ylab="p(x)",ylim=c(0,0.8), las=1, bty="n", axes = FALSE)

axis(1, pos=0) # 4. Построение оси OX

axis(2, pos=0, las=1) # 5. Построение оси OY

S<- seq(from = F_critical_value, to = 6, by = 0.001) # 6. Заливка критической области

x <- c(F_critical_value, S, 6)

y <- c(0, df(S, 3, 20, log = FALSE), 0)

polygon(x, y, col = "grey", lty = 1, border = "black")

points(F_test_statistic,0, pch=19) # 7. Отметим на графике расчетное значение

text(F_test_statistic, 0, "Fрасч", pos=3)

points(F_critical_value,0, pch=19) # 8. Отметим на графике критическое значение

text(F_critical_value, 0, "Fкрит", pos=3, offset=1.3)

petr3.tif

Рис. 3. Результаты выполнения скрипта для тестирования гипотезы в среде RStudio

Интерпретация результатов выполнения скрипта:

- Fvalue – величина Fрасч, вычисленная по формуле (4).

- Pr(> F) – это вероятность того, что случайная величина F окажется больше либо равна Fрасч.

petr41.wmf

Снова получаем, что принимается гипотеза H1.

petr4.tif

Рис. 4. Плотность распределения F(2,15)с закрашенной критической областью, с отмеченными на графике расчётным и критическим значениями

petr5.tif

Рис. 5. Диаграмма размаха в рамках примера с уровнями нагрузки

Выполним следующий скрипт R для построения диаграммы размаха, чтобы показать неоднородность наблюдений при разных уровнях нагрузки:

boxplot(values ~ ind, data = Stacked_Groups, xlab="Уровень нагрузки", ylab="Количество попыток до проявления дефекта")

Таким образом, разработаны два инструментальных средства на языке программирования R, которые могут быть использованы для локализации плавающих дефектов в цепочке из нескольких автоматизированных систем либо в отдельной системе.

Данные инструментальные средства могут быть использованы в практической деятельности разработчиков и специалистов по тестированию, а также в учебной деятельности. Внедрение данных средств можно рассматривать как этап оптимизации процессов тестирования с использованием методологии TPINext [3] (рассмотренные в статье модели и инструментальные средства соответствуют десятой ключевой области TPINext – «Управление дефектами»).