Predzazhita 2009 v16

Preview:

Citation preview

1

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

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

Д.Ю.Кичигин

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

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

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

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

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

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

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

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

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

3

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

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

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

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

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

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

4

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

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

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

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

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

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

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

6

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

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

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

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

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

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

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

7

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

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

Задачи:

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

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

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

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

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)

9

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

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

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

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

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

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

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

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

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

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

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

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 Модель взаимодействия

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

12

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

да

нет

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

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

да

да

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

нет

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

нет

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

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

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

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

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

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

14

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

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

модулей

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

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

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

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

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

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

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

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

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

+Редукция

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

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

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

+

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

15

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

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

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

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

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

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

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

й

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

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

набор тестов

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

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

Сенсор

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.

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%

18

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

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

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

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

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

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

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

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

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

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

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

й

Консоль

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

Сенсор

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

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

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

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

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)

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

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

22

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

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

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

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

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

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

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

23

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

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

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

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

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

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

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.

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.

26

Спасибо !

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 );

28

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

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

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

– ...

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

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