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

Содержание

Слайд 2

В этом разделе:

История тестирования;
Понять, какие качества делают тестировщиков хорошими;
Почему

В этом разделе: История тестирования; Понять, какие качества делают тестировщиков хорошими; Почему тестирование необходимо; Базовая терминология.
тестирование необходимо;
Базовая терминология.

Слайд 3

Немного истории…

Немного истории…

Слайд 4

60-е годы.

60-е годы – «исчерпывающее тестирование»

20 вложенных операторов if =>
1’048’576 ветвей выполнения

НЕВОЗМОЖНО

60-е годы. 60-е годы – «исчерпывающее тестирование» 20 вложенных операторов if => 1’048’576 ветвей выполнения НЕВОЗМОЖНО

Слайд 5

70…80-е годы.

70-е годы – «поиск дефектов»

80-е годы – «предупреждение дефектов»

НЕЭФФЕКТИВНО

Почему?

70…80-е годы. 70-е годы – «поиск дефектов» 80-е годы – «предупреждение дефектов» НЕЭФФЕКТИВНО Почему?

Слайд 6

80-е годы – «предупреждение дефектов»

80-е годы – «предупреждение дефектов»

Слайд 7

90-е – 00-е годы – «обеспечение качества»

90-е – 00-е годы – «обеспечение качества»

Слайд 8

Современный этап – «гибкие методологии, тесная интеграция с разработкой, автоматизация»

Современный этап – «гибкие методологии, тесная интеграция с разработкой, автоматизация»

Слайд 9

Пара слов о методологиях

Пара слов о методологиях

Слайд 10

Методология/модель/процесс разработки ПО –

это структура (набор правил), согласно которой построена разработка.

Методология/модель/процесс разработки ПО – это структура (набор правил), согласно которой построена разработка.

Слайд 11

Методология разработки ПО схематично:

Анализ требований  
Спецификация (документ)
Проектирование ПО
Программирование
Тестирование
Внедрение (установка)

Методология разработки ПО схематично: Анализ требований Спецификация (документ) Проектирование ПО Программирование Тестирование Внедрение (установка) Сопровождение

Сопровождение

Слайд 12

Классические методология разработки ПО водопадная и итерационная:

Классические методология разработки ПО водопадная и итерационная:

Слайд 13

Каскадный процесс

Каскадный процесс

Слайд 14

Agile Manifesto разработан и принят 11-13 февраля 2001 года на лыжном курорте

Agile Manifesto разработан и принят 11-13 февраля 2001 года на лыжном курорте
The Lodge at Snowbird в горах Юты.
Манифест подписали представители следующих методологий:
Extreme programming
Scrum
DSDM
Adaptive Software Development
Crystal Clear
Feature-Driven Development
Pragmatic Programming.

Содержит 4 основные идеи и 12 принципов.
Не содержит практических советов!

Слайд 15

Идеи:
Личности и их взаимодействия важнее, чем процессы и инструменты;
Работающее программное обеспечение важнее,

Идеи: Личности и их взаимодействия важнее, чем процессы и инструменты; Работающее программное
чем полная документация;
Сотрудничество с заказчиком важнее, чем контрактные обязательства;
Реакция на изменения важнее, чем следование плану.
Принципы:
удовлетворение клиента за счёт ранней и бесперебойной поставки ценного ПО;
приветствие изменений требований, даже в конце разработки;
частая поставка рабочего ПО (каждый месяц или неделю или ещё чаще);
тесное, ежедневное общение заказчик <-> разработчики;
проектом занимаются мотивированные личности, которые обеспечены нужными условиями работы, поддержкой и доверием;
рекомендуемый метод передачи информации — личный разговор;
работающее ПО — лучший измеритель прогресса;
спонсоры, разработчики и пользователи должны иметь возможность поддерживать постоянный темп на неопределенный срок;
постоянное внимание на улучшение технического мастерства и удобный дизайн;
простота — искусство НЕ делать лишней работы;
лучшие технические требования, дизайн и архитектура получаются у самоорганизованной команды;
постоянная адаптация к изменяющимся обстоятельствам.

Слайд 16

