Predzazhita 2009 v16

28
1 Метод редукции тестового набора для интеграционного тестирования Д.Ю.Кичигин Научный руководитель: д.ф.-м.н. А.К.Петренко Институт системного программирования Российской академии наук

Transcript of Predzazhita 2009 v16

Page 1: Predzazhita 2009 v16

1

Метод редукции тестового набора для интеграционного

тестирования

Д.Ю.Кичигин

Научный руководитель:д.ф.-м.н. А.К.Петренко

Институт системного программированияРоссийской академии наук

Page 2: Predzazhita 2009 v16

2* ANSI/IEEE Std 610.12-1990, IEEE Standard Glossary of Software Engineering Technology.

The Institute of Electrical and Electronics Engineers, New York, 1990.

Интеграционное тестирование – тестирование взаимодействия между интегрируемыми компонентами программного обеспечения.*

Регрессионное тестирование – повторное тестирование ПО с целью убедиться что внесенные изменения не привели к неожидаемым эффектам.*

Особенность регрессионного интеграционного тестирования:

Проблема отбора тестов

Регрессионное интеграционное тестирование ПО

Page 3: Predzazhita 2009 v16

3

Регрессионное интеграционное тестирование ПО

* ANSI/IEEE Std 610.12-1990, IEEE Standard Glossary of Software Engineering Technology. The Institute of Electrical and Electronics Engineers, New York, 1990.

Интеграционное тестирование – тестирование взаимодействия между интегрируемыми компонентами программного обеспечения.*

Регрессионное тестирование – повторное тестирование ПО с целью убедиться что внесенные изменения не привели к неожидаемым эффектам.*

Особенность регрессионного интеграционного тестирования:

Проблема отбора тестов

Page 4: Predzazhita 2009 v16

4

Регрессионное интеграционное тестирование ПО

* ANSI/IEEE Std 610.12-1990, IEEE Standard Glossary of Software Engineering Technology. The Institute of Electrical and Electronics Engineers, New York, 1990.

Интеграционное тестирование – тестирование взаимодействия между интегрируемыми компонентами программного обеспечения.*

Регрессионное тестирование – повторное тестирование ПО с целью убедиться что внесенные изменения не привели к неожидаемым эффектам.*

Особенность регрессионного интеграционного тестирования:

Проблема отбора тестов

Page 5: Predzazhita 2009 v16

5

Задача редукции набора тестов

“ состоит в создании набора тестов меньшего размера, но при этом, желательно, с неменьшей способностью обнаруживать ошибки “ *

В контексте регрессионного интеграционного тестирования такая редукция позволяет:

• отобрать из исходного набора тестов набор меньшего размера, нацеленного на регрессионное тестирование взаимодействий

• вследствие этого, уменьшить затраты на выполнение программного обеспечения на тестовом наборе

