Please enable JavaScript.
Coggle requires JavaScript to display documents.
Переподготовка Тестирование ПО. Модуль 1. Базовые понятия - Coggle Diagram
Переподготовка Тестирование ПО.
Модуль 1. Базовые понятия
Лекция 1. Что такое тестирование?
История багов
1990 г. отсутствие сотовой связи от AT&T 9 часов
1991 г. американская система противоздушной обороны Patriot унесла жизни 28 солдат
1995 г. выявление проблем с вычислениями в системе расчета платежей из-за выбранного формата даты
1994 г. проблемы с запуском игры от компании Disney
1994 г. гибель 271 человека в автокатастрофе
1983 г. Чуть не произошла III мировая война из-за ложного сообщения о запуске ракет США в сторону СССР
2005 г. отзыв компанией Toyota 160 000 автомобилей
2012 г. крах Knight Capital Group из-за бага
2.08.2016 взрывающиеся телефоны от Samsung
2000 г. Баг тысячелетия
Случаи применения тестирования
Продукт делается с целью получения выгоды
Продукт призван решать важные задачи
Плохое качество выпущенного продукта нанесет удар по репутации компании и понизит ее авторитет среди пользователей
Качество программного обеспечения
(software quality)
Обеспечение качества (quality assurance – QA)
Контроль качества (quality control)
Тестирование ПО (testing)
Верификация (verification)
Валидация (validation)
!!! Добавить ссылку на рис. 1.3 !!!
!!! Добавить ссылку на рис. 1.4 !!!
Требования к ПО
(ISO/IEC TR 19759 SWEBOK 2015 г.
Надежность (reliability)
Практичность (usability)
Эффективность (efficiencies)
Сопровождаемость (maintainability)
Мобильность (portability)
Простота и удобство использования (user friendliness)
Возможность повторного использования (reusability)
Завершенность (completeness)
Расширяемость (expansibility)
Принципы тестирования
Тестирование демонстрирует наличие дефектов
(Testing shows the presence of defects, not their absence)
Исчерпывающее тестирование недостижимо
(Exhaustive testing is impossible)
Раннее тестирование
(Early testing saves time and money)
Скопление дефектов
(Defects cluster together)
Парадокс пестицида
(Beware of the pesticide paradox)
Тестирование зависит от контекста
(Testing is context dependent)
Заблуждение об отсутствии ошибок
(Absence-of-errors is a fallacy)
Тестировщик
(software tester)
Модели поведения
Обычный пользователь
Добросовестный пользователь
Злонамеренный пользователь
Навыки
Профессиональные
Знание инструментов и библиотек для автоматизации тестирования
Умение пользоваться специальным ПО для автоматизированного тестирования и регистрации ошибок
Навыки тест-дизайна и тест-анализа
Знание видов тестирования
Технические
Знание иностранных языков
Программирование
Базы данных и язык SQL
Понимание принципов работы сетей и операционных систем
Понимание принципов работы веб-приложений и мобильных приложений
Личностные
Терпение, усидчивость, внимательность к деталям, наблюдательность
Хорошее абстрактное и аналитическое мышление
Способность ставить нестандартные эксперименты, склонность к исследовательской деятельности
Хорошие коммуникативные навыки, способность ясно, быстро, четко выражать свои мысли
Повышенная ответственность и исполнительность
Лекция 2. Дефекты и их жизненные циклы
Результаты
Ожидаемый
Фактический
Дефект = (Ожидаемый результат != Фактический результат)
Классификация дефектов
Тип
Отказы (failure)
Ошибки (error)
Ошибки вычислений
Ошибки ввода-вывода и манипулирования данными
Функциональные ошибки
Ошибки интерфейса
Логические ошибки
Ошибки объема
Недочеты (fault)
Фича (Не дефект)
Приоритет (priority)
Средний (Medium)
Низкий (Low)
Высокий (High)
Серьезность (severity)
Незначительная (Minor)
Критическая (Critical)
Тривиальная (Trivial)
Блокирующая (Blocker)
Значительная (Major)
Локализация бага (localization bug)
Жизненный цикл дефекта
(bug workflow)
Отчет о дефекте
(bug report)
Структура
Фактический результат
(Actual Result)
Приложения
(Attachments)
Ожидаемый результат
(Expected Result)
Серьезность
(Severity)
Шаги по воспроизведению
(Steps to reproduce)
Приоритет
(Priority)
Платформа
(Platform)
Статус
(Status)
Описание
(Description или Summary)
Комментарии
(Comments)
Краткое название
(Title, Summary или Short Description)
Уникальный номер
(ID)
Правила написания
Логин и пароль
Скриншоты
Принцип «Что-Где-Когда»
Серьезность и приоритет
Простые языковые конструкции
Обезличенность
Вначале глагол
Ожидаемый и фактический результат
«Одна ошибка – один баг-репорт»
Баг-трекинговые системы
Redmine
Bugzilla
Jira
Mantis
Атрибуты жизненного цикла
Статус
(Status)
Резолюция
Дублирует
(Dublicate)
Перенесено
(Moved)
А у меня работает
(Workforme)
Отказ
(Rejected)
Решаться не будет
(Wont fix)
Ожидает повторного тестирования
(Pending retest)
Некорректно
(Invalid)
Повторное тестирование
(Retest)
Решено
(Fixed)
Это не дефект
(Not a bug)
Проверен
(Verified)
Открыт
(Open)
Назначен
(Assigned)
Закрыт
(Closed)
Новый
(New)
Открыт заново
(Reopened)
Лекция 3. Место тестирования в процессе разработки ПО
Жизненный цикл программного обеспечения
(software life cycle)
Проектирование
Реализация
Анализ требований к проекту
Тестирование продукта
Внедрение и поддержка
Модели жизненного цикла разработки ПО
Rational Unified Process (RUP)
Agile
SCRUM
Митинги
Плэннинг
Ретроспектива
Stand-up
Kanban
Принципы
Визуализация
Канбан-доска
Минимизация WIP
Измерение и оптимизация
Методология XP
V-образная модель
Каскадная / водопадная модель
(waterfall)
Этапы тестирования
Анализ и проектирование тестов
(Test Analysis & Test Design)
Этапы
Идентификация и расстановка приоритетов условий тестирования
Разработка и расстановка приоритетов тестовых сценариев высокого уровня
Оценка тестируемости базиса тестирования и объектов тестирования
Выявление необходимых данных для поддержки тестовых условий и тестовых сценариев
Проектирование и установка тестового окружения и выявление необходимой инфраструктуры и инструментов
Создание двунаправленной трассируемости между тестовым базисом и тестовым сценарием
Составление пошаговой инструкции по выполнению тестовых сценариев
Составление критериев успешности прохождения теста
Результат
Точные метрики
Точные цели
Вопросы
«Что тестировать?» - тест-анализ
«Как тестировать?» - тест-дизайн
Выполнение тестирования
(Test Execution)
Этапы
Выполнение тестов
Ввод входных значений тестирования
Анализ выходных значений
Выполнение тестовых сценариев и т. д.
Подготовка тестовой среды
Составление набора входных данных
Развертывание тестовой среды и т. д.
Планирование работ
(Test Planning)
Артефакты
Тестовый план
Матрица конфигураций
Запрос на выделение тестового оборудования
Этапы
Планирование объема тестирования
Планирование стратегии тестирования
Планирование критерия завершения тестирования
Планирование тестовой среды
Планирование момента начала тестирования
Анализ полученных результатов
(Test results evaluation)
Этапы
Действия по завершению тестирования
Свертывание тестовой среды
Очистка базы данных от тестовых значений и т. д.
Создание отчетов
Анализ успешности прохождения тестирования
Описание найденных дефектов и т. д.
Задачи
Закрытие отчетов об инцидентах или внесение изменений в записи по каждому из открытых инцидентов
Документирование приемки системы
Использование собранной информации для повышения зрелости процесса тестирования
Проверка достижения запланированных результатов
Методы проектирования тестов
На основе спецификации
(стратегия черного ящика)
Виды
Анализ граничных значений
Алгоритм
Выделить классы эквивалентности
Определить граничные значения этих классов
Определить, к какому классу будет относиться каждая граница
Попарное тестирование
Алгоритмы
С применением ортогональных массивов
Алгоритм всех пар
(All-Pairs Algorithm)
Последовательность действий
Определение таблицы переменных и значений
Удаление из таблицы неуникальных пар
Программы
Десктопные
2 more items...
Онлайн
2 more items...
Преимущества
Ускоряет контроль качества
Уменьшает количество тест-кейсов
Требует на 50% меньше сил по сравнению с другими методиками
Находит больше багов, чем при проверки каждого параметра в отдельности
Эквивалентное разбиение
Алгоритм использования
Определить классы эквивалентности
Выбрать одного представителя от каждого класса
Выполнить тесты
Свойства эквивалентных классов
они тестируют одну и ту же функцию, модуль, часть системы;
один из тестов находит ошибку, а другой скорее всего тоже ее поймает;
один из них не находит ошибку, а другой скорее всего тоже не поймает.
Особенности
Мало эквивал. классов -> пропущенные дефекты
Много эквивал. классов -> избыточные тесты
Таблицы решений
Состав
Условия
Варианты выполнения действий
Действия
Необходимость действий
Преимущества
Столбец -> тест-кейс
= 1 действия для каждого правила
Возможность объединения с тестированием граничных значений
Возможность применение для комбинированных действий
Сценарии использования
На основе структуры (стратегия белого ящика)
Виды
Тестирование альтернатив
(decision testing)
Тестирование операторов
(statement testing)
Качество
Покрытие (coverage)
Программы
Java
EclEmma – Java Code Coverage for Eclipse
Cobertura
Jcov
C++
Gcov
Tcov
C#
OpenCover
Встроенный в Visual Studio Test Coverage
Признаки
Учитывает, как спроектировано проектное решение
Может быть измерено тестовое покрытие
На основе опыта
Виды
Предугадывание ошибки
(Error guessing – EG)
Атака на недочет
(Fault attack)
Интуитивное
(Ad-hoc testing)
Исследовательское тестирование
(Exploratory testing)
Признаки
Опыт
Знание системы
Знание о вероятных дефектах
Тестовая документация
Структура комплекта
Чек-лист
(check-list)
Свойства
Последовательность и структурированность
Полнота и неизбыточность
Логичность
Примеры
Чек-лист без проверки
2.1. Ссылка
2.1.1. Проверка нажатия (кликабельности)
2.1.2. Проверка перехода
2.1.3. Цвет ссылки должен поменяться, если по ней был совершен переход
2.1.4. Название страницы, на которую происходит переход, должно соответствовать названию ссылки
2.2. Текстовое поле
2.2.1. Должно быть доступно для редактирования в соответствии с логикой
2.2.2. Печатный текст должен отображаться корректно и сохраняться при изменении фокуса мыши
2.2.3. Длина поля должна соответствовать длине предполагаемого содержимого
2.2.4. При необходимости должен контролироваться тип вводимых данных (текст, число, дата)
2.2.5. При необходимости должно контролироваться значение вводимых данных (минимум, максимум)
Чек-лист тестирования удобства использования
3.6. Все поля правильно выровнены
3.5. Подсказки существуют для всех полей.
3.4. Все сообщения об ошибках верные, без орфографических и грамматических ошибок, и соответствуют заголовку окна
3.3. Все тексты правильно выровнены
3.2. Все шрифты соответствуют требованиям
3.1. Содержание веб-страницы верное, без грамматических и орфографических ошибок
Чек-лист для тестирования мобильного приложения по характеристикам устройства
4.1. Можно ли установить приложение?
4.2. Ведет ли оно себя правильно при входящем звонке?
4.3. Ведет ли оно себя правильно при входящем SMS?
4.4. Ведет ли оно себя правильно приподключении зарядного устройства?
4.5. Ведет ли оно себя правильно при отключении зарядного устройства?
4.6. Ведет ли оно себя правильно, еслиустройство переведено в спящий режим?
Чек-лист по функциональности ПО
1.1. Регистрация в личный профиль
1.1.1. Регистрация на сайте Pass
1.1.2. Редактирование профиля Fail Bug#1054
1.2. Поиск
1.2.1. По названию Pass
1.2.2. По ссылкам
Инструменты
Таблицы Excel/OpenOffice для самостоятельной работы
Таблицы GoogleDocs для распределения в команде
Sitechco для командной работы и версионности
Xmind
Тестовый сценарий (или ситуация), тест-кейс
(test case)
Преимущества
Ускорение тестирования
Обучающая база
Легкость освоения
Готовая инструкция
Документ
Недостатки
Сложности поддержки
Много копирования
Неактуальное состояние
Правила написания
Описание поведения системы
Технический стиль
Применение активного залога
Точные названия элементов
Без пояснения терминов
Без лишней информации
Независимость друг от друга
Детализация перед написанием
Сначала короткие
Состав
Шаги (степы) (Steps)
Ожидаемый результат (Expected Result)
Описание (Summary)
Статус (Pass/Fail)
Предусловие (Pre Conditions)
Постусловие (Post Conditions)
Уникальное краткое название (ID)
Типы тестов
Негативные
Позитивные
Тест-план (test plan)
Отчет о тестировании (test report)
Отчет о дефектах (bug report)
Программа и методика испытаний (ПИМ)
Преимущества хорошей документации
Облегчает тестирование
Помогает организовать взаимодействие между персоналом
Представляет собой удобную структуру для организации, планирования и управления тестовым проектом