8.51M
Категория: ПрограммированиеПрограммирование

Тестирование программного обеспечения

1.

Тестирование
программного обеспечения
- Введение в автоматизацию тестирования(АТ) ПО -
Василий Корпусов
СПБ 2020 г.

2.

Василий Корпусов
• Test Automation Engineer,
Bercut ltd
• Автоматизировал 700+
ручных тест-кейсов
• Аспирант кафедры
«Автоматизация предприятий
связи», СПБГУТ им. БончБруевича
GRAPHICBULB
2

3.

План
История развития тестирования
Процесс тестирования(тестировщик, уровни,
виды и типы тестирования)
Автоматизированное
тестирование(автоматизатор)
Подходы к АТ
Области применения АТ
Преимущества и недостатки АТ
Навыки и умения
GRAPHICBULB
3

4.

Источники
• ISTQB (International Software Testing
Qualifications Board) https://www.rstqb.org/ru/istqbdownloads.html
• ГОСТ Р 56922-2016/ISO/IEC/IEEE 291191:2013 Системная и программная
инженерия. Тестирование программного
обеспечения. Часть 1-3 http://docs.cntd.ru/document/1200134996,
GRAPHICBULB
4

5.

Введение
„Тестирование программы может
весьма эффективно
продемонстрировать наличие
ошибок, но оно не демонстрирует
их отсутствие.“
- Эдсгер Вибе Дейкстра, Ученый-информатик, сооснователь структурного
программирования
GRAPHICBULB
5

6.

История: Появление процесса
тестирования ПО
Первые программы
разрабатывались для МО
Строго формализованное
тестирование
Отдельный процесс
тестирование
GRAPHICBULB
6

7.

Тестирование в
1960-х
7
• В 1960-х много внимания уделялось «исчерпывающему» тестированию, которое должно
проводиться с использованием всех путей в коде или всех возможных входных данных
GRAPHICBULB

8.

Тестирование в
1970-х
8
• В начале 1970-х тестирование ПО обозначалось как «процесс, направленный на демонстрацию
корректности продукта»
GRAPHICBULB

9.

Тестирование в
1980-х
9
• В 1980-х тестирование расширилось таким понятием, как предупреждение дефектов
• В середине 1980-х появились первые инструменты для автоматизированного тестирования
GRAPHICBULB

10.

Тестирование в
1990-х
10
• В начале 1990-х переход от тестирования к обеспечению качества, охватывающего весь цикл
разработки ПО
• В середине 1990-х с развитием Интернета и разработкой большого количества веб-приложений
особую популярность стало получать «гибкое тестирование»
GRAPHICBULB

11.

Тестирование в
2000-х
11
• В 2000-х появилось еще более широкое определение тестирования, когда в него было добавлено
понятие «оптимизация бизнес-технологий» (en:business technology optimization, BTO). BTO
направляет развитие информационных технологий в соответствии с целями бизнеса.
GRAPHICBULB

12.

Testing - Quality Control – Quality
Assurance
+ Работа на
QA
предотвращение
багов и
улучшения
качества
Проверка ПО,
поиск ошибок,
дефектов ,
багов
GRAPHICBULB
12
(bugs
prevention)
QC
(verification &
Validation)
TESTING
(detection)
+ Анализ
полученных
результатов

13.

Software Testing
Software Testing (тестирование
ПО) — процесс исследования,
испытания программного продукта,
имеющий своей целью проверку
соответствия между реальным
поведением программы и её
ожидаемым поведением на конечном
наборе тестов, выбранных
определённым образом (ISO/IEC TR
19759:2005)
GRAPHICBULB
13

14.

Quality Control
Quality
Control
(контроль
качества)

это
процесс
нахождения ошибок в продукте, с
целью
их
последующего
исправления.
• Задачей
Quality
Control
является поддержка качества
продукта в текущий момент
времени.
GRAPHICBULB
14

15.

Quality Assurance
15
Quality Assurance (обеспечение качества) — это превентивный
процесс, задачей которого является обеспечение качества
продукта в будущем.
GRAPHICBULB

16.

Тестировщик – QA/QC
Engineer
Тестировщик (tester) – это опытный специалист, принимающий участие в тестировании
компонента или системы. [ISTQB Glossary]
GRAPHICBULB
16

17.