* McMaster, S. and Memon, Call Stack Coverage for Test Suite Reduction, ICSM, pp.539-548, 21st IEEE International Conference on Software Maintenance (ICSM'05), 2005

Page 6: Predzazhita 2009 v16

6

Существующие методы

Используют метрики покрытия исходного кода, полагающиеся на статический анализ и/или инструментирование исходного кода ПО.

(+) позволяют достаточно хорошо сокращать набор тестов за счет использования статического анализа исходного кода

() непрактичны для программного обеспечения большого объема

() неприменимы для тестирования взаимодействий с участием бинарных программных компонент

() требуют специализированные средства инструментирования кода – сильно зависимы от используемой платформы/операционного окружения

() вследствие работы в терминах исходного кода, сильно зависимы от конкретного языка программирования.

Page 7: Predzazhita 2009 v16

7

Цель работыИсследование, разработка и апробация метода редукции тестового набора для

регрессионного интеграционного тестирования, применимого в условиях отсутствия доступа к исходному коду

Задачи:

− Исследовать виды взаимодействия между модулями ПО и типичные для этих видов интеграционные ошибки;

− Разработать модель процесса взаимодействия интегрируемых модулей, адекватную задаче анализа взаимодействия модулей при запуске различных тестов;

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

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

Page 8: Predzazhita 2009 v16

8

Рассматриваемые взаимодействия и интеграционные ошибки

Интеграционная ошибка – ошибка, возникающая при передаче некорректного значения между взаимодействующими модулями. *

* Delamaro, M. E., Maldonado, J. C., and Mathur, A. P., Interface Mutation: an approach to integration testing, IEEE TSE, Vol. 27, No. 3, March 2001, pp228-247.

Рассматриваемые взаимодействия:• Попарные взаимодействия модулей “вызывающий/вызываемый”

(модуль F вызывает методы модуля G);

• Взаимодействия только через интерфейс функций, общих данных нет;

• Взаимодействия осуществляются синхронно в одном потоке/процессе.

F

G

Некорректные данные

Некорректный вывод

F

G

Некорректные данные

Некорректный вывод F

G

Некорректные данные

Некорректный вывод

Некорректные данные

Корректные данные

(a) (b) (c)

Page 9: Predzazhita 2009 v16

9

Предложенный метод редукции

Основная идея традиционных структурных методов редукции:─ Используют метрики покрытия исходного кода для итеграционного

тестирования

─ Состоят из 3 этапов:1. статический анализ структуры исходного кода

2. запуск ПО на наборе тестов и сбор информации о достигнутом покрытии кода

3. редукция набора тестов на основе собранной информации о покрытии кода

Идея предложенного метода:─ Основан на эвристическом алгоритме минимизации набора тестов

─ Анализируется покрытие точек взаимодействия между модулями

─ Состоит из 2 этапов:1. запуск ПО на наборе тестов и сбор информации о выполненных

взаимодействиях

2. редукция набора тестов на основе собранной информации о взаимодействиях между модулями

Page 10: Predzazhita 2009 v16

10

Модель взаимодействия

Модель поведения взаимодействия – множество последовательностей вызовов интерфейсных функций длины К, выполненных во время тестирования взаимодействия.

fopen fread fread fread fread fwrite fclose

fopen fread fread fread

fread fread fread fread

fread fread fread fwrite

fread fread fwrite fclose

fopen fread fread fread fread fwrite fclose

fopen fread fread fread fread fwrite fclose

fopen fread fread fread fread fwrite fclose

fopen fread fread fread fread fwrite fclose

…FILE* fp = fopen(…);for (int i=0; i<4; i++){ fread(fp,…);}fwrite(fp, …);fclose(fp);…

Трасса взаимодействия

“Скользящее окно” размера K = 4 Модель взаимодействия

Page 11: Predzazhita 2009 v16

11

Сравнение моделей

Теорема: Выражение (*) есть отношение эквивалентности на множестве моделей взаимодействия

Свойства: Адаптивность для учета значений параметров других типов

]),())name(),(name([

]),())name(),(name([),(

1

1

21

22 11 1

12

11 22 1

21

n

i

kk

Ms Ms

K

k

kk

n

i

kk

Ms Ms

K

k

kk

ii

ii

xyeqff

yxeqffMM

(*)

Учет значений параметров функций:

Скалярные номинальные: eq(x,y) = (x,y), где - отношение равенства

Скалярные числовые: eq(x,y) = (interval(x),interval(y))

Указатели: eq(x,y) = 1, если x=y= NULL; либо x!= NULL, y!= NULL

Другие типы: eq(x,y) ≡ 1

Page 12: Predzazhita 2009 v16

12

Схема работы метода редукции

да

нет

Выбрать следующий тест t из исходного набора

Построить модель M на выбранном тесте t

да

да

результат := сокращенный набор

нет

1) поместить тест t в сокращенный набор2) поместить модель в пул моделей

нет

Модель M пуста ?

Есть ли в Пуле моделей модель,

эквивалентная M?

Исходный набор пройден?

Сокращенный набор тестов := Пул моделей :=

Page 13: Predzazhita 2009 v16

13

Вычислительная сложность метода

Сложность алгоритма:

Объем памяти:

B A B BA B B AB B A BB A B CA B C BB C B C

ROOT

B

A B

B C

A B

B A C

A

B

B

B C C

B

Хеш-таблицы,сложность поиска O (log(N))

Оптимизация: древовидная структура для хранения модели:

Сложность алгоритма: Объем памяти:

T - количество тестов

K - размер окна

N - кол-во интерфейсных функций

)(O 22 KNT K

)(O KNT K

))log((O 2 KNNT K )1

(O1

N

NNT

K

Page 14: Predzazhita 2009 v16

14

Технологический процесс применения метода

Инструмен-тация

модулей

1. Первоначальное тестирование: построение моделей взаимодействия

Запуск ПО на исходном

наборе тестовСбор трасс

Построение моделей

Модели взаимодействий

Исходный набор тестов

2. Регрессионное тестирование: редукция набора тестов

Модели взаимодействий

Список измененных модулей

+Редукция

набора тестов

Сокращенный набор тестов

Тестируемое ПО

+

Фильтрация трасс

Page 15: Predzazhita 2009 v16

15

Архитектура и схема работыОсобенности реализации:

- Возможность адаптации для учета других типов параметров

- Возможность адаптации к различным средам выполнения

Объект тестирования

Выполнение объекта

Модуль анализа взаимодействий

Модели взаимодействи

й

Исходный тестовый набор

Трассы вызовов функций Сокращенный

набор тестов

КонсольЭкспериментальная система редукции набора тестов

Классификаторпараметров

Сенсор

Page 16: Predzazhita 2009 v16

16

Экспериментальное исследование

Цели исследования: 1. Оценка основных(*,**) характеристик предложенного метода:

− Точность, Полнота, Эффективность, Универсальность

2. Сравнение с методом случайной редукции и редукции пустых трасс

Постановка экспериментов:− GNU Ассемблер v 2.17, 2.18

− Размер исходных наборов тестов: 5-191 тестов

− Модули: GNU Ассемблер и стандартная библиотека языка Си

− Взаимодействие через функции ввода/вывода стандартной библиотеки языка Си (stdio.h)

* Rothermel,G.,Harrold,M.J.Analyzing regression test selection techniques. IEEE TSE. 22/8. 1996.** Епифанов Н.А., Методы Реализации Регрессионного Тестирования по Расширенным

Тестовым Наборам, Диссертация на соискание учёной степени кандидата технических наук, СПГПУ, 2003.

Page 17: Predzazhita 2009 v16

17

Точность и полнота- Интегрируемые модули: GNU Ассемблер v 2.17 и стандартная библиотека языка Си- Взаимодействие через функции ввода/вывода (stdio.h)

0

10

20

30

40

50

60

70

Размер исходного набора тестов

% с

окр

ащ

ен

ия

0

20

40

60

80

100

120

Размер исходного набора тестов

% о

бн

ар

уж

ен

ия

ош

иб

ок

СокращениеОбнаружение ошибок

(от кол-ва обнаруженных исх. н.т.)

метод редукции пустых трасс в ср. на 10% 100%

метод случайной редукции в ср. 80%

предложенный метод в ср. на 52% 100%

Page 18: Predzazhita 2009 v16

18

Экспериментальная система редукции набора тестов

Универсальность (1)

Определение:

строка - последовательность символов

Эквивалентность строк:• eq(s1,s2)=истина длина(s1)=длина(s2)

• Класс эквивалентности: длина строки

• s Ei длина(s) = i

Пример: адаптация метода к строковым параметрам

Объект тестирования

Модуль анализа взаимодействий

Модели взаимодействи

й

Консоль

Классификаторпараметров

Сенсор

Шаг 2. Адаптация экспериментальной системы:

Шаг 1. Отношение эквивалентности для строк:

Реализация отношения

эквивалентности для строк

Page 19: Predzazhita 2009 v16

19

Универсальность (2)

0%

10%

20%

30%

40%

50%

60%

70%

80%

90%

100%

10 30 50 70 90 110

130

150

170

190

Размер исходного набора

% с

окр

ащен

ия

наб

ор

а

0%

20%

40%

60%

80%

100%

120%

10 30 50 70 90 110

130

150

170

190

Размер исходного набора

% о

бн

аруж

ени

я о

ши

бо

к

Сокращение Обнаружение ошибок

до адаптации в ср. на 88% в ср. 91%

после адаптации в ср. на 79% Все

Интегрируемые модули: GNU Ассемблер v 2.18 и стандартная библиотека языка Си

Взаимодействие через функции: - FILE *fopen(const char * filename, const char * mode)- int fprintf(FILE *file_pointer, char *format_string, ...)- int fclose(FILE *file_pointer)

Page 20: Predzazhita 2009 v16

20

Эффективность: оценка ресурсозатрат и влияние параметра K

Интегрируемые модули: GNU Ассемблер v 2.18 и стандартная библиотека языка Си

Взаимодействие через функции ввода/вывода (stdio.h)

Индикатор \ Длина K 1 2 3 6 10 15

Коэфф. сокращения 74% 61% 57% 54% 52% 45%

Коэфф. обнаружения ошибок

92% 99% 100% 100% 100% 100%

Время работы 2 сек 5 сек 9 сек 27 сек 1.2 мин 6.5 мин

Объем используемой памяти (в Мб)

9.6 9.7 9.8 10.6 12.2 15.3

Page 21: Predzazhita 2009 v16

21

Экспериментальное исследование на тестовом наборе LSB Application Battery

Индикатор Исх. набор Сокр. набор

Размер набора 81 9

Коэффициент сокращения 9 раз

Кол-во обнаруженных ошибок 6 6

Изменение уровня обнаружения 0%

Время выполнения 1 час 58 минут 10 минут

Коэфф. сокращения времени 11.8 раз

Время работы метода 1 минута

Выигрыш по времени 1 час 47 минут / 10.8 раз

Исходный набор: LSB Application Battery v3.1, 15 приложений, 81 тест

Интегрируемые модули: библиотека X11 и стандартная библиотека языка Си

Эксперимент проводился в среде SUSЕ Linux v10.2

Page 22: Predzazhita 2009 v16

22

Данные по программной реализации и проведенным экспериментам

В ходе работы было:− Разработаны:

• Программная библиотека реализующая построение и сравнение моделей взаимодействий;

• Программная компонента реализующая разработанный метод редукции набора тестов;

• 8 вспомагательных компонент для преобразования трасс из различных форматов и автоматизации применения метода;

− Проведено более 30 различных экспериментов• Оценка характеристик предложенного метода• Сравнение с методом случайной редукции и методом

редукции пустых трасс

Page 23: Predzazhita 2009 v16

23

Основные результаты

Разработан, реализован и апробирован метод редукции тестового набора для регрессионного интеграционного тестирования, применимый в условиях отсутствия доступа к исходному коду:

– Разработана новая модель процесса взаимодействия модулей на основе метода «скользящего окна» по трассе вызовов интерфейсных функций;

– Предложено и обосновано отношение эквивалентности между процессами взаимодействия модулей на основе предложенной модели и формальное обоснование его корректности;

– Предложен и реализован новый метод редукции тестового набора на основе использования предложенного отношения эквивалентности;

– Разработана экспериментальная система, реализующая метод редукции тестового набора.

Page 24: Predzazhita 2009 v16

24

ДокладыПо теме работы были сделаны следующие доклады:

• Seventh International Andrei Ershov Memorial Conference «PERSPECTIVES OF SYSTEM INFORMATICS» (PSI’09), Новосибирск, 2009.

• на секции Software Testing международной конференции SYRCoSE 2007 (The First Spring Young Researchers Colloquium on Software Engineering), Москва, 2007.

• на научном семинаре Института Системного Программирования РАН, Москва, 2006, 2007, 2009.

• на научном семинаре The Knowledge Management Research Group, Loughborough University, Loughborough, United Kingdom, 2005.

Page 25: Predzazhita 2009 v16

25

ПубликацииПо теме работы были опубликованы следующие работы:

• Кичигин Д.Ю. Метод редукции тестового набора для регрессионного интеграционного тестирования. Журнал РАН «Программирование», Номер 5, 2009, cc. 57-69. (входит в список ВАК)

• Dmitry Kichigin. A Method for Test Suite Reduction for Regression Testing of Interactions between Software Modules. In Proceedings of PSI’09, Novosibirsk, 2009. Springer: Volume 5947/2010 pp. 177-184, 2010.

• D. Kichigin. Test Suite Reduction for Regression Testing of Simple Interactions between Two Software Modules. In Proceedings of SYRCoSE 2007. Volume 2, ISP RAS. pp. 31-37, 2007.

• Кичигин Д.Ю. Об одном методе сокращения набора тестов. Сборник трудов ИСП РАН.. М: ИСП РАН, 2007.

Page 26: Predzazhita 2009 v16

26

Спасибо !

Page 27: Predzazhita 2009 v16

27

Примеры интеграционных ошибокint printf(const char *format, ...)

int sprintf (char *str, const char *format, ...)

size_t fread (void * restrict ptr, size_t size, size_t nmemb, FILE * restrict stream)

Тип ошибки

Исходный код Код с добавленной ошибкой

A

char sz[16];

printf(“%s”, sz);

char sz[16];

printf(“%d”, sz);

B

char szParam[16];

char szResult[16];

sprintf(“%s”, szResult, szParam);

char szParam[16];

char szResult[16];

sprintf(“%d”, szResult, szParam);

C

char sz[30];

FILE* fp = fopen( "file.txt", “r+t" );

fread( sz, sizeof( char ), 25, fp );

char sz[30];

FILE* fp = fopen( "file.txt", "w+t" );

fread( sz, sizeof( char ), 25, fp );

Page 28: Predzazhita 2009 v16

28

Возможные направления будущих исследований

• Исследования работы метода со специализированными функциональными интерфейсами:– Интерфейсы для работы с базами данных -> использование метрики

сходства SQL запросов

– ...

• Исследования работы метода с другими типами интерфейсов– Интерфейсы основанные на обмене сообщениями

• Многопоточные / многопроцессные взаимодействия– Использование thread id / process id