SlideShare a Scribd company logo
1 of 60
Download to read offline
Tестирование программного обеспечения
Что, зачем и почему?
Software Testing 101

Марат Ахин
Санкт-Петербургский государственный политехнический университет

2014

Марат Ахин (СПбГПУ)

Intro

2014

1 / 313
Прелюдия

Содержание

1

Прелюдия
Обеспечение качества ПО
Тестирование ПО

2

Тестирование за 45 минут

3

Тестирование в процессе разработки ПО

Марат Ахин (СПбГПУ)

Intro

2014

2 / 313
Прелюдия

Обеспечение качества ПО

Обеспечение качества ПО

Функциональные vs нефункциональные требования

Марат Ахин (СПбГПУ)

Intro

2014

3 / 313
Прелюдия

Обеспечение качества ПО

Обеспечение качества ПО

Функциональные требования
Адекватность

Нефункциональные требования
Надежность

Точность

Эффективность

Интероперабельность

Поддерживаемость

Безопасность

Переносимость
Как можно их проверять?

Марат Ахин (СПбГПУ)

Intro

2014

4 / 313
Прелюдия

Обеспечение качества ПО

Обеспечение качества ПО

Марат Ахин (СПбГПУ)

Intro

2014

5 / 313
Прелюдия

Обеспечение качества ПО

Обеспечение качества ПО

Thinking is hard, running is simple. (c)
Запустить программу просто и это можно сделать всегда
Думать о программе сложно и требует «высшего знания»
Будем запускать программу, чтобы проверить, отвечает ли она
предъявленным требованиям

Марат Ахин (СПбГПУ)

Intro

2014

6 / 313
Прелюдия

Тестирование ПО

Что такое тестирование ПО?
То, чем вы будете заниматься до 80% времени

Марат Ахин (СПбГПУ)

Intro

2014

7 / 313
Прелюдия

Тестирование ПО

Что за вопрос лежит в основе тестирования?
Работает ли это ПО правильно?
НЕТ
Работает ли это ПО неправильно?
ДА

=

Тестирование
Разрушение

Марат Ахин (СПбГПУ)

Intro

2014

8 / 313
Прелюдия

Тестирование ПО

Что за вопрос лежит в основе тестирования?
Работает ли это ПО правильно?
НЕТ
Работает ли это ПО неправильно?
ДА

=

Тестирование
Разрушение

Марат Ахин (СПбГПУ)

Intro

2014

8 / 313
Прелюдия

Тестирование ПО

Что за вопрос лежит в основе тестирования?
Работает ли это ПО правильно?
НЕТ
Работает ли это ПО неправильно?
ДА

=

Тестирование
Разрушение

Марат Ахин (СПбГПУ)

Intro

2014

8 / 313
Прелюдия

Тестирование ПО

Что за вопрос лежит в основе тестирования?
Работает ли это ПО правильно?
НЕТ
Работает ли это ПО неправильно?
ДА

=

Тестирование
Разрушение

Марат Ахин (СПбГПУ)

Intro

2014

8 / 313
Прелюдия

Тестирование ПО

Что за вопрос лежит в основе тестирования?
Работает ли это ПО правильно?
НЕТ
Работает ли это ПО неправильно?
ДА

=

Тестирование
Разрушение

Марат Ахин (СПбГПУ)

Intro

2014

8 / 313
Прелюдия

Тестирование ПО

Кому помогает тестирование?
Лучший друг верификации и валидации ПО
В чем разница?
Верификация – «мы сделали это правильно»
Валидация – «мы сделали то, что надо»

Марат Ахин (СПбГПУ)

Intro

2014

9 / 313
Прелюдия

Тестирование ПО

Можем ли мы что-то гарантировать при тестировании?

Данное ПО никогда не упадет
Потоки никогда не заблокируются
Вычисления всегда выполняются корректно
Временные характеристики всегда выдерживаются
Мы можем дать такие гарантии лишь в самых тривиальных случаях,
когда обычно все ясно и без тестирования

Марат Ахин (СПбГПУ)

Intro

2014

10 / 313
Прелюдия

Тестирование ПО

Можем ли мы что-то гарантировать при тестировании?

Данное ПО никогда не упадет
Потоки никогда не заблокируются
Вычисления всегда выполняются корректно
Временные характеристики всегда выдерживаются
Мы можем дать такие гарантии лишь в самых тривиальных случаях,
когда обычно все ясно и без тестирования

Марат Ахин (СПбГПУ)

Intro

2014

10 / 313
Прелюдия

Тестирование ПО

Почему тестировать сложно?

Brian Kernighan
«Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by
definition, not smart enough to debug it.»
Massimo Arnoldi (feat. Kent Beck)
«Unfortunately at least for me (and not only) testing goes against human
nature. If you realize the pig in you, you will see that you program without
tests.»

Марат Ахин (СПбГПУ)

Intro

2014

11 / 313
Прелюдия

Тестирование ПО

Почему тестировать нужно?
Если отложить сегодняшние дела на послезавтра, у вас появятся два
свободных дня! (с)

Марат Ахин (СПбГПУ)

Intro

2014

12 / 313
Прелюдия

Тестирование ПО

Что же делать?

Марат Ахин (СПбГПУ)

Intro

2014

13 / 313
Тестирование за 45 минут

Содержание

1

Прелюдия

2

Тестирование за 45 минут
Тестирование ПО с точки зрения дилетанта
Модель программной ошибки
Модель тестирования ПО
Процесс тестирования ПО

3

Тестирование в процессе разработки ПО

Марат Ахин (СПбГПУ)

Intro

2014

14 / 313
Тестирование за 45 минут

Тестирование ПО с точки зрения дилетанта

Тестирование ПО с точки зрения дилетанта

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

«багов»
«сбоев»
«дефектов»
«неудач»

Сперва надо разобраться, а что же такое «программная ошибка»?

Марат Ахин (СПбГПУ)

Intro

2014

15 / 313
Тестирование за 45 минут

Модель программной ошибки

Модель программной ошибки

FAILURE

FAULT

ERROR

Неудача – наблюдаемое снаружи
некорректное поведение программы
Сбой – некорректное состояние
программы из-за ошибки
Ошибка – ошибка в самой
программе, внесенная на этапе
разработки

Рассмотрим данную модель на примере

Марат Ахин (СПбГПУ)

Intro

2014

16 / 313
Тестирование за 45 минут

Модель программной ошибки

