Основные понятия
Тестирование (Testing)
Каждый предмет имеет как физ. так и тех. свойства, и мы от него что-то ожидаем.
-
Процесс исследования ПО, имеющий 2 основные цели:
- Выявить ситуации, при которых поведение ПО является н еправильным
- Проверить, что ПО полностью соответствует требованиям заказчика.
-
Процесс иследования программы и её документации, чтобы ожидаемое поведение программы было правильным.
-
Собственно тестирование, работа тестировщика по выполнению, тестов, описанных в тестовой документации и локализайция деффектов. Работа тестировщиков (Tester). Поиск и описание багов, передача их на устранение.
Тестирование ПО - очень важный процесс, потому что ошибки ПО могуг дорого стоить и быть очень опасными (запуск косм. аппаратов, ПО в самолётах и т.д.). Необходимо для выпуска качественного продукта.
Принципы тестирования
- Тестирование демонстрирует наличие деффектов
- Исчерпывающее тестирование недостижимо
- Раннее тестирование (тестирование в процессе разработки). Нужно обнаруживать баги еще до релиза.
- Скопление деффектов (принцип Парето 20/80) - "20% усилий дают 80% результата, а остальные 80% усилий — лишь 20% результата»"*. Бóльшая часть багов находится в небольшом объёме ПО.
- Парадокс пестицида (Паразиты привыкают к пестицидам, нужно периодически менять состав пестицида), в тестирование тестировании тестовый сценарий нужно также постоянно обновлять/пересматривать/актуализировать.
- Тестирование зависит от контекста. Не всегда можно применять общий шаблон для тестирования разного ПО.
- Заблуждение об отсутствии ошибок (какие-то баги есть всегда).
Классификация тестирования
1. По виду функциональности работы приложения (должно указываться в ТЗ)
-
Функциональное (по работе приложения, должно отвечать на вопрос: "Что?")
- Бизнес-требования
- Требования пользователей
- Функциональные требования
-
Нефункциональное (по дополнительным параметрам, должно отвечать на вопрос: "Как?")
- Требования и документация (ТЗ)
- Не должно быть двухсмысленности (конкретика)
- Требования должны быть к ПО, а не к пользователю
- Производительность
- Нагрузочное (DDos), Stress-testing
- Утечка памяти
- Отказоустойчивость и восстанавливаемость
- Отказ и восстановление (Варианты отказа, как восстановить данные)
- Тестирование БД
- Совместимость
- Кроссплатфоренное (Работа на всех платформах)
- UI
- UI-элементы (чтобы все работало, ПО Sellenium)
- Юзабилити (как удобно пользоваться)
- GUI (графический интерфейс)
- CUI (консольный интерфейс)
- Безопасность (Безопасность данных, проникновение)
- Вредоносные скрипты, введенные в формы (проверка вводных данных), должна быть валидация
- HTTPS
- cookies and tokens (JWT, Cookie-Based Authentication, Token-Based Authentication)
- Шифрование данных
- DDos атаки, SQL-инъекции и пр.
- Локализация
- Язык
- Формат времени
- Валюта
- Ед. измерения и др.
- Интернационализация (особенности страны, цвета, обычаи, направление текста)
- Установочное (Инсталляционное)
- Только для мобильных и десктопных приложений (в вебе нет)
- Установка, удаление (полное/частичное), обновления, хранение данных
- Требования и документация (ТЗ)