Agile методологии (Scrum, Kanban... и множество других.

Agile методологии (Scrum, Kanban... и множество других.

Слайд 18

Психология тестирования

Психология тестирования

Слайд 19

Психология тестирования.

Психологические навыки и особенности тестировщика таковы:
Хорошие коммуникативные навыки;
Способность ясно, быстро, чётко

Психология тестирования. Психологические навыки и особенности тестировщика таковы: Хорошие коммуникативные навыки; Способность
выражать свои мысли;
Исполнительность;
Ответственность;
Терпение, усидчивость, внимательность к деталям, наблюдательность;
Гибкое мышление, хорошая способность к обучению;
Хорошее абстрактное и аналитическое мышление;
Способность ставить нестандартные эксперименты;
Склонность к исследовательской деятельности..

Слайд 20

Первоначально важно хотя бы "Умение излагать мысли и замечания на родном языке”,

Первоначально важно хотя бы "Умение излагать мысли и замечания на родном языке”,
а потом уже "Английский для тестировщиков" !

Какие знания нужны:

English
Технические навыки:
Общение с СУБД: SQL.
Основы Web (Client-Server, HTTP, HTML)
Администрирование ОС: Windows, Sun Solaris, HP-UX, Free-BSD, Linux.
Сетевое администрирование: TCP/IP, IPX/SPX, NetBIOS.
Программирование: C/C++/C#, Java, PHP, Object Pascal, Visual Basic, JavaScript, HTML, .NET.

Слайд 21

Почему тестирование необходимо?

Почему тестирование необходимо?

Слайд 22

Почему тестирование необходимо?

Бизнес: «Пользователи склонны пользоваться качественными продуктами (даже если они дороже)»

Почему тестирование необходимо? Бизнес: «Пользователи склонны пользоваться качественными продуктами (даже если они дороже)»

Слайд 23

Почему тестирование необходимо?

Пользователи: «лучше не рисковать личными данными, деньгами и т.п.»

Почему тестирование необходимо? Пользователи: «лучше не рисковать личными данными, деньгами и т.п.»

Слайд 24

Почему тестирование необходимо?

Почему тестирование становится все более важным?
Растет количество устройств –

Почему тестирование необходимо? Почему тестирование становится все более важным? Растет количество устройств – IoT
IoT

Слайд 25

Почему тестирование необходимо?

Почему тестирование становится все более важным?
Растет количество устройств –

Почему тестирование необходимо? Почему тестирование становится все более важным? Растет количество устройств
IoT
Растет количество пользователей

Слайд 26

Почему тестирование необходимо?

Почему тестирование становится все более важным?
Растет количество устройств –

Почему тестирование необходимо? Почему тестирование становится все более важным? Растет количество устройств
IoT
Растет количество пользователей
Растет сложность ПО

Слайд 27

Почему тестирование необходимо?

Почему тестирование становится все более важным?
Растет количество устройств –

Почему тестирование необходимо? Почему тестирование становится все более важным? Растет количество устройств
IoT
Растет количество пользователей
Растет сложность ПО
Скорость выхода на рынок является ключевым конкурентным преимуществом сегодня

Слайд 28

Почему тестирование необходимо?

Все: «Мы не хотим рисковать!»

Почему тестирование необходимо? Все: «Мы не хотим рисковать!»

Слайд 29

Почему тестирование необходимо?

Причины дефектов программного обеспечения. Как возникают ошибки
Никто не совершенен!
Чем большее

Почему тестирование необходимо? Причины дефектов программного обеспечения. Как возникают ошибки Никто не
давление на нас оказывается, тем более мы склонны делать ошибки.
В ИТ-разработке мы должны соблюдать временные сроки и бюджет.
Требования определены нечетко или плохо документированы.
Спецификации данных не завершены.
ПРЕДПОЛОЖЕНИЯ!

Слайд 30

Почему тестирование необходимо?

?

Приведите примеры «багов ПО» из жизни

Почему тестирование необходимо? ? Приведите примеры «багов ПО» из жизни

Слайд 31

Какую ошибку дешевле и проще исправить? Почему?

?

Какую ошибку дешевле и проще исправить? Почему? ?

Слайд 32

Ту, что обнаружена как можно ранее.

Модель роста стоимости по SDLC (Software Development

Ту, что обнаружена как можно ранее. Модель роста стоимости по SDLC (Software
Life Cycle)
UR = User Requirements (Требования пользователей)
FS = Functional Specification (Функциональная спецификация)
TS = Technical Specification (Техническая спецификация)
UAT = User Acceptance Testing (Пользовательское приемочное тестирование)

Слайд 33

Есть вопросы? Давайте обсудим!

?

Есть вопросы? Давайте обсудим! ?

Слайд 34

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

Семь принципов тестирования

Основы тестирования ПО Семь принципов тестирования

Слайд 35

Семь принципов тестирования

Принцип 1 – Тестирование демонстрирует наличие дефектов
Тестирование может показать, что

Семь принципов тестирования Принцип 1 – Тестирование демонстрирует наличие дефектов Тестирование может
дефекты в программном обеспечении есть, но не может доказать, что никаких дефектов нет.
Тестирование снижает вероятность того, что в программном обеспечении остались необнаруженные дефекты, но, даже если никаких дефектов не обнаружено, это не доказательство правильности работы программы.

Слайд 36

Семь принципов тестирования

Принцип 2 – Исчерпывающее тестирование невозможно
Протестировать абсолютно все (все комбинации

Семь принципов тестирования Принцип 2 – Исчерпывающее тестирование невозможно Протестировать абсолютно все
входов и предусловий) не представляется возможным, за исключением тривиальных случаев.
Вместо исчерпывающего тестирования, мы используем риски и приоритеты для эффективного сосредоточения усилий тестирования.

Слайд 37

Семь принципов тестирования

Принцип 3 – Раннее тестирование
Тестовые активности должны начинаться как можно

Семь принципов тестирования Принцип 3 – Раннее тестирование Тестовые активности должны начинаться
раньше в цикле разработки программного обеспечении или системы, и должны быть направлены на достижение определенных целей.

Слайд 38

Семь принципов тестирования

Принцип 4 – Скопление дефектов
Небольшое количество модулей содержат большинство дефектов,

Семь принципов тестирования Принцип 4 – Скопление дефектов Небольшое количество модулей содержат
выявленных в ходе тестирования, или демонстрируют наибольшее количество операционных сбоев.
Это еще одно проявление правила Парето 80/20 – 80% дефектов находятся в 20% функций.

Слайд 39

Семь принципов тестирования

Принцип 5 – «Парадокс пестицида» (DDT paradox)
Если одни и

Семь принципов тестирования Принцип 5 – «Парадокс пестицида» (DDT paradox) Если одни
те же тесты повторяются снова и снова, в конце концов с их помощью вы перестанете находить дефекты.

Слайд 40

Чтобы обойти это, тестировщикам необходимо…

Пересмотреть и обновить существующие тестовые сценарии.
Добавить новые и

Чтобы обойти это, тестировщикам необходимо… Пересмотреть и обновить существующие тестовые сценарии. Добавить
отличные от предыдущих тесты, чтобы проверить различные части программного обеспечения.
Изучать новые инструменты и методы и изобретать новые способы тестирования
Провести ротацию кадров таким образом, чтобы один и тот же тестировщик не работал долгое время с одним и тем же разработчиком (функционалом, проектом)

Слайд 41

Семь принципов тестирования

Принцип 6 – Тестирование зависит от контекста
Тестирование проводится по-разному

Семь принципов тестирования Принцип 6 – Тестирование зависит от контекста Тестирование проводится
в различных контекстах. Контекст включает:
тип продукта
его цели
связанные риски
доступные инструменты
ресурсы и время
опыт команды и т.д.

Слайд 42

Семь принципов тестирования

Принцип 7 – Заблуждение об отсутствии ошибок
Нахождение и исправление

Семь принципов тестирования Принцип 7 – Заблуждение об отсутствии ошибок Нахождение и
дефектов не поможет, если разработанная система не удовлетворяет нуждам и ожиданиям пользователей.

Слайд 43

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

Еще Немного терминологии

Основы тестирования ПО Еще Немного терминологии

Слайд 44

Тестирование программного обеспечения (software testing) – процесс анализа программного средства и сопутствующей

Тестирование программного обеспечения (software testing) – процесс анализа программного средства и сопутствующей
документации с целью выявления дефектов и повышения качества продукта.

выявления дефектов и повышения качества продукта.

Слайд 45

QA ≠ QC ≠ Testing

Немного терминологии

QA ≠ QC ≠ Testing Немного терминологии

Слайд 46

Немного терминологии

Верификация vs Валидация

Немного терминологии Верификация vs Валидация

Слайд 47

Немного терминологии

План тестирования (test plan): документ, описывающий цели, подходы, ресурсы и график

Немного терминологии План тестирования (test plan): документ, описывающий цели, подходы, ресурсы и
запланированных тестовых активностей и определяющий:
что тестировать;
что не нужно тестировать;
кто будет тестировать;
где это нужно тестировать и на каком оборудовании;
методы и подходы для проектирования тестов;
критерии для начала и окончания тестирования, а также любые риски, требующие планирования на случай чрезвычайных обстоятельств.

Слайд 48

Чек-лист (check-list) – набор идей тестов.

Почему мы не сразу приступаем к разработке

Чек-лист (check-list) – набор идей тестов. Почему мы не сразу приступаем к
тестов?

Приведите пример чек-листа из Вашей жизни

Слайд 49

Тест-кейс (test case) – набор входных данных, условий выполнения и ожидаемых результатов,

Тест-кейс (test case) – набор входных данных, условий выполнения и ожидаемых результатов,
разработанный с целью проверки того или иного свойства или поведения программного средства.

Что случится, если у нас не будет:
а) входных данных;
б) условий выполнения;
в) ожидаемых результатов;
г) цели.