Уровни
тестирования
ACCEPTANCE
TESTING
SYSTEM TESTING
INTEGRATION
TESTING
UNIT
TESTING
GRAPHICBULB
17

18.

Unit Testing
18
Модульное(компонентное) тестирование - тестирование
отдельных компонентов программного обеспечения.
[Согласно IEEE 610]
GRAPHICBULB

19.

Integration Testing
19
Component Integration
Testing (компонентное
тестирование)
System Integration Testing
(Системное тестирование)
Интеграционное тестирование - тестирование,
выполняемое для обнаружения дефектов в интерфейсах и
во взаимодействии между интегрированными компонентами
или системами. [ISTQB Glossary]
GRAPHICBULB

20.

System Testing
20
Alpha Testing
(альфа
тестирование)
Beta Testing
(бета
тестирование)
Системное тестирование - процесс тестирования системы в
целом с целью проверки того, что она соответствует
установленным требованиям. [ISTQB Glossary]
GRAPHICBULB

21.

Acceptance Testing
21
Приёмочное тестирование проводится с целью
определения соответствия
системы критериям приёмки и
дать возможность
пользователям, заказчикам
или иным авторизированым
лицам определить, принимать
систему или нет. [Согласно
IEEE 610]
GRAPHICBULB

22.

Виды тестирования
GRAPHICBULB
22

23.

По объекту
тестирования
Functional testing
GUI testing
Localization testing
Performance testing
Security testing
Usability testing
Compatibility testing
GRAPHICBULB
23

24.

Functional Testing
24
Проводится в двух
аспектах:
Требования
Бизнес-процессы
Функциональное тестирование - тестирование, основанное
на анализе спецификации функциональности компонента или
системы. [ISTQB Glossary]
GRAPHICBULB

25.

По объекту
тестирования
Functional testing
GUI testing
Localization testing
Performance testing
Security testing
Usability testing
Compatibility testing
GRAPHICBULB
25

26.

GUI Testing
26
Тестирование пользовательского интерфейса –
функциональная проверка интерфейса на соответствие
требованиям(размер, шрифт, цвет и т.д.).
GRAPHICBULB

27.

По объекту
тестирования
Functional testing
GUI testing
Localization testing
Performance testing
Security testing
Usability testing
Compatibility testing
GRAPHICBULB
27

28.

Localization Testing
Тестирование
локализации - это
процесс тестирования
локализованной версии
программного продукта.
[ISTQB Glossary]
GRAPHICBULB
28

29.

По объекту
тестирования
Functional testing
GUI testing
Localization testing
Performance testing
Security testing
Usability testing
Compatibility testing
GRAPHICBULB
29

30.

Performance Testing
Load
Stress
Recover
y
Performanc
e
Testing
Stabili
ty
Scalabili
ty
Volume
GRAPHICBULB
30

31.

По объекту
тестирования
Functional testing
GUI testing
Localization testing
Performance testing
Security testing
Usability testing
Compatibility testing
GRAPHICBULB
31

32.

Security Testing
32
Тестирование безопасности - тестирование с целью оценить
защищенность программного продукта. [ISTQB Glossary]
GRAPHICBULB

33.

По объекту
тестирования
Functional testing
GUI testing
Localization testing
Performance testing
Security testing
Usability testing
Compatibility testing
GRAPHICBULB
33

34.

Usability Testing
34
Тестирование удобства пользования - тестирование с
целью определения степени понятности, легкости в изучении
и использовании, привлекательности программного продукта
для пользователя. [ISO 9126]
GRAPHICBULB

35.

По объекту
тестирования
Functional testing
GUI testing
Localization testing
Performance testing
Security testing
Usability testing
Compatibility testing
GRAPHICBULB
35

36.

Compatibility Testing
36
Обратная
совместимость
Прямая
совместимость
Тестирование совместимости - процесс тестирования для
определения возможности взаимодействия программного
продукта. [ISTQB Glossary]
GRAPHICBULB

37.

По запуску кода на
исполнение
Static testing
(статическое тестирование)
Dynamic testing
(динамическое тестирование)
GRAPHICBULB
37

38.

По доступу к коду
Black box
(system test)
Grey box
(integration testing)
White box
(unit testing)
GRAPHICBULB
38

39.

По степени
автоматизации
Manual testing
Automated testing
Semi automated testing
GRAPHICBULB
39