Модель программной ошибки
Найдите ошибку в следующей программе на Java
1 int sumCollection ( final @NotNull Collection < Integer > c ) {
2
int sum = 0;
3
for ( int i : c ) {
4
sum += i ;
5
}
6
return sum ;
7 }

Возможное переполнение в строке 4

Марат Ахин (СПбГПУ)

Intro

2014

17 / 313
Тестирование за 45 минут

Модель программной ошибки

Модель программной ошибки
Найдите ошибку в следующей программе на Java
1 int sumCollection ( final @NotNull Collection < Integer > c ) {
2
int sum = 0;
3
for ( int i : c ) {
4
sum += i ;
5
}
6
return sum ;
7 }

Возможное переполнение в строке 4

Марат Ахин (СПбГПУ)

Intro

2014

17 / 313
Тестирование за 45 минут

Модель программной ошибки

Модель программной ошибки
c = {}
Что будет?
1 int sumCollection ( final @NotNull Collection < Integer > c ) {
2
int sum = 0;
3
for ( int i : c ) {
4
sum += i ;
5
}
6
return sum ;
7 }

Нет ни сбоя, ни неудачи – программа работает корректно

Марат Ахин (СПбГПУ)

Intro

2014

18 / 313
Тестирование за 45 минут

Модель программной ошибки

Модель программной ошибки
c = {}
Что будет?
1 int sumCollection ( final @NotNull Collection < Integer > c ) {
2
int sum = 0;
3
for ( int i : c ) {
4
sum += i ;
5
}
6
return sum ;
7 }

Нет ни сбоя, ни неудачи – программа работает корректно

Марат Ахин (СПбГПУ)

Intro

2014

18 / 313
Тестирование за 45 минут

Модель программной ошибки

Модель программной ошибки
c = {1, 2, 3, 5}
Что будет?
1 int sumCollection ( final @NotNull Collection < Integer > c ) {
2
int sum = 0;
3
for ( int i : c ) {
4
sum += i ;
5
}
6
return sum ;
7 }

Нет ни сбоя, ни неудачи – программа работает корректно

Марат Ахин (СПбГПУ)

Intro

2014

19 / 313
Тестирование за 45 минут

Модель программной ошибки

Модель программной ошибки
c = {1, 2, 3, 5}
Что будет?
1 int sumCollection ( final @NotNull Collection < Integer > c ) {
2
int sum = 0;
3
for ( int i : c ) {
4
sum += i ;
5
}
6
return sum ;
7 }

Нет ни сбоя, ни неудачи – программа работает корректно

Марат Ахин (СПбГПУ)

Intro

2014

19 / 313
Тестирование за 45 минут

Модель программной ошибки

Модель программной ошибки
c = {1, 2, 3, 5, Integer.MAX_VALUE, Integer.MIN_VALUE}
Что будет?
1 int sumCollection ( final @NotNull Collection < Integer > c ) {
2
int sum = 0;
3
for ( int i : c ) {
4
sum += i ;
5
}
6
return sum ;
7 }

Сбой есть – программа проходит через некорректное состояние
Но неудачи нет – результат работы программы корректен

Марат Ахин (СПбГПУ)

Intro

2014

20 / 313
Тестирование за 45 минут

Модель программной ошибки

Модель программной ошибки
c = {1, 2, 3, 5, Integer.MAX_VALUE, Integer.MIN_VALUE}
Что будет?
1 int sumCollection ( final @NotNull Collection < Integer > c ) {
2
int sum = 0;
3
for ( int i : c ) {
4
sum += i ;
5
}
6
return sum ;
7 }

Сбой есть – программа проходит через некорректное состояние
Но неудачи нет – результат работы программы корректен

Марат Ахин (СПбГПУ)

Intro

2014

20 / 313
Тестирование за 45 минут

Модель программной ошибки

Модель программной ошибки
c = {1, 2, 3, 5, Integer.MAX_VALUE}
Что будет?
1 int sumCollection ( final @NotNull Collection < Integer > c ) {
2
int sum = 0;
3
for ( int i : c ) {
4
sum += i ;
5
}
6
return sum ;
7 }

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

Марат Ахин (СПбГПУ)

Intro

2014

21 / 313
Тестирование за 45 минут

Модель программной ошибки

Модель программной ошибки
c = {1, 2, 3, 5, Integer.MAX_VALUE}
Что будет?
1 int sumCollection ( final @NotNull Collection < Integer > c ) {
2
int sum = 0;
3
for ( int i : c ) {
4
sum += i ;
5
}
6
return sum ;
7 }

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

Марат Ахин (СПбГПУ)

Intro

2014

21 / 313
Тестирование за 45 минут

Модель тестирования ПО

Что мы делали?

Запускали ПО (мысленно)
Сравнивали результаты работы с ожидаемыми (логически)
Можно ли придумать другой способ тестирования?

Марат Ахин (СПбГПУ)

Intro

2014

22 / 313
Тестирование за 45 минут

Модель тестирования ПО

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

Марат Ахин (СПбГПУ)

Intro

2014

23 / 313
Тестирование за 45 минут

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

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

Что может случиться?

Марат Ахин (СПбГПУ)

Intro

2014

24 / 313
Тестирование за 45 минут

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

Тест прошел

A-WE-SO-ME!

Марат Ахин (СПбГПУ)

Intro

2014

25 / 313
Тестирование за 45 минут

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

Тест не прошел

OH-MI-GOD!

Марат Ахин (СПбГПУ)

Intro

2014

26 / 313
Тестирование за 45 минут

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

Ошибка в ПО

Все просто и понятно, да?

Марат Ахин (СПбГПУ)

Intro

2014

27 / 313
Тестирование за 45 минут

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

Ошибка в эталонной модели

Некорректный тест? Ошибка в спецификации?

Марат Ахин (СПбГПУ)

Intro

2014

28 / 313
Тестирование за 45 минут

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

Ошибка в тестовом окружении

Баг в тестовой библиотеке?

Марат Ахин (СПбГПУ)

Intro

2014

29 / 313
Тестирование за 45 минут

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

Ошибка в платформе

Баг в ОС? Аппаратный сбой? Ошибка компилятора?

Марат Ахин (СПбГПУ)

Intro

2014

30 / 313
Тестирование за 45 минут

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

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

Является ли данная модель самодостаточной?

Марат Ахин (СПбГПУ)

Intro

2014

31 / 313
Тестирование за 45 минут

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

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

Откуда брать эталонную модель?
Как сравнивать результаты работы программы и модели?

Марат Ахин (СПбГПУ)

Intro

2014

32 / 313
Тестирование за 45 минут

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

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