Слайд 50

Тестовый сценарий, тест-сьют (test scenario, test-suite) – набор тест-кейсов, собранных в группу

Тестовый сценарий, тест-сьют (test scenario, test-suite) – набор тест-кейсов, собранных в группу
(последовательность) для достижения некоторой цели.

И снова: а в жизни бывают примеры тест-сьютов?

Слайд 51

Немного терминологии

Отчет о тестировании (test result report, TRR): Документ, подводящий итог проделанной

Немного терминологии Отчет о тестировании (test result report, TRR): Документ, подводящий итог
работы в ходе тестирования, а также содержащий оценку состояния качества программы.

Слайд 52

Все эти документы (и многие другие) называются …
Test Artefacts
(Project artefacts, проектная

Все эти документы (и многие другие) называются … Test Artefacts (Project artefacts, проектная документация)
документация)

Слайд 53

Почему тестирование необходимо? Немного терминологии

Билд («сборка», build) – очередная версия программы.
Финальный билд –

Почему тестирование необходимо? Немного терминологии Билд («сборка», build) – очередная версия программы.
часто называют Релизом (Release) – то, что уходит пользователям/заказчику.
Ежедневная сборка (daily build) – действия, в ходе которых система ежедневно (обычно ночью) компилируется и собирается целиком, так что целостная система доступна в любое время, включая все последние изменения.

