Часть из этапов
осуществляется без участия компьютера.
1 . Постановка
задачи
-
сбор информации
о задаче; -
формулировка
условия задачи; -
определение
конечных целей решения задачи; -
определение формы
выдачи результатов; -
описание данных
(их типов, диапазонов величин, структуры
и т. п.).
2. Анализ и
исследование задачи, модели
-
анализ существующих
аналогов задачи; -
анализ технических
и программных средств; -
разработка
математической модели.
3. Разработка
алгоритма
4. Программирование
-
выбор языка
программирования; -
уточнение способов
организации данных; -
запись алгоритма
на выбранном языке программирования.
5. Отладка и
тестирование
-
синтаксическая
отладка; -
отладка семантики
и логической структуры; -
тестовые расчеты
и анализ результатов тестирования; -
совершенствование
программы.
6. Анализ
результатов решения задачи.
7. Сопровождение
программы:
-
доработка программы
для решения конкретных задач; -
составление
документации к решенной задаче, к
математической модели, к алгоритму, к
программе, к набору тестов, к использованию
программы.
Этапы процесса тестирования
1. Проверка в
нормальных условиях.
Тестовые данные
— исходные данные, характерные для
реальных условий работы программы.
2. Проверка в
экстремальных условиях.
Тестовые данные
— это граничные значения множества
исходных данных.
Примеры:
очень маленькие или очень большие числа
или отсутствие данных; малое или очень
большое число элементов массива.
3. Проверка в
исключительных ситуациях.
Проводится с
использованием исходных данных, на
обработку которых программа не рассчитана.
Известно, что все программы разрабатываются
в расчете на обработку какого-то
ограниченного набора исходных данных.
Поэтому важно иметь ответ на следующие
вопросы:
Что произойдет, если программе, не
рассчитанной на обработку отрицательных
и нулевых значений переменных, в
результате какой-либо ошибки придется
иметь дело как раз с такими данными?
Как будет вести себя программа, работающая
с массивами, если количество элементов
массива превысит число, указанное в
объявлении массива?
Что произойдет, если числа будут слишком
малыми или слишком большими? и т. д.
Наихудшая ситуация складывается тогда,
когда программа воспринимает неверные
данные как правильные и выдает неверный,
но правдоподобный результат.
Программа
должна отвергать любые данные, которые
она не в состоянии правильно обрабатывать.
Характерные ошибки программирования.
1. Синтаксические
ошибки обычно выявляются на этапе
трансляции.
Сообщение об их
отсутствии необходимо, но не
является достаточным условием правильности
программы.
Примеры
синтаксических ошибок:
-
пропуск знака
пунктуации; -
несогласованность
скобок; -
неверная запись
оператора; -
неверная запись
имени переменной; -
неверная запись
служебного слова; -
отсутствие условия
окончания цикла; -
отсутствие описания
массива и т. п.
Другие виды ошибок в процессе отладки,
как правило, выявить не удается, так как
компьютеру неизвестны замыслы
программиста.
Примеры
таких ошибок: п.п. (2) — (8)
2. Логические
ошибки:
-
неправильное
указание исполняемой ветви алгоритма; -
неполный учет
возможных условий; -
пропуск в программе
одного или более блоков алгоритма.
3. Ошибки в циклах:
3.1. Неправильное
указание:
-
начала цикла;
-
неправильное
указание условий окончания цикла; -
неправильное
указание количества итераций.
3.2 Бесконечный
цикл.
4. Ошибки
ввода-вывода; ошибки при работе с данными:
-
неправильное
задание типов данных; -
организация
считывания меньшего или большего объема
данных, чем требуется; -
неправильный
формат вывода.
5. Ошибки
использования переменных:
-
использование
переменных без указания их начальных
значений;
ошибочное указание
одной переменной вместо другой.
6. Ошибки при
работе с массивами:
-
массивы предварительно
не обнулены; -
массивы неправильно
описаны; -
индексы следуют
в неправильном порядке.
7. Ошибки при
выполнении арифметических операций:
-
неверное указание
типа переменной (например: целочисленного
вместо вещественного); -
неверное определение
порядка действий.
8. Математические:
-
деление на нуль;
-
извлечение корня
четной степени из отрицательного
числа; -
вычисление
логарифма нуля или отрицательного
числа.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
Фундаментальная теория тестирования
Время прочтения
15 мин
Просмотры 624K
В тестировании нет четких определений, как в физике, математике, которые при перефразировании становятся абсолютно неверными. Поэтому важно понимать процессы и подходы. В данной статье разберем основные определения теории тестирования.
Перейдем к основным понятиям
Тестирование программного обеспечения (Software Testing) — проверка соответствия реальных и ожидаемых результатов поведения программы, проводимая на конечном наборе тестов, выбранном определённым образом.
Цель тестирования — проверка соответствия ПО предъявляемым требованиям, обеспечение уверенности в качестве ПО, поиск очевидных ошибок в программном обеспечении, которые должны быть выявлены до того, как их обнаружат пользователи программы.
Для чего проводится тестирование ПО?
- Для проверки соответствия требованиям.
- Для обнаружение проблем на более ранних этапах разработки и предотвращение повышения стоимости продукта.
- Обнаружение вариантов использования, которые не были предусмотрены при разработке. А также взгляд на продукт со стороны пользователя.
- Повышение лояльности к компании и продукту, т.к. любой обнаруженный дефект негативно влияет на доверие пользователей.
Принципы тестирования
- Принцип 1 — Тестирование демонстрирует наличие дефектов (Testing shows presence of defects).
Тестирование только снижает вероятность наличия дефектов, которые находятся в программном обеспечении, но не гарантирует их отсутствия. - Принцип 2 — Исчерпывающее тестирование невозможно (Exhaustive testing is impossible).
Полное тестирование с использованием всех входных комбинаций данных, результатов и предусловий физически невыполнимо (исключение — тривиальные случаи). - Принцип 3 — Раннее тестирование (Early testing).
Следует начинать тестирование на ранних стадиях жизненного цикла разработки ПО, чтобы найти дефекты как можно раньше. - Принцип 4 — Скопление дефектов (Defects clustering).
Большая часть дефектов находится в ограниченном количестве модулей. - Принцип 5 — Парадокс пестицида (Pesticide paradox).
Если повторять те же тестовые сценарии снова и снова, в какой-то момент этот набор тестов перестанет выявлять новые дефекты. - Принцип 6 — Тестирование зависит от контекста (Testing is context depending). Тестирование проводится по-разному в зависимости от контекста. Например, программное обеспечение, в котором критически важна безопасность, тестируется иначе, чем новостной портал.
- Принцип 7 — Заблуждение об отсутствии ошибок (Absence-of-errors fallacy). Отсутствие найденных дефектов при тестировании не всегда означает готовность продукта к релизу. Система должна быть удобна пользователю в использовании и удовлетворять его ожиданиям и потребностям.
Обеспечение качества (QA — Quality Assurance) и контроль качества (QC — Quality Control) — эти термины похожи на взаимозаменяемые, но разница между обеспечением качества и контролем качества все-таки есть, хоть на практике процессы и имеют некоторую схожесть.
QC (Quality Control) — Контроль качества продукта — анализ результатов тестирования и качества новых версий выпускаемого продукта.
К задачам контроля качества относятся:
- проверка готовности ПО к релизу;
- проверка соответствия требований и качества данного проекта.
QA (Quality Assurance) — Обеспечение качества продукта — изучение возможностей по изменению и улучшению процесса разработки, улучшению коммуникаций в команде, где тестирование является только одним из аспектов обеспечения качества.
К задачам обеспечения качества относятся:
- проверка технических характеристик и требований к ПО;
- оценка рисков;
- планирование задач для улучшения качества продукции;
- подготовка документации, тестового окружения и данных;
- тестирование;
- анализ результатов тестирования, а также составление отчетов и других документов.
Верификация и валидация — два понятия тесно связаны с процессами тестирования и обеспечения качества. К сожалению, их часто путают, хотя отличия между ними достаточно существенны.
Верификация (verification) — это процесс оценки системы, чтобы понять, удовлетворяют ли результаты текущего этапа разработки условиям, которые были сформулированы в его начале.
Валидация (validation) — это определение соответствия разрабатываемого ПО ожиданиям и потребностям пользователя, его требованиям к системе.
Пример: когда разрабатывали аэробус А310, то надо было сделать так, чтобы закрылки вставали в положение «торможение», когда шасси коснулись земли. Запрограммировали так, что когда шасси начинают крутиться, то закрылки ставим в положение «торможение». Но вот во время испытаний в Варшаве самолет выкатился за пределы полосы, так как была мокрая поверхность. Он проскользил, только потом был крутящий момент и они, закрылки, открылись. С точки зрения «верификации» — программа сработала, с точки зрения «валидации» — нет. Поэтому код изменили так, чтобы в момент изменения давления в шинах открывались закрылки.
Документацию, которая используется на проектах по разработке ПО, можно условно разделить на две группы:
- Проектная документация — включает в себя всё, что относится к проекту в целом.
- Продуктовая документация — часть проектной документации, выделяемая отдельно, которая относится непосредственно к разрабатываемому приложению или системе.
Этапы тестирования:
- Анализ продукта
- Работа с требованиями
- Разработка стратегии тестирования и планирование процедур контроля качества
- Создание тестовой документации
- Тестирование прототипа
- Основное тестирование
- Стабилизация
- Эксплуатация
Стадии разработки ПО — этапы, которые проходят команды разработчиков ПО, прежде чем программа станет доступной для широкого круга пользователей.
Программный продукт проходит следующие стадии:
- анализ требований к проекту;
- проектирование;
- реализация;
- тестирование продукта;
- внедрение и поддержка.
Требования
Требования — это спецификация (описание) того, что должно быть реализовано.
Требования описывают то, что необходимо реализовать, без детализации технической стороны решения.
Атрибуты требований:
- Корректность — точное описание разрабатываемого функционала.
- Проверяемость — формулировка требований таким образом, чтобы можно было выставить однозначный вердикт, выполнено все в соответствии с требованиями или нет.
- Полнота — в требовании должна содержаться вся необходимая для реализации функциональности информация.
- Недвусмысленность — требование должно содержать однозначные формулировки.
- Непротиворечивость — требование не должно содержать внутренних противоречий и противоречий другим требованиям и документам.
- Приоритетность — у каждого требования должен быть приоритет(количественная оценка степени значимости требования). Этот атрибут позволит грамотно управлять ресурсами на проекте.
- Атомарность — требование нельзя разбить на отдельные части без потери деталей.
- Модифицируемость — в каждое требование можно внести изменение.
- Прослеживаемость — каждое требование должно иметь уникальный идентификатор, по которому на него можно сослаться.
Дефект (bug) — отклонение фактического результата от ожидаемого.
Отчёт о дефекте (bug report) — документ, который содержит отчет о любом недостатке в компоненте или системе, который потенциально может привести компонент или систему к невозможности выполнить требуемую функцию.
Атрибуты отчета о дефекте:
- Уникальный идентификатор (ID) — присваивается автоматически системой при создании баг-репорта.
- Тема (краткое описание, Summary) — кратко сформулированный смысл дефекта, отвечающий на вопросы: Что? Где? Когда(при каких условиях)?
- Подробное описание (Description) — более широкое описание дефекта (указывается опционально).
- Шаги для воспроизведения (Steps To Reproduce) — описание четкой последовательности действий, которая привела к выявлению дефекта. В шагах воспроизведения должен быть описан каждый шаг, вплоть до конкретных вводимых значений, если они играют роль в воспроизведении дефекта.
- Фактический результат (Actual result) — описывается поведение системы на момент обнаружения дефекта в ней. чаще всего, содержит краткое описание некорректного поведения(может совпадать с темой отчета о дефекте).
- Ожидаемый результат (Expected result) — описание того, как именно должна работать система в соответствии с документацией.
- Вложения (Attachments) — скриншоты, видео или лог-файлы.
- Серьёзность дефекта (важность, Severity) — характеризует влияние дефекта на работоспособность приложения.
- Приоритет дефекта (срочность, Priority) — указывает на очерёдность выполнения задачи или устранения дефекта.
- Статус (Status) — определяет текущее состояние дефекта. Статусы дефектов могут быть разными в разных баг-трекинговых системах.
- Окружение (Environment) – окружение, на котором воспроизвелся баг.
Жизненный цикл бага
Severity vs Priority
Серьёзность (severity) показывает степень ущерба, который наносится проекту существованием дефекта. Severity выставляется тестировщиком.
Градация Серьезности дефекта (Severity):
- Блокирующий (S1 – Blocker)
тестирование значительной части функциональности вообще недоступно. Блокирующая ошибка, приводящая приложение в нерабочее состояние, в результате которого дальнейшая работа с тестируемой системой или ее ключевыми функциями становится невозможна. - Критический (S2 – Critical)
критическая ошибка, неправильно работающая ключевая бизнес-логика, дыра в системе безопасности, проблема, приведшая к временному падению сервера или приводящая в нерабочее состояние некоторую часть системы, то есть не работает важная часть одной какой-либо функции либо не работает значительная часть, но имеется workaround (обходной путь/другие входные точки), позволяющий продолжить тестирование. - Значительный (S3 – Major)
не работает важная часть одной какой-либо функции/бизнес-логики, но при выполнении специфических условий, либо есть workaround, позволяющий продолжить ее тестирование либо не работает не очень значительная часть какой-либо функции. Также относится к дефектам с высокими visibility – обычно не сильно влияющие на функциональность дефекты дизайна, которые, однако, сразу бросаются в глаза. - Незначительный (S4 – Minor)
часто ошибки GUI, которые не влияют на функциональность, но портят юзабилити или внешний вид. Также незначительные функциональные дефекты, либо которые воспроизводятся на определенном устройстве. - Тривиальный (S5 – Trivial)
почти всегда дефекты на GUI — опечатки в тексте, несоответствие шрифта и оттенка и т.п., либо плохо воспроизводимая ошибка, не касающаяся бизнес-логики, проблема сторонних библиотек или сервисов, проблема, не оказывающая никакого влияния на общее качество продукта.
Срочность (priority) показывает, как быстро дефект должен быть устранён. Priority выставляется менеджером, тимлидом или заказчиком
Градация Приоритета дефекта (Priority):
- P1 Высокий (High)
Критическая для проекта ошибка. Должна быть исправлена как можно быстрее. - P2 Средний (Medium)
Не критичная для проекта ошибка, однако требует обязательного решения. - P3 Низкий (Low)
Наличие данной ошибки не является критичным и не требует срочного решения. Может быть исправлена, когда у команды появится время на ее устранение.
Существует шесть базовых типов задач:
- Эпик (epic) — большая задача, на решение которой команде нужно несколько спринтов.
- Требование (requirement ) — задача, содержащая в себе описание реализации той или иной фичи.
- История (story) — часть большой задачи (эпика), которую команда может решить за 1 спринт.
- Задача (task) — техническая задача, которую делает один из членов команды.
- Под-задача (sub-task) — часть истории / задачи, которая описывает минимальный объем работы члена команды.
- Баг (bug) — задача, которая описывает ошибку в системе.
Тестовые среды
- Среда разработки (Development Env) – за данную среду отвечают разработчики, в ней они пишут код, проводят отладку, исправляют ошибки
- Среда тестирования (Test Env) – среда, в которой работают тестировщики (проверяют функционал, проводят smoke и регрессионные тесты, воспроизводят.
- Интеграционная среда (Integration Env) – среда, в которой проводят тестирование взаимодействующих друг с другом модулей, систем, продуктов.
- Предпрод (Preprod Env) – среда, которая максимально приближена к продакшену. Здесь проводится заключительное тестирование функционала.
- Продакшн среда (Production Env) – среда, в которой работают пользователи.
Основные фазы тестирования
- Pre-Alpha: прототип, в котором всё ещё присутствует много ошибок и наверняка неполный функционал. Необходим для ознакомления с будущими возможностями программ.
- Alpha: является ранней версией программного продукта, тестирование которой проводится внутри фирмы-разработчика.
- Beta: практически готовый продукт, который разработан в первую очередь для тестирования конечными пользователями.
- Release Candidate (RC): возможные ошибки в каждой из фичей уже устранены и разработчики выпускают версию на которой проводится регрессионное тестирование.
- Release: финальная версия программы, которая готова к использованию.
Основные виды тестирования ПО
Вид тестирования — это совокупность активностей, направленных на тестирование заданных характеристик системы или её части, основанная на конкретных целях.
- Классификация по запуску кода на исполнение:
- Статическое тестирование — процесс тестирования, который проводится для верификации практически любого артефакта разработки: программного кода компонент, требований, системных спецификаций, функциональных спецификаций, документов проектирования и архитектуры программных систем и их компонентов.
- Динамическое тестирование — тестирование проводится на работающей системе, не может быть осуществлено без запуска программного кода приложения.
- Классификация по доступу к коду и архитектуре:
- Тестирование белого ящика — метод тестирования ПО, который предполагает полный доступ к коду проекта.
- Тестирование серого ящика — метод тестирования ПО, который предполагает частичный доступ к коду проекта (комбинация White Box и Black Box методов).
- Тестирование чёрного ящика — метод тестирования ПО, который не предполагает доступа (полного или частичного) к системе. Основывается на работе исключительно с внешним интерфейсом тестируемой системы.
- Классификация по уровню детализации приложения:
- Модульное тестирование — проводится для тестирования какого-либо одного логически выделенного и изолированного элемента (модуля) системы в коде. Проводится самими разработчиками, так как предполагает полный доступ к коду.
- Интеграционное тестирование — тестирование, направленное на проверку корректности взаимодействия нескольких модулей, объединенных в единое целое.
- Системное тестирование — процесс тестирования системы, на котором проводится не только функциональное тестирование, но и оценка характеристик качества системы — ее устойчивости, надежности, безопасности и производительности.
- Приёмочное тестирование — проверяет соответствие системы потребностям, требованиям и бизнес-процессам пользователя.
- Классификация по степени автоматизации:
- Ручное тестирование.
- Автоматизированное тестирование.
- Классификация по принципам работы с приложением
- Позитивное тестирование — тестирование, при котором используются только корректные данные.
- Негативное тестирование — тестирование приложения, при котором используются некорректные данные и выполняются некорректные операции.
- Классификация по уровню функционального тестирования:
- Дымовое тестирование (smoke test) — тестирование, выполняемое на новой сборке, с целью подтверждения того, что программное обеспечение стартует и выполняет основные для бизнеса функции.
- Тестирование критического пути (critical path) — направлено для проверки функциональности, используемой обычными пользователями во время их повседневной деятельности.
- Расширенное тестирование (extended) — направлено на исследование всей заявленной в требованиях функциональности.
- Классификация в зависимости от исполнителей:
- Альфа-тестирование — является ранней версией программного продукта. Может выполняться внутри организации-разработчика с возможным частичным привлечением конечных пользователей.
- Бета-тестирование — программное обеспечение, выпускаемое для ограниченного количества пользователей. Главная цель — получить отзывы клиентов о продукте и внести соответствующие изменения.
- Классификация в зависимости от целей тестирования:
- Функциональное тестирование (functional testing) — направлено на проверку корректности работы функциональности приложения.
- Нефункциональное тестирование (non-functional testing) — тестирование атрибутов компонента или системы, не относящихся к функциональности.
- Тестирование производительности (performance testing) — определение стабильности и потребления ресурсов в условиях различных сценариев использования и нагрузок.
- Нагрузочное тестирование (load testing) — определение или сбор показателей производительности и времени отклика программно-технической системы или устройства в ответ на внешний запрос с целью установления соответствия требованиям, предъявляемым к данной системе (устройству).
- Тестирование масштабируемости (scalability testing) — тестирование, которое измеряет производительность сети или системы, когда количество пользовательских запросов увеличивается или уменьшается.
- Объёмное тестирование (volume testing) — это тип тестирования программного обеспечения, которое проводится для тестирования программного приложения с определенным объемом данных.
- Стрессовое тестирование (stress testing) — тип тестирования направленный для проверки, как система обращается с нарастающей нагрузкой (количеством одновременных пользователей).
- Инсталляционное тестирование (installation testing) — тестирование, направленное на проверку успешной установки и настройки, обновления или удаления приложения.
- Тестирование интерфейса (GUI/UI testing) — проверка требований к пользовательскому интерфейсу.
- Тестирование удобства использования (usability testing) — это метод тестирования, направленный на установление степени удобства использования, понятности и привлекательности для пользователей разрабатываемого продукта в контексте заданных условий.
- Тестирование локализации (localization testing) — проверка адаптации программного обеспечения для определенной аудитории в соответствии с ее культурными особенностями.
- Тестирование безопасности (security testing) — это стратегия тестирования, используемая для проверки безопасности системы, а также для анализа рисков, связанных с обеспечением целостного подхода к защите приложения, атак хакеров, вирусов, несанкционированного доступа к конфиденциальным данным.
- Тестирование надёжности (reliability testing) — один из видов нефункционального тестирования ПО, целью которого является проверка работоспособности приложения при длительном тестировании с ожидаемым уровнем нагрузки.
- Регрессионное тестирование (regression testing) — тестирование уже проверенной ранее функциональности после внесения изменений в код приложения, для уверенности в том, что эти изменения не внесли ошибки в областях, которые не подверглись изменениям.
- Повторное/подтверждающее тестирование (re-testing/confirmation testing) — тестирование, во время которого исполняются тестовые сценарии, выявившие ошибки во время последнего запуска, для подтверждения успешности исправления этих ошибок.
Тест-дизайн — это этап тестирования ПО, на котором проектируются и создаются тестовые случаи (тест-кейсы).
Техники тест-дизайна
Автор книги «A Practitioner’s Guide to Software Test Design», Lee Copeland, выделяет следующие техники тест-дизайна:
- Тестирование на основе классов эквивалентности (equivalence partitioning) — это техника, основанная на методе чёрного ящика, при которой мы разделяем функционал (часто диапазон возможных вводимых значений) на группы эквивалентных по своему влиянию на систему значений.
- Техника анализа граничных значений (boundary value testing) — это техника проверки поведения продукта на крайних (граничных) значениях входных данных.
- Попарное тестирование (pairwise testing) — это техника формирования наборов тестовых данных из полного набора входных данных в системе, которая позволяет существенно сократить количество тест-кейсов.
- Тестирование на основе состояний и переходов (State-Transition Testing) — применяется для фиксирования требований и описания дизайна приложения.
- Таблицы принятия решений (Decision Table Testing) — техника тестирования, основанная на методе чёрного ящика, которая применяется для систем со сложной логикой.
- Доменный анализ (Domain Analysis Testing) — это техника основана на разбиении диапазона возможных значений переменной на поддиапазоны, с последующим выбором одного или нескольких значений из каждого домена для тестирования.
- Сценарий использования (Use Case Testing) — Use Case описывает сценарий взаимодействия двух и более участников (как правило — пользователя и системы).
Методы тестирования
Тестирование белого ящика — метод тестирования ПО, который предполагает, что внутренняя структура/устройство/реализация системы известны тестировщику.
Согласно ISTQB, тестирование белого ящика — это:
- тестирование, основанное на анализе внутренней структуры компонента или системы;
- тест-дизайн, основанный на технике белого ящика — процедура написания или выбора тест-кейсов на основе анализа внутреннего устройства системы или компонента.
- Почему «белый ящик»? Тестируемая программа для тестировщика — прозрачный ящик, содержимое которого он прекрасно видит.
Тестирование серого ящика — метод тестирования ПО, который предполагает комбинацию White Box и Black Box подходов. То есть, внутреннее устройство программы нам известно лишь частично.
Тестирование чёрного ящика — также известное как тестирование, основанное на спецификации или тестирование поведения — техника тестирования, основанная на работе исключительно с внешними интерфейсами тестируемой системы.
Согласно ISTQB, тестирование черного ящика — это:
- тестирование, как функциональное, так и нефункциональное, не предполагающее знания внутреннего устройства компонента или системы;
- тест-дизайн, основанный на технике черного ящика — процедура написания или выбора тест-кейсов на основе анализа функциональной или нефункциональной спецификации компонента или системы без знания ее внутреннего устройства.
Тестовая документация
Тест план (Test Plan) — это документ, который описывает весь объем работ по тестированию, начиная с описания объекта, стратегии, расписания, критериев начала и окончания тестирования, до необходимого в процессе работы оборудования, специальных знаний, а также оценки рисков.
Тест план должен отвечать на следующие вопросы:
- Что необходимо протестировать?
- Как будет проводиться тестирование?
- Когда будет проводиться тестирование?
- Критерии начала тестирования.
- Критерии окончания тестирования.
Основные пункты тест плана:
- Идентификатор тест плана (Test plan identifier);
- Введение (Introduction);
- Объект тестирования (Test items);
- Функции, которые будут протестированы (Features to be tested;)
- Функции, которые не будут протестированы (Features not to be tested);
- Тестовые подходы (Approach);
- Критерии прохождения тестирования (Item pass/fail criteria);
- Критерии приостановления и возобновления тестирования (Suspension criteria and resumption requirements);
- Результаты тестирования (Test deliverables);
- Задачи тестирования (Testing tasks);
- Ресурсы системы (Environmental needs);
- Обязанности (Responsibilities);
- Роли и ответственность (Staffing and training needs);
- Расписание (Schedule);
- Оценка рисков (Risks and contingencies);
- Согласования (Approvals).
Чек-лист (check list) — это документ, который описывает что должно быть протестировано. Чек-лист может быть абсолютно разного уровня детализации.
Чаще всего чек-лист содержит только действия, без ожидаемого результата. Чек-лист менее формализован.
Тестовый сценарий (test case) — это артефакт, описывающий совокупность шагов, конкретных условий и параметров, необходимых для проверки реализации тестируемой функции или её части.
Атрибуты тест кейса:
- Предусловия (PreConditions) — список действий, которые приводят систему к состоянию пригодному для проведения основной проверки. Либо список условий, выполнение которых говорит о том, что система находится в пригодном для проведения основного теста состояния.
- Шаги (Steps) — список действий, переводящих систему из одного состояния в другое, для получения результата, на основании которого можно сделать вывод о удовлетворении реализации, поставленным требованиям.
- Ожидаемый результат (Expected result) — что по факту должны получить.
Резюме
Старайтесь понять определения, а не зазубривать. Если хотите узнать больше про тестирование, то можете почитать Библию QA. А если возникнет вопрос, всегда можете задать его нам в телеграм-канале @qa_chillout.
2010/05/24 17:31:56
Решение задач на ЭВМ
Решение задач на ЭВМ — один из видов творческих заданий на занятиях, зачетах, экзаменах и олимпиадах по информатике и программированию.
Этапы решения задач на ЭВМ
Основные этапы решения задач на ЭВМ:
- Постановка задачи
- Определение методов решения
- Составление алгоритмов
- Написание программ для ЭВМ
- Отладка программ на ЭВМ
- Получение результатов на ЭВМ
Постановка задач
Постановка задач — точное и четкое определение требуемых результатов и исходных условий в задачах.
Результаты — правильные, если они отвечают требованиям поставленных задач.
Результаты — неправильные, если они противоречат поставленным требованиям.
Задачи могут быть частными (конкретными) и обобщенными (массовыми).
Определение методов решения
Метод решения — это общий способ решения некоторого класса задач.
Способ решения — правильный, если он дает правильные результаты.
Способ решения — неправильный, если он дает неправильные результаты.
Способ — последовательность действий, ведущая к получению результатов.
Метод решения — правильный, если он дает правильные результаты для любых исходных данных поставленной задачи.
Составление алгоритмов
Алгоритмизация — это составление алгоритмов для решения задач на ЭВМ.Исходным для решения задач на ЭВМ является точная постановка задач с четким выделение требуемого и исходного.
Алгоритм — результативный, если его выполнение приводит к получению результатов.
Алгоритм — правильный, если он дает правильные результаты для любых допустимых исходных данных.
Алгоритм содержит ошибки, если для он дает неправильные результаты либо не дает результатов вообще для некоторых допустимых исходных данных.
Написание и отладка программ на ЭВМ
Программирование — написание программ для ЭВМ может производится тремя способами:
- написание программы исходя из условий задачи. (традиционный способ)
- кодирование программ по детальным алгоритмам решения задач на ЭВМ
- совместная разработка алгоритмов и программ (структурное проектирование)
Программа содержит ошибки, если ее выполнение на ЭВМ приводит к получению сбоев, отказов или получению не правильных результатов.
Ошибки в алгоритмах программах — одна из самых серьезных проблем в информатике и профессиональном программировании.
Отладка программ — поиск и исправление ошибок в программах на ЭВМ. Поскольку число ошибок неизвестно, то неизвестна и продолжительность отладки программ на ЭВМ.
Отсутствие ошибок в программах проверяется их тестированием на ЭВМ. Тестирование может выявить ошибки, но не может гарантировать отсутствие ошибок в программах. (Дейкстра)
Тестирование программ на ЭВМ
Тестирование программ — это процесс проверки программ на ЭВМ с помощью тестов. Тесты — это наборы тестовых исходных данных с перечнем правильных результатам.
Получение неправильных результатов, сбоев или отказов говорит о наличии ошибок в программах. Тестирование может показать наличие ошибок в программах на ЭВМ
Набор тестов — структурно полный, если на этом наборе тестов выполняется каждая альтернатива, каждая последовательность и каждый цикл один или несколько раз.
Тестирование не может гарантировать отсутствие ошибок в программах.Гарантии отсутствия ошибок может дать только исчерпывающий анализ правильности алгоритмов и программ.
Анализ и доказательства правильности алгоритмов и программ можно и нужно проводить после структурно полного тестирования программ на ЭВМ.
Анализ правильности алгоритмов
Примеры анализа правильности алгоритмов и программ на языках Бейсик и Паскаль приведены в книгах Дейкстры и учебниках информатики Каймина.
Все примеры приведены с постановками задач, алгоритмами, спецификациями, текстами программ на Бейсике и доказательствами правильности программ.
-
- ВАК, проф.,док.комп.наук 12:07, 19 июля 2009 (UTC)
Литература
- Каймин В.А. Информатика. Учебник для студентов. М., ИНФРА-М, 1998-2009.
- Каймин В.А. Информатика. Учебник для школьников. М., Прогресс, 2009.
- Каймин В.А. Информатика. Пособие к экзаменам. М., РИОР, 2008.
- Каймин В.А. Основы доказательного программирования. М., МИЭМ, 1987.
- Каймин В.А. Методы разработки программ на языках высокого уровня. М., МИЭМ, 1985.
- Каймин В.А., Питеркин В.М. Основы информатики и ВТ. Учебник для студентов. М.,МИЭМ. 1985.
-
- ВАК, проф.,док.комп.наук 10:21, 19 июля 2009 (UTC)
Интернет-источники
- Технологии Доказательного Программирования
- иНФОРМАТИКА в Школах и Вузах
- Информатика: ЕГЭ и экзамены на ЭВМ
- Олимпиады по информатике и программированию
Вы уже знаете, что компьютер был создан для решения
задач и обработки данных. И наверняка задавались вполне логичным вопросом: «А
как именно решить ту или иную задачу с помощью компьютера?».
Решение любой задачи с помощью компьютера можно
разделить на пять основных этапов:
1.
Постановка
задачи.
2.
Формализация
задачи.
3.
Создание
алгоритма.
4.
Программирование.
5.
Тестирование
и отладка.
Постановка задачи.
На этапе постановки задачи нужно понять условие задачи, выделить исходные и
результирующие данные и понять отношения между ними. Проще говоря, нужно
ответить на вопросы:
·
«Что
нужно найти по условию задачи?»
·
«Что
при этом дано?»
·
«Чем
можно пользоваться при решении задачи?»
Формализация задачи.
Во время этого этапа нужно записать описательную информационную модель,
созданную на этапе постановки задачи, каким-либо формальным языком, например
математическими формулами, и адаптировать эти формулы для решения данной
задачи. То есть нам нужно записать при помощи формул соотношения между данными
задачи и понять, при помощи каких формул можно найти результирующие данные из
исходных. Иначе говоря, создать математическую модель, описывающую явление или
объект, которые фигурируют в условии.
Как ясно из названия следующего этапа «Создание
алгоритма», его результатом должен быть алгоритм или конкретная
последовательность действий. Алгоритм создаётся на основании математической
модели.
При создании алгоритма должны быть соблюдены два условия:
·
Созданный
алгоритм должен быть конкретной последовательностью действий, которая приводит
к получению результирующих данных из исходных.
·
Созданный
алгоритм должен быть понятен человеку, который будет писать по нему программу.
Чаще всего алгоритм записывается в форме блок-схемы,
потому что данная форма записи достаточно наглядна и универсальна.
Пример блок-схемы
На этапе программирования алгоритм записывается
с помощью какого-нибудь языка программирования. То есть результатом работы на
данном этапе должна быть программа. Мы будем писать программы на языке Pascal.
Пример
программы на языке Pascal
На этапе тестирования
и отладки проверяется, работает ли программа, если работает, то правильно ли.
Проверяется отсутствие ошибок в программе. Ошибки делятся на синтаксические,
которые связаны с нарушением правил записи программы на конкретном языке
программирования, и логические, которые могут быть связаны с
недостаточно точной математической моделью, недостаточно точным алгоритмом или
же неточной записью алгоритма на языке программирования. Синтаксические ошибки
находятся при помощи программных средств, а логические ошибки находятся с
помощью тестов.
Тест
– это набор конкретных значений исходных данных, при которых известен ожидаемый
результат работы программы.
Если результаты работы
программы соответствуют ожидаемым – значит задача решена, иначе – на одном из
этапов допущена логическая ошибка. Например недостаточно точно сформулирована
математическая модель. А так как все этапы связаны
между собой – это повлекло неточности при создании алгоритма и
программировании. Чтобы исправить ошибку возвращаются
к этапу формализации задачи и уточняют математическую модель, после чего вносят
правки в алгоритм и программу. Далее программа снова отлаживается и
тестируется. Так происходит до тех пор, пока программа не будет соответствовать
всем требованиям.
Обратим внимание на то, что этапы постановки и
формализации задачи могут требовать наличия некоторых знаний из предметной
области задачи. Например, если наша задача из области авиастроения – то без
знаний из этой области мы не сможем узнать отношений между исходными и
результирующими данными, а тем более записать их в виде формул.
Этапы создания алгоритма и программирования требуют
наличия знаний по программированию. Так как на третьем этапе определяется каким
образом будет решаться та или иная подзадача. А от этого зависит скорость
работы программы, и количество потребляемых ею ресурсов системы, например
оперативной памяти. На четвёртом этапе записать алгоритм тоже можно различными
способами.
На этапе тестирования и отладки требуются как знания
по предметной области, так и некоторое знание основ программирования. Так как
без знаний в предметной области мы не можем знать результирующих данных в
тестах, а без знаний в программировании мы не сможем отыскать ошибки и
составить наиболее полный набор тестов, учитывающий все частные случаи и
исключения.
Таким образом, решение задачи с помощью компьютера
можно изобразить в виде схемы. На этапе постановки задачи ставиться её условие,
а результатом работы на данном этапе будут исходные и результирующие данные,
которые, в свою очередь, поступают на этап «Формализации задачи». На данном
этапе составляется математическая модель, по ней составляют алгоритм, который
записывают в одной из форм. По алгоритму составляется программа, которая
отлаживается и тестируется. Если программа работает неправильно, процесс
решения возвращается к одному из предыдущих этапов, а если правильно – задача
решена.
Схема
решения задачи с помощью компьютера
Важно запомнить:
Решение
задач с помощью компьютера включает в себя:
1.
Постановку
задачи.
2.
Формализацию
задачи.
3.
Создание
алгоритма.
4.
Программирование.
5.
Тестирование
и отладку.
Все этапы решения задачи связаны между собой.
О чем речь? Тестирование программного обеспечения – это необходимый процесс в ходе разработки, во время которого выявляются все проблемы в работе софта. Какими бы классными не были программисты, ошибки будут всегда, поэтому необходима регулярная проверка.
Каким бывает? Тестирование бывает разных видов: автоматическое и ручное, функциональное и нефункциональное, с доступом к исходному коду и без него. В любом случае важно придерживаться определенных правил, чтобы продукт был проверен от и до.
В статье рассказывается:
- Необходимость тестирования программного обеспечения
- Формы тестирования программного обеспечения
- Виды тестирования ПО
- Тестирование «белого ящика» и «чёрного ящика»
- Место тестирования в процессе создания ПО
- Этапы тестирования программного обеспечения
- Документация для тестирования ПО
- Правила качественного тестирования ПО
- Навыки и качества специалиста по тестированию программного обеспечения
- Лучшие курсы по специальности тестировщика ПО
- 7 книг про тестирование программного обеспечения
-
Пройди тест и узнай, какая сфера тебе подходит:
айти, дизайн или маркетинг.Бесплатно от Geekbrains
Необходимость тестирования программного обеспечения
Перечислим классические программные ошибки:
- Пользователь вбивает в поле ответ на вопрос и жмет клавишу Далее программа завершает работу, а информация не сохраняется. То же самое происходит и при следующей попытке.
- Пользователь играет в шутер. Вдруг персонажи начинают странно двигаться, подергиваться и т.д. Сначала программа попросту не реагирует на нажатие клавиш, а потом и вовсе выдаёт «Game over».
- Пользователь заходит в личный кабинет интернет-магазина и нажимает «Оплатить». Однако его перебрасывает на главную страницу. Кроме того, в аккаунт приходится заново входить.
При этом не существует безошибочных программ, которые всегда выдают лишь нужные результаты. Разработчики, как правило, допускают некоторые ошибки в коде, что впоследствии усложняет пользователю процесс взаимодействия с приложением. В некоторых случаях дефекты несущественны и малозаметны, но встречаются и такие недочёты, из-за которых программа вообще не может работать.
Перед тем как человек начнет пользоваться новой версией компьютерной программы, сайта или мобильного приложения, продукт должен быть проверен инженерами-тестировщиками. Они отыскивают слабые места в коде, из-за которых программа начинает работать неправильно. Для этого тестировщики создают различные ситуации, при которых возможно возникновение ошибок.
Формы тестирования программного обеспечения
Выделяют два вида тестирования программного обеспечения: ручное и автоматическое. В первом случае человек либо самостоятельно проверяет функциональность программы, либо делает это с помощью специального ПО и API с использованием некоторого набора инструментов.
Скачать файл
Ручной метод является наиболее сложным, так как специалисту необходимо настраивать среду и проводить тесты. Плюс ко всему, нельзя забывать о человеческом факторе: тестировщик может ошибиться или пропустить ту или иную стадию тестового скрипта.
В случае автоматического тестирования все мероприятия выполняет машина, работающая по определенному скрипту. Эти тесты отличаются друг от друга по уровню сложности: от проверки одного метода в классе до обеспечения условий, в которых выполнение последовательности сложных операций в пользовательском интерфейсе приводит к одним и тем же результатам.
Данный способ намного стабильнее и точнее, чем ручной. Но стоит учитывать, что эффективность автоматического тестирования зависит от правильности тестовых скриптов.
Автоматическое тестирование представляет собой важнейший элемент беспрерывной интеграции и бесперебойной поставки. Кроме того, это хороший метод масштабирования процесса контроля качества по мере добавления новых функций в программу. При этом выполнять ручное глубокое тестирование все же полезно.
Виды тестирования ПО
Существует несколько видов тестирования программного обеспечения. Поговорим о каждом из них более подробно.
Функциональное и нефункциональное
Функциональное тестирование — это проверка функций программы. Специалист нажимает на всевозможные клавиши и пытается вести себя необычно, дабы обнаружить недочеты проекта.
Как правило, тестируются только готовые функции, которые уже должны правильно работать. Однако объектами проверки могут стать и «неожидаемые» функций и варианты поведения приложения.
Нефункциональное тестирование представляет собой проверку производительности, надежности и отзывчивости приложения, а также ее соответствия нормам безопасности.
Статическое и динамическое
Статическая проверка выполняется с выключенной программой. Специалисты открывают документацию приложения, анализируют указанные в ней функции, а затем изучают код для оценки качества реализации.
Динамическое тестирование выполняется после статического. В этом случае необходимо включить программу и на практике узнать, насколько работоспособными являются ее функции.
Обе эти стадии являются необходимыми.
Прочие разновидности тестирования
Можно выделить и некоторые другие типы проверки. Каждая, даже самая маленькая, задача может быть выделена как отдельная разновидность. Однако мы приведем список только самых распространённых вариантов:
- Нагрузочное. Речь идёт о тестировании программы в условиях высоких нагрузок, которые могут быть больше, чем планировали разработчики. Эти тесты обязательны для онлайн-сервисов, которые должны правильно работать даже при наличии большого числа посетителей на пиковой или регулярной основе (онлайн-магазины во время распродаж, новостные ресурсы при резонансных событиях и т.д.).
- Тестирование UX. В этом случае специалист сосредотачивается на пользовательском опыте. Тестировщику необходимо поставить себя на место клиента. На основе составленных им замёток в процессе взаимодействия с приложением будут вноситься соответствующие изменения.
- Конфигурационное. Это проверка совместимости программы с аппаратным обеспечением и прочими software-элементами (различными версиями OS и процессоров). Конфигурационное тестирование необходимо для межплатформенных программ и в процессе перехода поставщика платформы на принципиально новую аппаратную базу (яркий пример — появление ноутбуков с чипами М1 от Apple).
Тестирование «белого ящика» и «чёрного ящика»
При проверке программного и аппаратного обеспечения термины «тестирование белого ящика» и «тестирование чёрного ящика» указывают на то, есть ли у разработчика тестов доступ к исходному коду программы (если нет, то проверка выполняется посредством пользовательского интерфейса или прикладного программного интерфейса, предоставленного тестируемым модулем).
Тестирование белого/прозрачного ящика (от английского white-box testing) подразумевает, что у разработчика теста есть доступ к исходному коду приложения и он имеет возможность писать код, связанный с библиотеками тестируемого ПО. Такое положение дел часто встречается при юнит-тестировании (англ. unit testing). В этом случае проверке подвергаются лишь определенные элементы системы.
Благодаря такому тестированию выявляется функциональность и стабильность тех или иных частей программы. В процессе проверки белого ящика применяются метрики покрытия кода.
Тестирование черного ящика имеет смысл в том случае, если специалист может взаимодействовать с программным обеспечением через интерфейсы, доступные для заказчика или пользователя, либо через внешние интерфейсы, которые дают возможность другому компьютеру или другому процессу подключиться к системе для тестирования.
К примеру, тестирующий модуль виртуально нажимает на клавиши или на кнопки мыши в проверяемом приложении посредством механизма взаимодействия процессов. Эти операции должны приводить к такому же результату, что и реальные нажатия.
Топ-30 самых востребованных и высокооплачиваемых профессий 2023
Поможет разобраться в актуальной ситуации на рынке труда
Подборка 50+ ресурсов об IT-сфере
Только лучшие телеграм-каналы, каналы Youtube, подкасты, форумы и многое другое для того, чтобы узнавать новое про IT
ТОП 50+ сервисов и приложений от Geekbrains
Безопасные и надежные программы для работы в наши дни
Уже скачали 19578
Чаще всего такое тестирование выполняется с применением спецификаций или иных документов, в которых указаны требования к системе. Критерий покрытия формируются из покрытия структуры входных данных, покрытия требований и покрытия модели (при проверке на базе моделей).
Понятия «альфа-тестирование» и «бета-тестирование» связаны с этапом до выпуска продукта, объёмом тестирующего сообщества и ограничениями по способам проверки. Тестирование «белого ящика» и «чёрного ящика» относятся к методам, которыми пользуется специалист.
Бета-тестирование ограничивается техникой чёрного ящика (однако постоянная часть тестировщиков, как правило, продолжает проверку белого ящика одновременно с бета-тестированием). Исходя из этого, понятие бета-тестирования описывает этап реализации программного продукта (ближе к выпуску, чем «альфа») или определенную команду тестировщиков и процесс, выполняемый этой командой.
Таким образом, тестировщик может проводить мероприятия по тестированию белого ящика даже после того, как программа перейдет на этап «бета». Однако это возможно в том случае, если специалист не является частью «бета-тестирования» (группы/процесса).
Место тестирования в процессе создания ПО
Если вовремя приступить к тестированию, то можно уменьшить расходы и сроки, необходимые для исправления ошибок. При этом в жизненном цикле разработки ПО (SDLC) проверка может начинаться со стадии сбора требований и продолжаться до развертывания программного обеспечения.
Многое зависит и от принятой модели развития. К примеру, модель «Водопад» предполагает, что формальное тестирование выполняется на этапе тестирования. Если же используется инкрементальная модель, то проверка осуществляется в конце каждого приращения/итерации и вся программа тестируется на конечном этапе.
Тестирование программного обеспечения выполняется в различных формах на каждой стадии SDLC:
- На стадии сбора требований тестированием является проверка этих требований.
- На стадии проектирования тестированием является проверка проекта для повышения качества дизайна.
- После написания кода тестированием считается итоговая проверка.
Этапы тестирования программного обеспечения
Анализ тестирования
На этой стадии выполняется анализ функциональных и нефункциональных требований. К примеру, бизнес-требований, функциональной документации, документа технической спецификации и так далее.
Читайте также
При сборе требований необходимо учесть мнение клиентов. Это нужно для того, чтобы определить реальные и предполагаемые результаты тестирования, которые чаще всего являются нефункциональными. Например, удобство пользования, масштабируемость, тестируемость, производительность и безопасность.
Если выявляются требования, которые нельзя проверить в связи с теми или иными ограничениями системы и среды тестирования, то о них нужно уведомить бизнес-команду.
На данной стадии тестировщики рассматривают и анализируют требования, а также формируют соответствующие тесты. Кроме того, они определяют приоритеты для проверки — членов команды.
В список требований к среде тестирования входят требования к аппаратному и программному обеспечению. На их основе нужно будет выполнять проверку ПО. Одновременно с этим начинаются планирование и разработка программного обеспечения.
Планирование и подготовка теста
На этой стадии разрабатываются план тестирования, тестовый набор, данные теста. Кроме того, выполняется подготовка среды тестирования.
План тестирования — важнейший документ, который нужно составить в первую очередь. В нем указываются цели, объём, характеристики, проверяемые и непроверяемые функции, разновидности проверок, которые будут производиться, роли и обязанности группы тестирования, критерии входа и выхода, а также предположения.
Параллельно с этим специалисты подготавливают тестовые наборы и тестовые данные.
Поговорим о нескольких важных моментах более подробно. Тестовый пример представляет собой документ, в котором указываются этапы, которые следует реализовать для тестирования любой функциональности с предполагаемым и реальным результатом. Если реальный результат противоречит предполагаемому, то открывается ошибка. Для каждого отдельно взятого требования формируются положительные и отрицательные тестовые примеры.
Это делается с помощью матрицы прослеживаемости требований (RTM) — документа, который сравнивает требования с тестовыми примерами. Нужно это для того, чтобы удостовериться в полноценном выполнении проверки.
Каждый действительный и недействительный набор тестовых данных необходимо подготовить для всех тестовых случаев. Кроме того, нужно составить документ с тестовыми данными, которые создаются с помощью определенных алгоритмов и инструментов. В процесс подготовки тестового набора входят несколько стадий: его разработка, выбор, оценка, расстановка приоритетов и т.д.
Эрик Д. Свайн создал метод генерации тестовых случаев, в котором применяются соответствующие диаграммы последовательности. Данный способ позволяет выявить ограничения для конкретных артефактов. Техники генерации тестовых наборов имеют смысл при необходимости выявления синхронизации и зависимости вариантов использования и сообщений, взаимодействия объектов и недочетов функционирования.
Подготовка тестовой среды — крайне важная стадия. После написания фрагмента кода его необходимо проверить с помощью инструмента управления конфигурацией. Далее подготавливается тестовая сборка.
Выполнение теста
На данной стадии специалисты выполняют ПО с учетом контрольных примеров. При выявлении несоответствий между реальными и предполагаемыми результатами тестировщик открывает ошибки и передаёт их разработчикам.
Закрытие теста
На этой немаловажной стадии составляются отчёты о тестировании, которые свидетельствуют о том, что вся система, интеграция, приемочное тестирование пользователя выполнены. Кроме того, в документах указывается, что было сформировано решение, все требования проверены и нет критической ошибки, ожидающей исправления или перепроверки.
Все тестовые артефакты просматриваются менеджером. После этого специалисты приступают к выпуску ПО. Выполняется анализ первопричин для последующего проведения мозгового штурма касательно удачных и неудачных моментов, а также зон роста. На данный момент сформировано множество инструментов и техник анализа первопричин, которые послужили базой для многочисленных исследований.
Документация для тестирования ПО
Тест план (Test Plan) представляет собой документ, в котором указываются все необходимые для тестирования мероприятия. В нем описываются объект, стратегии, расписания, критерии начала и завершения проверки, указывается требуемое оборудование и специальные знания, а также выполняется оценка рисков.
В данном документе должны иметься ответы на нижеперечисленные вопросы:
- Что нужно протестировать?
- Каким образом должно осуществляться тестирование?
- Когда будет выполняться проверка?
- Каковы критерии начала тестирования?
- Каковы критерии завершения тестирования.
Точный инструмент «Колесо компетенций»
Для детального самоанализа по выбору IT-профессии
Список грубых ошибок в IT, из-за которых сразу увольняют
Об этом мало кто рассказывает, но это должен знать каждый
Мини-тест из 11 вопросов от нашего личного психолога
Вы сразу поймете, что в данный момент тормозит ваш успех
Регистрируйтесь на бесплатный интенсив, чтобы за 3 часа начать разбираться в IT лучше 90% новичков.
Только до 16 февраля
Осталось 17 мест
Важнейшие разделы:
- Идентификатор тест плана (Test plan identifier).
- Введение (Introduction).
- Объект тестирования (Test items).
- Функции, которые следует проверить(Features to be tested).
- Функции, которые не нужно проверять (Features not to be tested).
- Тестовые подходы (Approach).
- Критерии прохождения тестирования (Item pass/fail criteria).
- Критерии приостановления и возобновления тестирования (Suspension criteria and resumption requirements).
- Результаты тестирования (Test deliverables).
- Задачи тестирования (Testing tasks).
- Ресурсы системы (Environmental needs).
- Обязанности (Responsibilities).
- Роли и ответственность (Staffing and training needs).
- Расписание (Schedule).
- Оценка рисков (Risks and contingencies).
- Согласования (Approvals).
Нельзя не упомянуть чек-лист (check list). В данном документе указываются объекты, которые необходимо протестировать. При этом чек-листы могут различаться по степени детализации.
Как правило, документ включает в себя лишь операции, которые нужно выполнить, а не предполагаемые результаты.
Тестовый сценарий (test case) представляет собой артефакт, в котором описывается комплекс мероприятий, определенных условий и параметров, требуемых для проверки реализации тестируемой функции или её элемента.
Перечислим составные части тест кейса:
- Предусловия (PreConditions). Это перечень операций, которые необходимы для приведения системы к пригодному для выполнения основного теста состоянию. Иногда под PreConditions подразумевается набор условий, реализация которых указывает на то, что система пригодна для проведения основного теста.
- Шаги (Steps). Речь идет о перечне операций, с помощью которых одно состояние системы сменяется другим. Это нужно для того, чтобы получить результат, с помощью которого можно будет сделать вывод об удовлетворении реализации поставленным требованиям.
- Ожидаемый результат (Expected result). Это то, что необходимо получить в конечном итоге.
Правила качественного тестирования ПО
Перечислим правила, которым нужно следовать для эффективного выполнения проверки:
- Не стоит пренебрегать ручным тестированием. Автоматические проверки помогут отыскать лишь те ошибки, которые предусмотрены в скрипте тестирования. С помощью ручных методов можно найти непредсказуемые дефекты.
- Следует писать тестовые примеры на простом языке или псевдокоде вместе с вашим кодом. В противном случае новым специалистам и менеджерам придётся тратить много времени на синтаксический анализ сценария проверки.
- Необходимо применять только контролируемые изолированные испытательные среды во избежание влияния извне. Если вы будете пользоваться ПК или открытым облаком, то на тесты могут повлиять посторонние факторы. Это скажется на производительности и результате.
- Нужно выбирать конкретные метрики, которые подвергаются количественной оценке. Показатели должны описывать лишь один атрибут и строиться из чисел, дабы упростить процесс формирования отчетов. Это относится как к спецификациям, так и к тестовым случаям.
- Стоит провести тестирование до того, как вы приступите к проверке качества. Благодаря такому подходу вы распределите рабочую нагрузку тестирования по всему процессу и снизите потери времени на исправление ошибок в центральном компоненте.
- Не забывайте про пошаговые тесты. Разработайте подусловия в своих тестах. Это позволит выявить места, в которых приложение не проходит проверку.
- Лучше обеспечить как можно большее тестовое покрытие. Если вы проверите все варианты применения программы, то продукт будет готов к самым разным входам и средам.
Навыки и качества специалиста по тестированию программного обеспечения
Система тестирования программного обеспечения не будет правильно работать, если у специалиста отсутствуют определенные личностные качества. Рассмотрим необходимые для данной работы характеристики:
- Усидчивость и настойчивость. Специалист должен быть достаточно терпеливым, чтобы длительное время выполнять поиск ошибок. Профессионал своего дела знает, что не существует безошибочных приложений. Если в программе не было найдено никаких дефектов, то это указывает на низкое качество тестирования.
- Критическое мышление, способность работать с информацией.
- Умение подмечать даже самые, на первый взгляд, незначительные детали. Тестировщику необходимо проверять все возможные сценарии.
- Коммуникабельность и навыки командной работы. Специалисту нужно будет общаться с разработчиками, дизайнерами, бизнес-аналитиками, представителями заказчика.
- Самоконтроль. Разработчики далеко не всегда настроены на исправление дефектов, поэтому тестировщикам приходится по нескольку раз повторять, что была найдена ошибка. Таким образом, специалист должен сочетать в себе настойчивость и дипломатичность.
- Ответственность и педантичность. Благодаря этим качествам тестировщик будет пытаться довести свою работу до конца.
- Способность грамотно формулировать свои мысли. Это позволит разработать качественный план и тест-кейс. При обнаружении дефекта специалисту необходимо донести до разработчиков все нюансы его появления.
- Желание оттачивать свои навыки. Специалист должен быть нацелен на обучение новым техникам тестирования. Для этого ему нужно работать с соответствующей литературой, ездить на конференции, семинары, проходить курсы и т.д.
Профессионал должен знать:
- основы тестирования, его разновидности и техники;
- способы разработки тест-кейсов, тест-планов;
- языки запросов SQL, базы данных;
- языки программирования;
- системы контроля версий: Git, CVS ипр.
Плюс ко всему, специалист должен уметь работать с инструментами ручного и автоматического тестирования, к которым относятся:
- Системы для разработки тест-кейсов и обнаружения ошибок.
- Файловые менеджеры, текстовые и XML-редакторы.
- Генераторы тестовых данных итак далее.
Чтобы автоматизировать проверки, можно пользоваться системами тестирования веб-приложений, программами для функционального и нагрузочного тестирования.
При этом необходимо знание английского языка. Без этого будет трудно понимать и составлять техническую документацию.
Лучшие курсы по специальности тестировщика ПО
- Инженер по тестированию PRO
Данный курс по тестированию программного обеспечения рассчитан на три года. Он актуален для людей, которые планируют стать специалистами с твердыми знаниями. Вы освоите технологическую базу, сможете определиться с профилем, получите навыки ручного и автоматизированного тестирования, узнаете о нюансах каждого из направлений и сможете отыскать работу.
- Инженер по ручному тестированию
Прохождение программы позволит определиться со специализацией, освоить базовые навыки, сформировать портфолио из проектов и устроиться на работу. Если вы будете усидчивы, то сможете начать зарабатывать уже через полгода после начала обучения.
- Инженер по тестированию Мастер
Программа рассчитана на 2 года. Актуальна для людей, которые хотят получить твердые знания и быть уверенными в результате. Участники улучшат знание основ тестирования программного обеспечения, определятся со специализацией, научатся ручному и автоматизированному тестированию и устроятся на подходящую работу.
- Инженер по тестированию
Программа рассчитана на 1 год. Участники получат теоретическую базу, смогут определиться со специализацией, найдут работу или откроют свое дело в сфере ИТ. При этом трудоустройство возможно уже через полгода после начала обучения.
- Инженер по автоматизированному тестированию
В процессе прохождения программы, состоящей из одного года обучения и трех месяцев технологической специализации, участники получат необходимую теоретическую базу, смогут определиться с профилем, научатся применять техники ручного и автоматизированного тестирования.
- Специалист по тестированию
Данная программа отличается высочайшей интенсивностью. Подойдет для людей, желающих в кратчайшие сроки получить навыки. Освоив специальность ручного тестировщика, вы сможете трудоустроиться уже через полгода после начала обучения.
7 книг о тестировании программного обеспечения
- Р. Калбертсон, К. Браун, Г. Кобб «Быстрое тестирование»
Благодаря этой книге многие неопытные тестировщики смогли разобраться с нюансами профессии. Вы сможете понять, как лучше создавать тесты, прогнозировать ошибки, формировать итоговые отчеты.
- С. Круг «Не заставляйте меня думать»
В книге объясняется, как проверять мобильные приложения и веб-сайты по критерию удобства пользования. Текстовую информацию дополняют исчерпывающие иллюстрации. Данное практическое руководство изобилует яркими пояснениями.
- А.Купер «Психбольница в руках пациента»
Отличная литература, в которой объясняется, каким образом можно улучшить юзабилити программ посредством проектирования. Изучение данной книги поможет не только тестировщикам, но и программистам, аналитикам, руководителям многопрофильных команд.
- Дж. Арбон, Дж. Каролло, Дж. Уиттакер «Как тестируют в Google»
Авторы делают упор на процессах отладки программ в известной во всем мире организации. При этом изложенные в книге правила могут применяться для любых проектов.
- Э. Дастин, Д. Рэшка, Дж. Пол. «Автоматизированное тестирование программного обеспечения»
В пособии описываются различные детали процесса автоматического тестирования. Книга освещает тему увеличения скорости тестовых процедур на web-серверах. При этом авторы объясняют различные нюансы проектирования, разработки и выполнения тестов.
Читайте также
- Станислав Куликов «Тестирование программного обеспечения. Базовый курс»
Известный автор в мире IT сформировал пособие, в котором неопытные тестировщики смогут найти примеры всевозможных техник, подсказки в формате чек-листов, перечни тест-кейсов. Кроме того, вы сможете ознакомиться с важнейшими элементами работы в данной сфере – требованиями, планированием, отчетностью.
- С. Слукин «Введение в тестирование программного обеспечения»
Очень информативная книга, с помощью которой вы сможете улучшить навыки работы с объектно-ориентированным ПО. В этом курсе указаны тестовые требования, изложены практические примеры, планы и образцы отчетов.
Главной целью тестирования программного обеспечения является нахождение ошибок. Благодаря этому потребитель сможет получить качественный продукт, который будет быстро работать и отвечать всем современным требованиям. Следовательно, тестировщик должен уметь вставать на место рядового пользователя. Именно такой подход позволит добиться высокого результата и закрыть все потребности клиентов.