Когда останавливать процесс тестирования?

Марат Ахин (СПбГПУ)

Intro

2014

33 / 313
Тестирование за 45 минут

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

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

Как подобрать входные данные, чтобы:
дойти до места с программной ошибкой (Reachibility)
испортить состояние программы с появлением сбоя (Corruption)
вызвать неудачу в работе программы (Propagation)

Марат Ахин (СПбГПУ)

Intro

2014

34 / 313
Проблемы тестирования

Проблемы тестирования

Проблемы тестирования

What’s up, Doc? (с)
Проблема тестовых входных данных
Проблема наблюдаемости
Проблема «останова»
Проблема тестового оракула

Марат Ахин (СПбГПУ)

Intro

2014

35 / 313
Тестирование в процессе разработки ПО

Содержание

1

Прелюдия

2

Тестирование за 45 минут

3

Тестирование в процессе разработки ПО
Модели разработки ПО
Проблемы тестирования ПО

Марат Ахин (СПбГПУ)

Intro

2014

36 / 313
Тестирование в процессе разработки ПО

Модели разработки ПО

Модели разработки ПО
Чем активнее используется тестирование в процессе разработки,
тем важнее его правильное использование

Марат Ахин (СПбГПУ)

Intro

2014

37 / 313
Тестирование в процессе разработки ПО

Модели разработки ПО

Водопадная модель

Строго последовательная модель
разработки
Тестирование выполняется над всей
программой сразу
Имеется хорошая эталонная модель
Стоимость поиска и исправления
ошибок очень высока

Марат Ахин (СПбГПУ)

Intro

2014

38 / 313
Тестирование в процессе разработки ПО

Модели разработки ПО

Инкрементальная модель

Разработка проходит в несколько
итераций
Тестируются отдельные версии
программы
Имеется неплохая эталонная модель
Стоимость поиска и исправления
ошибок высока

Марат Ахин (СПбГПУ)

Intro

2014

39 / 313
Тестирование в процессе разработки ПО

Модели разработки ПО

Гибкая модель

Все этапы разработки неразрывно
связаны друг с другом
Тестированию подвергаются как сама
программа, так и ее компоненты
Эталонная модель есть не всегда
Стоимость поиска и исправления
ошибок относительно низка

Марат Ахин (СПбГПУ)

Intro

2014

40 / 313
Тестирование в процессе разработки ПО

Проблемы тестирования ПО

Проблемы тестирования ПО

Разве что-то может пойти совсем плохо?

Марат Ахин (СПбГПУ)

Intro

2014

41 / 313
Тестирование в процессе разработки ПО

Проблемы тестирования ПО

Розовые очки

Марат Ахин (СПбГПУ)

Intro

2014

42 / 313
Тестирование в процессе разработки ПО

Проблемы тестирования ПО

Розовые очки

Неправильное тестирование создает иллюзию, что все хорошо...
...тогда как на самом деле все может быть очень и очень плохо
Все тесты проходят
Выпускаем код в релиз
...
BOOM!

Марат Ахин (СПбГПУ)

Intro

2014

43 / 313
Тестирование в процессе разработки ПО

Проблемы тестирования ПО

Наводнение

Марат Ахин (СПбГПУ)

Intro

2014

44 / 313
Тестирование в процессе разработки ПО

Проблемы тестирования ПО

Наводнение

Неправильное тестирование создает иллюзию, что все плохо...
...тогда как на самом деле все вполне себе ничего
Большинство тестов не проходит
Садимся и исправляем ошибки
...
UNREACHABLE!

Марат Ахин (СПбГПУ)

Intro

2014

45 / 313
Тестирование в процессе разработки ПО

Проблемы тестирования ПО

Прятки

Марат Ахин (СПбГПУ)

Intro

2014

46 / 313
Тестирование в процессе разработки ПО

Проблемы тестирования ПО

Прятки

Неправильное тестирование создает иллюзию, что все плохо...
...тогда как на самом деле все плохо в другом месте
Некоторые тесты не проходит
Садимся и ищем ошибки
...
HUH?

Марат Ахин (СПбГПУ)

Intro

2014

47 / 313
Что же делать?

Что же делать?

Что же делать?

Марат Ахин (СПбГПУ)

Intro

2014

48 / 313
Что же делать?

Что же делать?

Что же делать?

Марат Ахин (СПбГПУ)

Intro

2014

49 / 313
W.I.L.T.

What I Learned Today?

W.I.L.T.

Марат Ахин (СПбГПУ)

Intro

2014

50 / 313

More Related Content

What's hot

КГТУ Лекция 1: Обеспечение Качества Программного Обеспечения
КГТУ Лекция 1: Обеспечение Качества Программного ОбеспеченияКГТУ Лекция 1: Обеспечение Качества Программного Обеспечения
КГТУ Лекция 1: Обеспечение Качества Программного ОбеспеченияIosif Itkin
 
Илья Фомин - Проблемы автоматизируемости тестирования и их решения
Илья Фомин - Проблемы автоматизируемости тестирования и их решенияИлья Фомин - Проблемы автоматизируемости тестирования и их решения
Илья Фомин - Проблемы автоматизируемости тестирования и их решенияSQALab
 
API design in java project
API design in java projectAPI design in java project
API design in java projectchashnikov
 
Урок 7. Проблемы выявления 64-битных ошибок
Урок 7. Проблемы выявления 64-битных ошибокУрок 7. Проблемы выявления 64-битных ошибок
Урок 7. Проблемы выявления 64-битных ошибокTatyanazaxarova
 
ПРИМЕНЕНИЕ ГЕНЕТИЧЕСКИХ АЛГОРИТМОВ К ГЕНЕРАЦИИ ТЕСТОВ ДЛЯ АВТОМАТНЫХ ПРОГРАММ
ПРИМЕНЕНИЕ ГЕНЕТИЧЕСКИХ АЛГОРИТМОВ К ГЕНЕРАЦИИ ТЕСТОВ ДЛЯ АВТОМАТНЫХ ПРОГРАММПРИМЕНЕНИЕ ГЕНЕТИЧЕСКИХ АЛГОРИТМОВ К ГЕНЕРАЦИИ ТЕСТОВ ДЛЯ АВТОМАТНЫХ ПРОГРАММ
ПРИМЕНЕНИЕ ГЕНЕТИЧЕСКИХ АЛГОРИТМОВ К ГЕНЕРАЦИИ ТЕСТОВ ДЛЯ АВТОМАТНЫХ ПРОГРАММITMO University
 