Слайд 54

Немного терминологии

Тестовое окружение (test environment): аппаратуру (по сути компьютер/смартфон и установленное на

Немного терминологии Тестовое окружение (test environment): аппаратуру (по сути компьютер/смартфон и установленное
нем ПО) и инструментарий, необходимые для проведения теста (которыми пользуется тестировщик).

Слайд 55

Определение

Отладка (Debugging) – Процесс поиска, анализа и устранения причин отказов в программном

Определение Отладка (Debugging) – Процесс поиска, анализа и устранения причин отказов в программном обеспечении.
обеспечении.

Слайд 56

Важно не путать!

Отладка и тестирование – разные активности!
Тестирование может показать сбои, вызванные

Важно не путать! Отладка и тестирование – разные активности! Тестирование может показать
дефектами.
Отладка это процесс разработки ПО, который выявляет причину дефекта, исправляет код и проверяет, что ошибка была исправлена корректно.
За каждый вид деятельности разная ответственность:
Тестировщики тестируют.
Разработчики занимаются отладкой.

Слайд 57

Немного терминологии

ДЕФЕКТ (DEFECT) = НЕДОЧЕТ (FAULT) = ПОМЕХА (BUG)
= ПРОБЛЕМА (PROBLEM) =

Немного терминологии ДЕФЕКТ (DEFECT) = НЕДОЧЕТ (FAULT) = ПОМЕХА (BUG) = ПРОБЛЕМА
ISSUE
Изъян в компоненте или системе, который может привести компонент или систему к невозможности выполнить требуемую функцию, например неверный оператор или определение данных.
Дефект, обнаруженный во время выполнения, может привести к отказам компонента или системы.

Слайд 58

Немного терминологии

Ожидаемый результат (expected result)
– такое поведение программного средства, которое мы ожидаем

Немного терминологии Ожидаемый результат (expected result) – такое поведение программного средства, которое
в ответ на наши действия.

Слайд 59

Качество (Quality) – Степень, с которой компонент, система или процесс соответствует зафиксированным

Качество (Quality) – Степень, с которой компонент, система или процесс соответствует зафиксированным
требованиям и/или ожиданиям и нуждам пользователя или заказчика.

Немного терминологии

Слайд 60

Качество

?

Как мы определяем, что какая-то вещь, какая-то работа и т.д. могут быть

Качество ? Как мы определяем, что какая-то вещь, какая-то работа и т.д.
названы «качественными», например – обувь?

Слайд 61

Некоторые простые рассуждения о качестве

Если заказчик доволен продуктом – продукт качественный;

Некоторые простые рассуждения о качестве Если заказчик доволен продуктом – продукт качественный;
Если продукт соответствует требованиям – продукт качественный;
У качественного продукта всегда есть преимущества и нет серьёзных недостатков;
Хорошее качество – низкий риск потерь (денег, времени, репутации…).
Заказчик должен быть отсатисфачен!

Слайд 62

Немного терминологии

Метрика (metric): Шкала измерений и метод, используемый для измерений [ISO 14598]
Варианты

Немного терминологии Метрика (metric): Шкала измерений и метод, используемый для измерений [ISO
метрик:
Покрытие требований тестами – не менее 80%
Плотность покрытия – не менее 3
Закрыто 100% известных критических дефектов, 90% дефектов средней критичности, 50% остальных дефектов.
Общий показатель прохождения тестов – не менее некоторого значения: X = (Passed/Executed)*100%

Слайд 63

Почему тестирование необходимо? Немного терминологии

На основании ISO/IEC 25010:2011 (пред. ISO/IEC 9126-1:2001) в понятие

Почему тестирование необходимо? Немного терминологии На основании ISO/IEC 25010:2011 (пред. ISO/IEC 9126-1:2001)
Качество ПО включено ВОСЕМЬ характеристик:
Функциональная пригодность (Functional suitability)
Производительность (Performance efficiency)
Совместимость (Compatibility)
Удобство использования (Usability)
Надежность (Reliability)
Безопасность (Security)
Ремонтопригодность (Maintainability)
Переносимость (Portability)

Слайд 64

Рекомендуемые ресурсы:

https://www.w3schools.com – множество простой информации по целой серии технологий.
http://www.sql-ex.ru/learn_exercises.php – множество

Рекомендуемые ресурсы: https://www.w3schools.com – множество простой информации по целой серии технологий. http://www.sql-ex.ru/learn_exercises.php
практических заданий по SQL.
https://youtu.be/Z-a7MNStFQs – простой полуторачасовой видеокурс по основам компьютерных сетей.
https://htmlacademy.ru – серия бесплатных курсов по HTML / CSS / JS / PHP.
http://linux-user.ru – ресурс для начинающих пользователей Linux.
http://software-testing.ru – большой портал, на котором есть как профессиональные материалы, так и небольшие статьи, понятные и полезные начинающим.
в помощь!

Слайд 65

Есть вопросы? Давайте обсудим!

?

Есть вопросы? Давайте обсудим! ?

Слайд 66

Давайте поищим баги!

Давайте поищим баги!

Слайд 67

Давайте поищим баги!

Давайте поищим баги!

Слайд 68

Есть вопросы? Давайте обсудим!

?

Есть вопросы? Давайте обсудим! ?

Слайд 69

Когда тестировщики отмечают свой праздник?

Когда тестировщики отмечают свой праздник?