40.

По степени
автоматизации
Manual testing
Automated testing
Semi automated testing
GRAPHICBULB
40

41.

По степени
автоматизации
Manual testing
Automated testing
Semi automated testing
GRAPHICBULB
41

42.

Связанное с изменениями
Build Verification Test
Smoke Testing
Sanity Testing
Regression Testing
GRAPHICBULB
42

43.

Связанное с изменениями
Build Verification Test
Smoke Testing
Sanity Testing
Regression Testing
GRAPHICBULB
43

44.

Связанное с изменениями
Build Verification Test
Smoke Testing
Sanity Testing
Regression Testing
GRAPHICBULB
44

45.

Связанное с изменениями
Build Verification Test
Smoke Testing
Sanity Testing
Regression Testing
GRAPHICBULB
45

46.

По признаку позитивности
сценариев
Positive testing
Negative testing
GRAPHICBULB
46

47.

По признаку позитивности
сценариев
Positive testing
Negative testing
GRAPHICBULB
47

48.

Тестирование по плану
GRAPHICBULB
48

49.

Тестирование без
плана
49
Ad hoc testing(свободное тестирование)
Exploratory
testing(исследовательское
GRAPHICBULB

50.

Типы тестирования
Smoke test
Critical path test
Extended test
GRAPHICBULB
50

51.

Smoke test
Пример Smoke-теста для калькулятора:
1. Ввести число
2. Выбрать функцию(сложение, вычитание,
умножение и т.д.)
3. Ввести второе число
4. Нажать на равно
5. Убедиться в наличии ответа
GRAPHICBULB
51

52.

Типы тестирования
Smoke test
Critical path test
Extended test
GRAPHICBULB
52

53.

Critical path test
Примеры шагов критического теста для
тестирования калькулятора:
Проверка сложения, умножения, деления и т.д.
Деление на ноль
Оставить пустым
Специальные символы
Ноль вначале, без разделяющего символа
Пробелы
Ноль после разделяющего символа для десятичных значений
И т.д.
GRAPHICBULB
53

54.

Типы тестирования
Smoke test
Critical path test
Extended test
GRAPHICBULB
54

55.

Extended test
55
Примеры шагов расширенного теста для
тестирования калькулятора:
Нажатие нескольких кнопок подряд
сложение, потом вычитание)
Вычисление результата уравнения
И т.д.
GRAPHICBULB
(сначала

56.

Test Automation
Автоматизация тестирования (test automation): Использование программного
обеспечения для осуществления или помощи в проведении определенных
тестовых процессов, например, управление тестированием, проектирование
тестов, GRAPHICBULB
выполнение тестов и проверка результатов. [ISTQB Glossary]
56

57.

Из чего состоит
автоматизация?
Автотесты (скрипты)
Система запуска
Анализ результатов
GRAPHICBULB
57

58.

Когда необходима
автоматизация?
58
Масштабное приложение с большим
количеством бизнес-функций
Значительный срок жизни приложения (от
1 года и более)
Внедрение CI/CD, регулярные релизы +
небольшое количество QA специалистов
GRAPHICBULB

59.

Концепция непрерывной
интеграции и доставки(CI/CD)
GRAPHICBULB
59

60.

Зачем нужна автоматизация?
Решение
рутинных
задач
Уменьшение
затрат на
ручное
тестирование
Ускорение
выполнения
тестирования
Увеличение
тестового
покрытия
GRAPHICBULB
60

61.

61
Тестирован
ие
Разработк
а
Тестировщик-Автоматизатор
«Типичный Автоматизатор — хитрец. Он сделает все для того,
чтобы не делать одно и то же несколько раз».
GRAPHICBULB

62.

Плюсы автоматизации
Неутомимость
Скорость
Многофункциональность
Масштаб
Экономия сил
Экономия средств
GRAPHICBULB
62

63.

+ Неутомимость
GRAPHICBULB
63

64.

+ Скорость
GRAPHICBULB
64

65.

+
Многофункциональнос
ть
GRAPHICBULB
65

66.

+ Масштаб
GRAPHICBULB
66

67.

+ Экономия сил
GRAPHICBULB
67

68.

+ Экономия средств
GRAPHICBULB
68

69.

Минусы автоматизации
Поломки
Близорукость
Трудно поддерживать
Не везде применимы
Затратность
GRAPHICBULB
69

70.

- Поломки
GRAPHICBULB
70

71.

- Близорукость
GRAPHICBULB
71

72.

- Трудно
поддерживать
GRAPHICBULB
72

73.

- Не везде
применимы
GRAPHICBULB
73

74.

- Затратность
GRAPHICBULB
74

75.

Выводы
GRAPHICBULB
75

76.

Пирамида АТ
GRAPHICBULB
76

77.

Когда автоматизировать?
Regression testing
Performance testing
Compatibility testing
Unit testing
Smoke testing
Security testing
GUI testing
GRAPHICBULB
77

78.

Automated Regression
Testing
Какую проблему решает автоматизация регрессионного
тестирования?
• Необходимость выполнять вручную тесты,
количество которых неуклонно растёт с каждым
билдом, но вся суть которых сводится к проверке
того факта, что ранее работавшая
функциональность продолжает работать
корректно.
GRAPHICBULB
78

79.

Когда автоматизировать?
Regression testing
Performance testing
Compatibility testing
Unit testing
Smoke testing
Security testing
GUI testing
GRAPHICBULB
79

80.

Automated Performance
Testing
Какую проблему решает автоматизация
производительности?
• Создание нагрузки с интенсивностью и точностью,
недоступной человеку.
• Сбор с высокой скоростью большого набора
параметров работы приложения.
• Анализ большого объёма данных из журналов
работы системы автоматизации.
GRAPHICBULB
80

81.

Когда автоматизировать?
Regression testing
Performance testing
Compatibility testing
Unit testing
Smoke testing
Security testing
GUI testing
GRAPHICBULB
81

82.

Automated Compatibility
Testing
Какую проблему решает автоматизация тестирования
совместимости?
• Выполнение одних и тех же тест-кейсов на
большом множестве входных данных, под
разными платформами и в разных условиях.
GRAPHICBULB
82

83.

Когда автоматизировать?
Regression testing
Performance testing
Compatibility testing
Unit testing
Smoke testing
Security testing
GUI testing
GRAPHICBULB
83

84.

Automated Unit Testing
Какую проблему решает автоматизация модульного
тестирования?
• Проверка корректности работы атомарных
участков кода и элементарных взаимодействий
таких участков кода — практически невыполнимая
для человека задача при условии, что нужно
выполнить тысячи таких проверок и нигде не
ошибиться.
GRAPHICBULB
84

85.

Когда автоматизировать?
Regression testing
Performance testing
Compatibility testing
Unit testing
Smoke testing
Security testing
GUI testing
GRAPHICBULB
85

86.

Automated Smoke Testing
Какую проблему решает автоматизация smoke
тестирования?
• Выполнение при получении каждого билда
большого количества достаточно простых тесткейсов необходимых для проверки
работоспособности приложения.
GRAPHICBULB
86

87.

Когда автоматизировать?
Regression testing
Performance testing
Compatibility testing
Unit testing
Smoke testing
Security testing
GUI testing
GRAPHICBULB
87

88.

Automated Security Testing
Какую проблему решает автоматизация тестирования
безопасности?
• Необходимость проверки прав доступа, паролей
по умолчанию, открытых портов, уязвимостей
текущих версий ПО и т. д., т. е. быстрое
выполнения очень большого количества проверок,
в процессе которого нельзя что-то пропустить,
забыть или «не так понять».
GRAPHICBULB
88

89.

Когда автоматизировать?
Regression testing
Performance testing
Compatibility testing
Unit testing
Smoke testing
Security testing
GUI testing
GRAPHICBULB
89

90.

Automated GUI Testing
Какую проблему решает автоматизация тестирования
пользовательского интерфейса?
• Автоматизация предельно рутинных действий
(например, проверить покупку всех товаров в
интернет-магазине).
GRAPHICBULB
90

91.

Выбор инструмента
GRAPHICBULB
91

92.

Необходимые знания и
Сочетание программирования и тестирования в
навыки
автоматизации:
Программирова
ние
Тестирование
Автоматизаци
я
тестирования
GRAPHICBULB
92

93.

93
GRAPHICBULB

94.

Связь со мной
94
• Телеграмм: @korpusovv
• Почта:
[email protected]
GRAPHICBULB
English     Русский Правила