ук 03.007.02 2011
ук 03.007.02 2011ук 03.007.02 2011
ук 03.007.02 2011etyumentcev
 
ОЛЕКСАНДР ЄПІШЕВ «Мутаційне тестування: тести для тестів» Lviv QA Day 2019
ОЛЕКСАНДР ЄПІШЕВ «Мутаційне тестування: тести для тестів»  Lviv QA Day 2019ОЛЕКСАНДР ЄПІШЕВ «Мутаційне тестування: тести для тестів»  Lviv QA Day 2019
ОЛЕКСАНДР ЄПІШЕВ «Мутаційне тестування: тести для тестів» Lviv QA Day 2019GoQA
 
Testing of Embedded SW – Alternative to Classic TDD
Testing of Embedded SW – Alternative to Classic TDDTesting of Embedded SW – Alternative to Classic TDD
Testing of Embedded SW – Alternative to Classic TDDДмитрий Овечкин
 
20120309 formal semantics shilov_lecture04
20120309 formal semantics shilov_lecture0420120309 formal semantics shilov_lecture04
20120309 formal semantics shilov_lecture04Computer Science Club
 
Что такое "Parallel Lint"?
Что такое "Parallel Lint"?Что такое "Parallel Lint"?
Что такое "Parallel Lint"?Tatyanazaxarova
 
Илья Фофанов "Обработка ошибок в C#"
Илья Фофанов "Обработка ошибок в C#"Илья Фофанов "Обработка ошибок в C#"
Илья Фофанов "Обработка ошибок в C#"Yulia Tsisyk
 
Разработка через тестирование (TDD и BDD)
Разработка через тестирование (TDD и BDD)Разработка через тестирование (TDD и BDD)
Разработка через тестирование (TDD и BDD)Vyacheslav Lyalkin
 
Андрей Кирпичев "Гибкая модульность инструментами АОП"
Андрей Кирпичев  "Гибкая модульность инструментами АОП"Андрей Кирпичев  "Гибкая модульность инструментами АОП"
Андрей Кирпичев "Гибкая модульность инструментами АОП"MskDotNet Community
 
Дефекты при тестировании ПО
Дефекты при тестировании ПОДефекты при тестировании ПО
Дефекты при тестировании ПОSergey Chuburov
 
Вещи в Java, о которых вы (возможно) не знали
Вещи в Java, о которых вы (возможно) не зналиВещи в Java, о которых вы (возможно) не знали
Вещи в Java, о которых вы (возможно) не зналиZheka Kozlov
 
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...yaevents
 
Тестирование параллельных программ
Тестирование параллельных программТестирование параллельных программ
Тестирование параллельных программTatyanazaxarova
 
обработка исключений в Java
обработка исключений в Javaобработка исключений в Java
обработка исключений в Javametaform
 
Cтатический анализ кода (на примере DDD-фреймворка)
Cтатический анализ кода (на примере DDD-фреймворка)Cтатический анализ кода (на примере DDD-фреймворка)
Cтатический анализ кода (на примере DDD-фреймворка)ngrebnev
 

What's hot (20)

КГТУ Лекция 1: Обеспечение Качества Программного Обеспечения
КГТУ Лекция 1: Обеспечение Качества Программного ОбеспеченияКГТУ Лекция 1: Обеспечение Качества Программного Обеспечения
КГТУ Лекция 1: Обеспечение Качества Программного Обеспечения
 
Илья Фомин - Проблемы автоматизируемости тестирования и их решения
Илья Фомин - Проблемы автоматизируемости тестирования и их решенияИлья Фомин - Проблемы автоматизируемости тестирования и их решения
Илья Фомин - Проблемы автоматизируемости тестирования и их решения
 
Qt tool evaluation
Qt tool evaluationQt tool evaluation
Qt tool evaluation
 
API design in java project
API design in java projectAPI design in java project
API design in java project
 
Урок 7. Проблемы выявления 64-битных ошибок
Урок 7. Проблемы выявления 64-битных ошибокУрок 7. Проблемы выявления 64-битных ошибок
Урок 7. Проблемы выявления 64-битных ошибок
 
ПРИМЕНЕНИЕ ГЕНЕТИЧЕСКИХ АЛГОРИТМОВ К ГЕНЕРАЦИИ ТЕСТОВ ДЛЯ АВТОМАТНЫХ ПРОГРАММ
ПРИМЕНЕНИЕ ГЕНЕТИЧЕСКИХ АЛГОРИТМОВ К ГЕНЕРАЦИИ ТЕСТОВ ДЛЯ АВТОМАТНЫХ ПРОГРАММПРИМЕНЕНИЕ ГЕНЕТИЧЕСКИХ АЛГОРИТМОВ К ГЕНЕРАЦИИ ТЕСТОВ ДЛЯ АВТОМАТНЫХ ПРОГРАММ
ПРИМЕНЕНИЕ ГЕНЕТИЧЕСКИХ АЛГОРИТМОВ К ГЕНЕРАЦИИ ТЕСТОВ ДЛЯ АВТОМАТНЫХ ПРОГРАММ
 
ук 03.007.02 2011
ук 03.007.02 2011ук 03.007.02 2011
ук 03.007.02 2011
 
ОЛЕКСАНДР ЄПІШЕВ «Мутаційне тестування: тести для тестів» Lviv QA Day 2019
ОЛЕКСАНДР ЄПІШЕВ «Мутаційне тестування: тести для тестів»  Lviv QA Day 2019ОЛЕКСАНДР ЄПІШЕВ «Мутаційне тестування: тести для тестів»  Lviv QA Day 2019
ОЛЕКСАНДР ЄПІШЕВ «Мутаційне тестування: тести для тестів» Lviv QA Day 2019
 
Testing of Embedded SW – Alternative to Classic TDD
Testing of Embedded SW – Alternative to Classic TDDTesting of Embedded SW – Alternative to Classic TDD
Testing of Embedded SW – Alternative to Classic TDD
 
20120309 formal semantics shilov_lecture04
20120309 formal semantics shilov_lecture0420120309 formal semantics shilov_lecture04
20120309 formal semantics shilov_lecture04
 
Что такое "Parallel Lint"?
Что такое "Parallel Lint"?Что такое "Parallel Lint"?
Что такое "Parallel Lint"?
 
Илья Фофанов "Обработка ошибок в C#"
Илья Фофанов "Обработка ошибок в C#"Илья Фофанов "Обработка ошибок в C#"
Илья Фофанов "Обработка ошибок в C#"
 
Разработка через тестирование (TDD и BDD)
Разработка через тестирование (TDD и BDD)Разработка через тестирование (TDD и BDD)
Разработка через тестирование (TDD и BDD)
 
Андрей Кирпичев "Гибкая модульность инструментами АОП"
Андрей Кирпичев  "Гибкая модульность инструментами АОП"Андрей Кирпичев  "Гибкая модульность инструментами АОП"
Андрей Кирпичев "Гибкая модульность инструментами АОП"
 
Дефекты при тестировании ПО
Дефекты при тестировании ПОДефекты при тестировании ПО
Дефекты при тестировании ПО
 
Вещи в Java, о которых вы (возможно) не знали
Вещи в Java, о которых вы (возможно) не зналиВещи в Java, о которых вы (возможно) не знали
Вещи в Java, о которых вы (возможно) не знали
 
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
 
Тестирование параллельных программ
Тестирование параллельных программТестирование параллельных программ
Тестирование параллельных программ
 
обработка исключений в Java
обработка исключений в Javaобработка исключений в Java
обработка исключений в Java
 
Cтатический анализ кода (на примере DDD-фреймворка)
Cтатический анализ кода (на примере DDD-фреймворка)Cтатический анализ кода (на примере DDD-фреймворка)
Cтатический анализ кода (на примере DDD-фреймворка)
 

Similar to Тестирование программного обеспечения: что, зачем и почему?

Лекция 1 введение в тестирование ПО, основные понятия и принципы
Лекция 1 введение в тестирование ПО, основные понятия и принципыЛекция 1 введение в тестирование ПО, основные понятия и принципы
Лекция 1 введение в тестирование ПО, основные понятия и принципыSergey Chuburov
 
QA Fest 2016. Инна Блажко. ISTQB – What is it? Who needs it? How to prepare a...
QA Fest 2016. Инна Блажко. ISTQB – What is it? Who needs it? How to prepare a...QA Fest 2016. Инна Блажко. ISTQB – What is it? Who needs it? How to prepare a...
QA Fest 2016. Инна Блажко. ISTQB – What is it? Who needs it? How to prepare a...QAFest
 
Mva stf module 5 - rus
Mva stf module 5 - rusMva stf module 5 - rus
Mva stf module 5 - rusMaxim Shaptala
 
JavaTalks.Unit Testing.Part 1
JavaTalks.Unit Testing.Part 1JavaTalks.Unit Testing.Part 1
JavaTalks.Unit Testing.Part 1sgdread
 
Software testing in practice
Software testing in practiceSoftware testing in practice
Software testing in practicenikolay_vasiliev
 
Tech Talks @NSU: Организация тестирования в IT-компаниях Академгородка. Карье...
Tech Talks @NSU: Организация тестирования в IT-компаниях Академгородка. Карье...Tech Talks @NSU: Организация тестирования в IT-компаниях Академгородка. Карье...
Tech Talks @NSU: Организация тестирования в IT-компаниях Академгородка. Карье...Tech Talks @NSU
 
IntroductionPrinciples
IntroductionPrinciplesIntroductionPrinciples
IntroductionPrinciplesQA Guards
 
Автоматизация тестирования встроенного ПО
Автоматизация тестирования встроенного ПОАвтоматизация тестирования встроенного ПО
Автоматизация тестирования встроенного ПОSQALab
 
Викторина для тестировщиков
Викторина для тестировщиковВикторина для тестировщиков
Викторина для тестировщиковUladzimir Kryvenka
 
Разработка и сопровождении авто-тестов (Selenium)
Разработка и сопровождении авто-тестов (Selenium)Разработка и сопровождении авто-тестов (Selenium)
Разработка и сопровождении авто-тестов (Selenium)Paul Stashevsky
 
Тестирование для не-тестировщиков
Тестирование для не-тестировщиковТестирование для не-тестировщиков
Тестирование для не-тестировщиковJulia Nechaeva
 
Марина Широчкина: Тестирование
Марина Широчкина: ТестированиеМарина Широчкина: Тестирование
Марина Широчкина: ТестированиеYandex
 
Mva stf module 2 - rus
Mva stf module 2 - rusMva stf module 2 - rus
Mva stf module 2 - rusMaxim Shaptala
 
тестирование
тестированиетестирование
тестированиеYandex
 
Внедрение тестирования в Scrum
Внедрение тестирования в ScrumВнедрение тестирования в Scrum
Внедрение тестирования в ScrumDenis Petelin
 
Внедрение тестирования в Scrum
Внедрение тестирования в ScrumВнедрение тестирования в Scrum
Внедрение тестирования в ScrumDenis Petelin
 

Similar to Тестирование программного обеспечения: что, зачем и почему? (20)

Лекция 1 введение в тестирование ПО, основные понятия и принципы
Лекция 1 введение в тестирование ПО, основные понятия и принципыЛекция 1 введение в тестирование ПО, основные понятия и принципы
Лекция 1 введение в тестирование ПО, основные понятия и принципы
 
QA Fest 2016. Инна Блажко. ISTQB – What is it? Who needs it? How to prepare a...
QA Fest 2016. Инна Блажко. ISTQB – What is it? Who needs it? How to prepare a...QA Fest 2016. Инна Блажко. ISTQB – What is it? Who needs it? How to prepare a...
QA Fest 2016. Инна Блажко. ISTQB – What is it? Who needs it? How to prepare a...
 
Mva stf module 5 - rus
Mva stf module 5 - rusMva stf module 5 - rus
Mva stf module 5 - rus
 
JavaTalks.Unit Testing.Part 1
JavaTalks.Unit Testing.Part 1JavaTalks.Unit Testing.Part 1
JavaTalks.Unit Testing.Part 1
 
Software testing in practice
Software testing in practiceSoftware testing in practice
Software testing in practice
 
Tech Talks @NSU: Организация тестирования в IT-компаниях Академгородка. Карье...
Tech Talks @NSU: Организация тестирования в IT-компаниях Академгородка. Карье...Tech Talks @NSU: Организация тестирования в IT-компаниях Академгородка. Карье...
Tech Talks @NSU: Организация тестирования в IT-компаниях Академгородка. Карье...
 
IntroductionPrinciples
IntroductionPrinciplesIntroductionPrinciples
IntroductionPrinciples
 
быстрое тестирование
быстрое тестированиебыстрое тестирование
быстрое тестирование
 
Автоматизация тестирования встроенного ПО
Автоматизация тестирования встроенного ПОАвтоматизация тестирования встроенного ПО
Автоматизация тестирования встроенного ПО
 
Викторина для тестировщиков
Викторина для тестировщиковВикторина для тестировщиков
Викторина для тестировщиков
 
Разработка и сопровождении авто-тестов (Selenium)
Разработка и сопровождении авто-тестов (Selenium)Разработка и сопровождении авто-тестов (Selenium)
Разработка и сопровождении авто-тестов (Selenium)
 
Тестирование для не-тестировщиков
Тестирование для не-тестировщиковТестирование для не-тестировщиков
Тестирование для не-тестировщиков
 
Seamy side of autotests
Seamy side of autotestsSeamy side of autotests
Seamy side of autotests
 
10M tests per day
10M tests per day10M tests per day
10M tests per day
 
Марина Широчкина: Тестирование
Марина Широчкина: ТестированиеМарина Широчкина: Тестирование
Марина Широчкина: Тестирование
 
Mva stf module 2 - rus
Mva stf module 2 - rusMva stf module 2 - rus
Mva stf module 2 - rus
 
TAP
TAPTAP
TAP
 
тестирование
тестированиетестирование
тестирование
 
Внедрение тестирования в Scrum
Внедрение тестирования в ScrumВнедрение тестирования в Scrum
Внедрение тестирования в Scrum
 
Внедрение тестирования в Scrum
Внедрение тестирования в ScrumВнедрение тестирования в Scrum
Внедрение тестирования в Scrum
 

Тестирование программного обеспечения: что, зачем и почему?

  • 1. Tестирование программного обеспечения Что, зачем и почему? Software Testing 101 Марат Ахин Санкт-Петербургский государственный политехнический университет 2014 Марат Ахин (СПбГПУ) Intro 2014 1 / 313
  • 2. Прелюдия Содержание 1 Прелюдия Обеспечение качества ПО Тестирование ПО 2 Тестирование за 45 минут 3 Тестирование в процессе разработки ПО Марат Ахин (СПбГПУ) Intro 2014 2 / 313
  • 3. Прелюдия Обеспечение качества ПО Обеспечение качества ПО Функциональные vs нефункциональные требования Марат Ахин (СПбГПУ) Intro 2014 3 / 313
  • 4. Прелюдия Обеспечение качества ПО Обеспечение качества ПО Функциональные требования Адекватность Нефункциональные требования Надежность Точность Эффективность Интероперабельность Поддерживаемость Безопасность Переносимость Как можно их проверять? Марат Ахин (СПбГПУ) Intro 2014 4 / 313
  • 5. Прелюдия Обеспечение качества ПО Обеспечение качества ПО Марат Ахин (СПбГПУ) Intro 2014 5 / 313
  • 6. Прелюдия Обеспечение качества ПО Обеспечение качества ПО Thinking is hard, running is simple. (c) Запустить программу просто и это можно сделать всегда Думать о программе сложно и требует «высшего знания» Будем запускать программу, чтобы проверить, отвечает ли она предъявленным требованиям Марат Ахин (СПбГПУ) Intro 2014 6 / 313
  • 7. Прелюдия Тестирование ПО Что такое тестирование ПО? То, чем вы будете заниматься до 80% времени Марат Ахин (СПбГПУ) Intro 2014 7 / 313
  • 8. Прелюдия Тестирование ПО Что за вопрос лежит в основе тестирования? Работает ли это ПО правильно? НЕТ Работает ли это ПО неправильно? ДА = Тестирование Разрушение Марат Ахин (СПбГПУ) Intro 2014 8 / 313
  • 9. Прелюдия Тестирование ПО Что за вопрос лежит в основе тестирования? Работает ли это ПО правильно? НЕТ Работает ли это ПО неправильно? ДА = Тестирование Разрушение Марат Ахин (СПбГПУ) Intro 2014 8 / 313
  • 10. Прелюдия Тестирование ПО Что за вопрос лежит в основе тестирования? Работает ли это ПО правильно? НЕТ Работает ли это ПО неправильно? ДА = Тестирование Разрушение Марат Ахин (СПбГПУ) Intro 2014 8 / 313
  • 11. Прелюдия Тестирование ПО Что за вопрос лежит в основе тестирования? Работает ли это ПО правильно? НЕТ Работает ли это ПО неправильно? ДА = Тестирование Разрушение Марат Ахин (СПбГПУ) Intro 2014 8 / 313
  • 12. Прелюдия Тестирование ПО Что за вопрос лежит в основе тестирования? Работает ли это ПО правильно? НЕТ Работает ли это ПО неправильно? ДА = Тестирование Разрушение Марат Ахин (СПбГПУ) Intro 2014 8 / 313
  • 13. Прелюдия Тестирование ПО Кому помогает тестирование? Лучший друг верификации и валидации ПО В чем разница? Верификация – «мы сделали это правильно» Валидация – «мы сделали то, что надо» Марат Ахин (СПбГПУ) Intro 2014 9 / 313
  • 14. Прелюдия Тестирование ПО Можем ли мы что-то гарантировать при тестировании? Данное ПО никогда не упадет Потоки никогда не заблокируются Вычисления всегда выполняются корректно Временные характеристики всегда выдерживаются Мы можем дать такие гарантии лишь в самых тривиальных случаях, когда обычно все ясно и без тестирования Марат Ахин (СПбГПУ) Intro 2014 10 / 313
  • 15. Прелюдия Тестирование ПО Можем ли мы что-то гарантировать при тестировании? Данное ПО никогда не упадет Потоки никогда не заблокируются Вычисления всегда выполняются корректно Временные характеристики всегда выдерживаются Мы можем дать такие гарантии лишь в самых тривиальных случаях, когда обычно все ясно и без тестирования Марат Ахин (СПбГПУ) Intro 2014 10 / 313
  • 16. Прелюдия Тестирование ПО Почему тестировать сложно? Brian Kernighan «Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.» Massimo Arnoldi (feat. Kent Beck) «Unfortunately at least for me (and not only) testing goes against human nature. If you realize the pig in you, you will see that you program without tests.» Марат Ахин (СПбГПУ) Intro 2014 11 / 313
  • 17. Прелюдия Тестирование ПО Почему тестировать нужно? Если отложить сегодняшние дела на послезавтра, у вас появятся два свободных дня! (с) Марат Ахин (СПбГПУ) Intro 2014 12 / 313
  • 18. Прелюдия Тестирование ПО Что же делать? Марат Ахин (СПбГПУ) Intro 2014 13 / 313
  • 19. Тестирование за 45 минут Содержание 1 Прелюдия 2 Тестирование за 45 минут Тестирование ПО с точки зрения дилетанта Модель программной ошибки Модель тестирования ПО Процесс тестирования ПО 3 Тестирование в процессе разработки ПО Марат Ахин (СПбГПУ) Intro 2014 14 / 313
  • 20. Тестирование за 45 минут Тестирование ПО с точки зрения дилетанта Тестирование ПО с точки зрения дилетанта Запустили приложение Проверили результаты выполнения на предмет наличия в них ошибок aka aka aka aka «багов» «сбоев» «дефектов» «неудач» Сперва надо разобраться, а что же такое «программная ошибка»? Марат Ахин (СПбГПУ) Intro 2014 15 / 313
  • 21. Тестирование за 45 минут Модель программной ошибки Модель программной ошибки FAILURE FAULT ERROR Неудача – наблюдаемое снаружи некорректное поведение программы Сбой – некорректное состояние программы из-за ошибки Ошибка – ошибка в самой программе, внесенная на этапе разработки Рассмотрим данную модель на примере Марат Ахин (СПбГПУ) Intro 2014 16 / 313
  • 22. Тестирование за 45 минут Модель программной ошибки Модель программной ошибки Найдите ошибку в следующей программе на Java 1 int sumCollection ( final @NotNull Collection < Integer > c ) { 2 int sum = 0; 3 for ( int i : c ) { 4 sum += i ; 5 } 6 return sum ; 7 } Возможное переполнение в строке 4 Марат Ахин (СПбГПУ) Intro 2014 17 / 313
  • 23. Тестирование за 45 минут Модель программной ошибки Модель программной ошибки Найдите ошибку в следующей программе на Java 1 int sumCollection ( final @NotNull Collection < Integer > c ) { 2 int sum = 0; 3 for ( int i : c ) { 4 sum += i ; 5 } 6 return sum ; 7 } Возможное переполнение в строке 4 Марат Ахин (СПбГПУ) Intro 2014 17 / 313
  • 24. Тестирование за 45 минут Модель программной ошибки Модель программной ошибки c = {} Что будет? 1 int sumCollection ( final @NotNull Collection < Integer > c ) { 2 int sum = 0; 3 for ( int i : c ) { 4 sum += i ; 5 } 6 return sum ; 7 } Нет ни сбоя, ни неудачи – программа работает корректно Марат Ахин (СПбГПУ) Intro 2014 18 / 313
  • 25. Тестирование за 45 минут Модель программной ошибки Модель программной ошибки c = {} Что будет? 1 int sumCollection ( final @NotNull Collection < Integer > c ) { 2 int sum = 0; 3 for ( int i : c ) { 4 sum += i ; 5 } 6 return sum ; 7 } Нет ни сбоя, ни неудачи – программа работает корректно Марат Ахин (СПбГПУ) Intro 2014 18 / 313
  • 26. Тестирование за 45 минут Модель программной ошибки Модель программной ошибки c = {1, 2, 3, 5} Что будет? 1 int sumCollection ( final @NotNull Collection < Integer > c ) { 2 int sum = 0; 3 for ( int i : c ) { 4 sum += i ; 5 } 6 return sum ; 7 } Нет ни сбоя, ни неудачи – программа работает корректно Марат Ахин (СПбГПУ) Intro 2014 19 / 313
  • 27. Тестирование за 45 минут Модель программной ошибки Модель программной ошибки c = {1, 2, 3, 5} Что будет? 1 int sumCollection ( final @NotNull Collection < Integer > c ) { 2 int sum = 0; 3 for ( int i : c ) { 4 sum += i ; 5 } 6 return sum ; 7 } Нет ни сбоя, ни неудачи – программа работает корректно Марат Ахин (СПбГПУ) Intro 2014 19 / 313
  • 28. Тестирование за 45 минут Модель программной ошибки Модель программной ошибки c = {1, 2, 3, 5, Integer.MAX_VALUE, Integer.MIN_VALUE} Что будет? 1 int sumCollection ( final @NotNull Collection < Integer > c ) { 2 int sum = 0; 3 for ( int i : c ) { 4 sum += i ; 5 } 6 return sum ; 7 } Сбой есть – программа проходит через некорректное состояние Но неудачи нет – результат работы программы корректен Марат Ахин (СПбГПУ) Intro 2014 20 / 313
  • 29. Тестирование за 45 минут Модель программной ошибки Модель программной ошибки c = {1, 2, 3, 5, Integer.MAX_VALUE, Integer.MIN_VALUE} Что будет? 1 int sumCollection ( final @NotNull Collection < Integer > c ) { 2 int sum = 0; 3 for ( int i : c ) { 4 sum += i ; 5 } 6 return sum ; 7 } Сбой есть – программа проходит через некорректное состояние Но неудачи нет – результат работы программы корректен Марат Ахин (СПбГПУ) Intro 2014 20 / 313
  • 30. Тестирование за 45 минут Модель программной ошибки Модель программной ошибки c = {1, 2, 3, 5, Integer.MAX_VALUE} Что будет? 1 int sumCollection ( final @NotNull Collection < Integer > c ) { 2 int sum = 0; 3 for ( int i : c ) { 4 sum += i ; 5 } 6 return sum ; 7 } Сбой есть – программа проходит через некорректное состояние Неудача тоже есть – результат работы программы неправильный Марат Ахин (СПбГПУ) Intro 2014 21 / 313
  • 31. Тестирование за 45 минут Модель программной ошибки Модель программной ошибки c = {1, 2, 3, 5, Integer.MAX_VALUE} Что будет? 1 int sumCollection ( final @NotNull Collection < Integer > c ) { 2 int sum = 0; 3 for ( int i : c ) { 4 sum += i ; 5 } 6 return sum ; 7 } Сбой есть – программа проходит через некорректное состояние Неудача тоже есть – результат работы программы неправильный Марат Ахин (СПбГПУ) Intro 2014 21 / 313
  • 32. Тестирование за 45 минут Модель тестирования ПО Что мы делали? Запускали ПО (мысленно) Сравнивали результаты работы с ожидаемыми (логически) Можно ли придумать другой способ тестирования? Марат Ахин (СПбГПУ) Intro 2014 22 / 313
  • 33. Тестирование за 45 минут Модель тестирования ПО Модель тестирования ПО Эталонная модель может быть представлена множеством различных способов неформальное представление о том, «как должна работать программа» формальная техническая спецификация набор тестовых примеров корректные результаты работы программы другая (априори корректная) реализация той же исходной спецификации Марат Ахин (СПбГПУ) Intro 2014 23 / 313
  • 34. Тестирование за 45 минут Процесс тестирования ПО Процесс тестирования ПО Что может случиться? Марат Ахин (СПбГПУ) Intro 2014 24 / 313
  • 35. Тестирование за 45 минут Процесс тестирования ПО Тест прошел A-WE-SO-ME! Марат Ахин (СПбГПУ) Intro 2014 25 / 313
  • 36. Тестирование за 45 минут Процесс тестирования ПО Тест не прошел OH-MI-GOD! Марат Ахин (СПбГПУ) Intro 2014 26 / 313
  • 37. Тестирование за 45 минут Процесс тестирования ПО Ошибка в ПО Все просто и понятно, да? Марат Ахин (СПбГПУ) Intro 2014 27 / 313
  • 38. Тестирование за 45 минут Процесс тестирования ПО Ошибка в эталонной модели Некорректный тест? Ошибка в спецификации? Марат Ахин (СПбГПУ) Intro 2014 28 / 313
  • 39. Тестирование за 45 минут Процесс тестирования ПО Ошибка в тестовом окружении Баг в тестовой библиотеке? Марат Ахин (СПбГПУ) Intro 2014 29 / 313
  • 40. Тестирование за 45 минут Процесс тестирования ПО Ошибка в платформе Баг в ОС? Аппаратный сбой? Ошибка компилятора? Марат Ахин (СПбГПУ) Intro 2014 30 / 313
  • 41. Тестирование за 45 минут Процесс тестирования ПО Процесс тестирования ПО Является ли данная модель самодостаточной? Марат Ахин (СПбГПУ) Intro 2014 31 / 313
  • 42. Тестирование за 45 минут Процесс тестирования ПО Процесс тестирования ПО Откуда брать эталонную модель? Как сравнивать результаты работы программы и модели? Марат Ахин (СПбГПУ) Intro 2014 32 / 313
  • 43. Тестирование за 45 минут Процесс тестирования ПО Процесс тестирования ПО Когда останавливать процесс тестирования? Марат Ахин (СПбГПУ) Intro 2014 33 / 313
  • 44. Тестирование за 45 минут Процесс тестирования ПО Процесс тестирования ПО Как подобрать входные данные, чтобы: дойти до места с программной ошибкой (Reachibility) испортить состояние программы с появлением сбоя (Corruption) вызвать неудачу в работе программы (Propagation) Марат Ахин (СПбГПУ) Intro 2014 34 / 313
  • 45. Проблемы тестирования Проблемы тестирования Проблемы тестирования What’s up, Doc? (с) Проблема тестовых входных данных Проблема наблюдаемости Проблема «останова» Проблема тестового оракула Марат Ахин (СПбГПУ) Intro 2014 35 / 313
  • 46. Тестирование в процессе разработки ПО Содержание 1 Прелюдия 2 Тестирование за 45 минут 3 Тестирование в процессе разработки ПО Модели разработки ПО Проблемы тестирования ПО Марат Ахин (СПбГПУ) Intro 2014 36 / 313
  • 47. Тестирование в процессе разработки ПО Модели разработки ПО Модели разработки ПО Чем активнее используется тестирование в процессе разработки, тем важнее его правильное использование Марат Ахин (СПбГПУ) Intro 2014 37 / 313
  • 48. Тестирование в процессе разработки ПО Модели разработки ПО Водопадная модель Строго последовательная модель разработки Тестирование выполняется над всей программой сразу Имеется хорошая эталонная модель Стоимость поиска и исправления ошибок очень высока Марат Ахин (СПбГПУ) Intro 2014 38 / 313
  • 49. Тестирование в процессе разработки ПО Модели разработки ПО Инкрементальная модель Разработка проходит в несколько итераций Тестируются отдельные версии программы Имеется неплохая эталонная модель Стоимость поиска и исправления ошибок высока Марат Ахин (СПбГПУ) Intro 2014 39 / 313
  • 50. Тестирование в процессе разработки ПО Модели разработки ПО Гибкая модель Все этапы разработки неразрывно связаны друг с другом Тестированию подвергаются как сама программа, так и ее компоненты Эталонная модель есть не всегда Стоимость поиска и исправления ошибок относительно низка Марат Ахин (СПбГПУ) Intro 2014 40 / 313
  • 51. Тестирование в процессе разработки ПО Проблемы тестирования ПО Проблемы тестирования ПО Разве что-то может пойти совсем плохо? Марат Ахин (СПбГПУ) Intro 2014 41 / 313
  • 52. Тестирование в процессе разработки ПО Проблемы тестирования ПО Розовые очки Марат Ахин (СПбГПУ) Intro 2014 42 / 313
  • 53. Тестирование в процессе разработки ПО Проблемы тестирования ПО Розовые очки Неправильное тестирование создает иллюзию, что все хорошо... ...тогда как на самом деле все может быть очень и очень плохо Все тесты проходят Выпускаем код в релиз ... BOOM! Марат Ахин (СПбГПУ) Intro 2014 43 / 313
  • 54. Тестирование в процессе разработки ПО Проблемы тестирования ПО Наводнение Марат Ахин (СПбГПУ) Intro 2014 44 / 313
  • 55. Тестирование в процессе разработки ПО Проблемы тестирования ПО Наводнение Неправильное тестирование создает иллюзию, что все плохо... ...тогда как на самом деле все вполне себе ничего Большинство тестов не проходит Садимся и исправляем ошибки ... UNREACHABLE! Марат Ахин (СПбГПУ) Intro 2014 45 / 313
  • 56. Тестирование в процессе разработки ПО Проблемы тестирования ПО Прятки Марат Ахин (СПбГПУ) Intro 2014 46 / 313
  • 57. Тестирование в процессе разработки ПО Проблемы тестирования ПО Прятки Неправильное тестирование создает иллюзию, что все плохо... ...тогда как на самом деле все плохо в другом месте Некоторые тесты не проходит Садимся и ищем ошибки ... HUH? Марат Ахин (СПбГПУ) Intro 2014 47 / 313
  • 58. Что же делать? Что же делать? Что же делать? Марат Ахин (СПбГПУ) Intro 2014 48 / 313
  • 59. Что же делать? Что же делать? Что же делать? Марат Ахин (СПбГПУ) Intro 2014 49 / 313
  • 60. W.I.L.T. What I Learned Today? W.I.L.T. Марат Ахин (СПбГПУ) Intro 2014 50 / 313