Тестирование (метод тестов). Реферат. Тестирование как метод психолого-педагогического исследования

01.10.2019
  • Tutorial

Доброго времени суток!

Хочу собрать всю самую необходимую теорию по тестирвоанию, которую спрашивают на собеседованиях у trainee, junior и немножко middle. Собственно, я собрал уже не мало. Цель сего поста в том, чтобы сообща добавить упущенное и исправить/перефразировать/добавить/сделатьЧтоТоЕщё с тем, что уже есть, чтобы стало хорошо и можно было взять всё это и повторить перед очередным собеседованием про всяк случай. Вообщем, коллеги, прошу под кат, кому почерпнуть что-то новое, кому систематизировать старое, а кому внести свою лепту.

В итоге должна получиться исчерпывающая шпаргалка, которую нужно перечитать по дороге на собеседование.

Всё ниже перечисленное не выдумано мной лично, а взято с разных источников, где мне лично формулировка и определение понравилось больше. В конце список источников.

В теме: определение тестирования, качество, верификация / валидация, цели, этапы, тест план, пункты тест плана, тест дизайн, техники тест дизайна, traceability matrix, tets case, чек-лист, дефект, error/deffect/failure, баг репорт, severity vs priority, уровни тестирования, виды / типы, подходы к интеграционному тестированию, принципы тестирования, статическое и динамическое тестирование, исследовательское / ad-hoc тестирование, требования, жизненный цикл бага, стадии разработки ПО, decision table, qa/qc/test engineer, диаграмма связей.

Поехали!

Тестирование программного обеспечения - проверка соответствия между реальным и ожидаемым поведением программы, осуществляемая на конечном наборе тестов, выбранном определенным образом. В более широком смысле, тестирование - это одна из техник контроля качества, включающая в себя активности по планированию работ (Test Management), проектированию тестов (Test Design), выполнению тестирования (Test Execution) и анализу полученных результатов (Test Analysis).

Качество программного обеспечения (Software Quality) - это совокупность характеристик программного обеспечения, относящихся к его способности удовлетворять установленные и предполагаемые потребности.

Верификация (verification) - это процесс оценки системы или её компонентов с целью определения удовлетворяют ли результаты текущего этапа разработки условиям, сформированным в начале этого этапа. Т.е. выполняются ли наши цели, сроки, задачи по разработке проекта, определенные в начале текущей фазы.
Валидация (validation) - это определение соответствия разрабатываемого ПО ожиданиям и потребностям пользователя, требованиям к системе .
Также можно встретить иную интерпритацию:
Процесс оценки соответствия продукта явным требованиям (спецификациям) и есть верификация (verification), в то же время оценка соответствия продукта ожиданиям и требованиям пользователей - есть валидация (validation). Также часто можно встретить следующее определение этих понятий:
Validation - ’is this the right specification?’.
Verification - ’is the system correct to specification?’.

Цели тестирвоания
Повысить вероятность того, что приложение, предназначенное для тестирования, будет работать правильно при любых обстоятельствах.
Повысить вероятность того, что приложение, предназначенное для тестирования, будет соответствовать всем описанным требованиям.
Предоставление актуальной информации о состоянии продукта на данный момент.

Этапы тестирования:
1. Анализ
2. Разработка стратегии тестирования
и планирование процедур контроля качества
3. Работа с требованиями
4. Создание тестовой документации
5. Тестирование прототипа
6. Основное тестирование
7. Стабилизация
8. Эксплуатация

Тест план (Test Plan) - это документ, описывающий весь объем работ по тестированию, начиная с описания объекта, стратегии, расписания, критериев начала и окончания тестирования, до необходимого в процессе работы оборудования, специальных знаний, а также оценки рисков с вариантами их разрешения.
Отвечает на вопросы:
Что надо тестировать?
Что будете тестировать?
Как будете тестировать?
Когда будете тестировать?
Критерии начала тестирования.
Критерии окончания тестирования.

Основные пункты тест плана
В стандарте IEEE 829 перечислены пункты, из которых должен (пусть - может) состоять тест-план:
a) Test plan identifier;
b) Introduction;
c) Test items;
d) Features to be tested;
e) Features not to be tested;
f) Approach;
g) Item pass/fail criteria;
h) Suspension criteria and resumption requirements;
i) Test deliverables;
j) Testing tasks;
k) Environmental needs;
l) Responsibilities;
m) StafÞng and training needs;
n) Schedule;
o) Risks and contingencies;
p) Approvals.

Тест дизайн - это этап процесса тестирования ПО, на котором проектируются и создаются тестовые случаи (тест кейсы), в соответствии с определёнными ранее критериями качества и целями тестирования.
Роли, ответственные за тест дизайн:
Тест аналитик - определяет «ЧТО тестировать?»
Тест дизайнер - определяет «КАК тестировать?»

Техники тест дизайна

Эквивалентное Разделение (Equivalence Partitioning - EP) . Как пример, у вас есть диапазон допустимых значений от 1 до 10, вы должны выбрать одно верное значение внутри интервала, скажем, 5, и одно неверное значение вне интервала - 0.

Анализ Граничных Значений (Boundary Value Analysis - BVA) . Если взять пример выше, в качестве значений для позитивного тестирования выберем минимальную и максимальную границы (1 и 10), и значения больше и меньше границ (0 и 11). Анализ Граничный значений может быть применен к полям, записям, файлам, или к любого рода сущностям имеющим ограничения.

Причина / Следствие (Cause/Effect - CE) . Это, как правило, ввод комбинаций условий (причин), для получения ответа от системы (Следствие). Например, вы проверяете возможность добавлять клиента, используя определенную экранную форму. Для этого вам необходимо будет ввести несколько полей, таких как «Имя», «Адрес», «Номер Телефона» а затем, нажать кнопку «Добавить» - эта «Причина». После нажатия кнопки «Добавить», система добавляет клиента в базу данных и показывает его номер на экране - это «Следствие».

Исчерпывающее тестирование (Exhaustive Testing - ET) - это крайний случай. В пределах этой техники вы должны проверить все возможные комбинации входных значений, и в принципе, это должно найти все проблемы. На практике применение этого метода не представляется возможным, из-за огромного количества входных значений.

Traceability matrix - Матрица соответствия требований - это двумерная таблица, содержащая соответсвие функциональных требований (functional requirements) продукта и подготовленных тестовых сценариев (test cases). В заголовках колонок таблицы расположены требования, а в заголовках строк - тестовые сценарии. На пересечении - отметка, означающая, что требование текущей колонки покрыто тестовым сценарием текущей строки.
Матрица соответсвия требований используется QA-инженерами для валидации покрытия продукта тестами. МСТ является неотъемлемой частью тест-плана.

Тестовый случай (Test Case) - это артефакт, описывающий совокупность шагов, конкретных условий и параметров, необходимых для проверки реализации тестируемой функции или её части.
Пример:
Action Expected Result Test Result
(passed/failed/blocked)
Open page «login» Login page is opened Passed

Каждый тест кейс должен иметь 3 части:
PreConditions Список действий, которые приводят систему к состоянию пригодному для проведения основной проверки. Либо список условий, выполнение которых говорит о том, что система находится в пригодном для проведения основного теста состояния.
Test Case Description Список действий, переводящих систему из одного состояния в другое, для получения результата, на основании которого можно сделать вывод о удовлетворении реализации, поставленным требованиям
PostConditions Список действий, переводящих систему в первоначальное состояние (состояние до проведения теста - initial state)
Виды Тестовых Случаев:
Тест кейсы разделяются по ожидаемому результату на позитивные и негативные:
Позитивный тест кейс использует только корректные данные и проверяет, что приложение правильно выполнило вызываемую функцию.
Негативный тест кейс оперирует как корректными так и некорректными данными (минимум 1 некорректный параметр) и ставит целью проверку исключительных ситуаций (срабатывание валидаторов), а также проверяет, что вызываемая приложением функция не выполняется при срабатывании валидатора.

Чек-лист (check list) - это документ, описывающий что должно быть протестировано. При этом чек-лист может быть абсолютно разного уровня детализации. На сколько детальным будет чек-лист зависит от требований к отчетности, уровня знания продукта сотрудниками и сложности продукта.
Как правило, чек-лист содержит только действия (шаги), без ожидаемого результата. Чек-лист менее формализован чем тестовый сценарий. Его уместно использовать тогда, когда тестовые сценарии будут избыточны. Также чек-лист ассоциируются с гибкими подходами в тестировании.

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

Error - ошибка пользователя, то есть он пытается использовать программу иным способом.
Пример - вводит буквы в поля, где требуется вводить цифры (возраст, количество товара и т.п.).
В качественной программе предусмотрены такие ситуации и выдаются сообщение об ошибке (error message), с красным крестиком которые.
Bug (defect) - ошибка программиста (или дизайнера или ещё кого, кто принимает участие в разработке), то есть когда в программе, что-то идёт не так как планировалось и программа выходит из-под контроля. Например, когда никак не контроллируется ввод пользователя, в результате неверные данные вызывают краши или иные «радости» в работе программы. Либо внутри программа построена так, что изначально не соответствует тому, что от неё ожидается.
Failure - сбой (причём не обязательно аппаратный) в работе компонента, всей программы или системы. То есть, существуют такие дефекты, которые приводят к сбоям (A defect caused the failure) и существуют такие, которые не приводят. UI-дефекты например. Но аппаратный сбой, никак не связанный с software, тоже является failure.

Баг Репорт (Bug Report) - это документ, описывающий ситуацию или последовательность действий приведшую к некорректной работе объекта тестирования, с указанием причин и ожидаемого результата.
Шапка
Короткое описание (Summary) Короткое описание проблемы, явно указывающее на причину и тип ошибочной ситуации.
Проект (Project) Название тестируемого проекта
Компонент приложения (Component) Название части или функции тестируемого продукта
Номер версии (Version) Версия на которой была найдена ошибка
Серьезность (Severity) Наиболее распространена пятиуровневая система градации серьезности дефекта:
S1 Блокирующий (Blocker)
S2 Критический (Critical)
S3 Значительный (Major)
S4 Незначительный (Minor)
S5 Тривиальный (Trivial)
Приоритет (Priority) Приоритет дефекта:
P1 Высокий (High)
P2 Средний (Medium)
P3 Низкий (Low)
Статус (Status) Статус бага. Зависит от используемой процедуры и жизненного цикла бага (bug workflow and life cycle)

Автор (Author) Создатель баг репорта
Назначен на (Assigned To) Имя сотрудника, назначенного на решение проблемы
Окружение
ОС / Сервис Пак и т.д. / Браузера + версия /… Информация об окружении, на котором был найден баг: операционная система, сервис пак, для WEB тестирования - имя и версия браузера и т.д.

Описание
Шаги воспроизведения (Steps to Reproduce) Шаги, по которым можно легко воспроизвести ситуацию, приведшую к ошибке.
Фактический Результат (Result) Результат, полученный после прохождения шагов к воспроизведению
Ожидаемый результат (Expected Result) Ожидаемый правильный результат
Дополнения
Прикрепленный файл (Attachment) Файл с логами, скриншот или любой другой документ, который может помочь прояснить причину ошибки или указать на способ решения проблемы.

Severity vs Priority
Серьезность (Severity) - это атрибут, характеризующий влияние дефекта на работоспособность приложения.
Приоритет (Priority) - это атрибут, указывающий на очередность выполнения задачи или устранения дефекта. Можно сказать, что это инструмент менеджера по планированию работ. Чем выше приоритет, тем быстрее нужно исправить дефект.
Severity выставляется тестировщиком
Priority - менеджером, тимлидом или заказчиком

Градация Серьезности дефекта (Severity)

S1 Блокирующая (Blocker)
Блокирующая ошибка, приводящая приложение в нерабочее состояние, в результате которого дальнейшая работа с тестируемой системой или ее ключевыми функциями становится невозможна. Решение проблемы необходимо для дальнейшего функционирования системы.

S2 Критическая (Critical)
Критическая ошибка, неправильно работающая ключевая бизнес логика, дыра в системе безопасности, проблема, приведшая к временному падению сервера или приводящая в нерабочее состояние некоторую часть системы, без возможности решения проблемы, используя другие входные точки. Решение проблемы необходимо для дальнейшей работы с ключевыми функциями тестируемой системой.

S3 Значительная (Major)
Значительная ошибка, часть основной бизнес логики работает некорректно. Ошибка не критична или есть возможность для работы с тестируемой функцией, используя другие входные точки.

S4 Незначительная (Minor)
Незначительная ошибка, не нарушающая бизнес логику тестируемой части приложения, очевидная проблема пользовательского интерфейса.

S5 Тривиальная (Trivial)
Тривиальная ошибка, не касающаяся бизнес логики приложения, плохо воспроизводимая проблема, малозаметная посредствам пользовательского интерфейса, проблема сторонних библиотек или сервисов, проблема, не оказывающая никакого влияния на общее качество продукта.

Градация Приоритета дефекта (Priority)
P1 Высокий (High)
Ошибка должна быть исправлена как можно быстрее, т.к. ее наличие является критической для проекта.
P2 Средний (Medium)
Ошибка должна быть исправлена, ее наличие не является критичной, но требует обязательного решения.
P3 Низкий (Low)
Ошибка должна быть исправлена, ее наличие не является критичной, и не требует срочного решения.

Уровни Тестирования

1. Модульное тестирование (Unit Testing)
Компонентное (модульное) тестирование проверяет функциональность и ищет дефекты в частях приложения, которые доступны и могут быть протестированы по-отдельности (модули программ, объекты, классы, функции и т.д.).

2. Интеграционное тестирование (Integration Testing)
Проверяется взаимодействие между компонентами системы после проведения компонентного тестирования.

3. Системное тестирование (System Testing)
Основной задачей системного тестирования является проверка как функциональных, так и не функциональных требований в системе в целом. При этом выявляются дефекты, такие как неверное использование ресурсов системы, непредусмотренные комбинации данных пользовательского уровня, несовместимость с окружением, непредусмотренные сценарии использования, отсутствующая или неверная функциональность, неудобство использования и т.д.

4. Операционное тестирование (Release Testing).
Даже если система удовлетворяет всем требованиям, важно убедиться в том, что она удовлетворяет нуждам пользователя и выполняет свою роль в среде своей эксплуатации, как это было определено в бизнес моделе системы. Следует учесть, что и бизнес модель может содержать ошибки. Поэтому так важно провести операционное тестирование как финальный шаг валидации. Кроме этого, тестирование в среде эксплуатации позволяет выявить и нефункциональные проблемы, такие как: конфликт с другими системами, смежными в области бизнеса или в программных и электронных окружениях; недостаточная производительность системы в среде эксплуатации и др. Очевидно, что нахождение подобных вещей на стадии внедрения - критичная и дорогостоящая проблема. Поэтому так важно проведение не только верификации, но и валидации, с самых ранних этапов разработки ПО.

5. Приемочное тестирование (Acceptance Testing)
Формальный процесс тестирования, который проверяет соответствие системы требованиям и проводится с целью:
определения удовлетворяет ли система приемочным критериям;
вынесения решения заказчиком или другим уполномоченным лицом принимается приложение или нет.

Виды / типы тестирования

Функциональные виды тестирования
Функциональное тестирование (Functional testing)
Тестирование безопасности (Security and Access Control Testing)
Тестирование взаимодействия (Interoperability Testing)

Нефункциональные виды тестирования
Все виды тестирования производительности:
o нагрузочное тестирование (Performance and Load Testing)
o стрессовое тестирование (Stress Testing)
o тестирование стабильности или надежности (Stability / Reliability Testing)
o объемное тестирование (Volume Testing)
Тестирование установки (Installation testing)
Тестирование удобства пользования (Usability Testing)
Тестирование на отказ и восстановление (Failover and Recovery Testing)
Конфигурационное тестирование (Configuration Testing)

Связанные с изменениями виды тестирования
Дымовое тестирование (Smoke Testing)
Регрессионное тестирование (Regression Testing)
Повторное тестирование (Re-testing)
Тестирование сборки (Build Verification Test)
Санитарное тестирование или проверка согласованности/исправности (Sanity Testing)

Функциональное тестирование рассматривает заранее указанное поведение и основывается на анализе спецификаций функциональности компонента или системы в целом.

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

Тестирование взаимодействия (Interoperability Testing) - это функциональное тестирование, проверяющее способность приложения взаимодействовать с одним и более компонентами или системами и включающее в себя тестирование совместимости (compatibility testing) и интеграционное тестирование

Нагрузочное тестирование - это автоматизированное тестирование, имитирующее работу определенного количества бизнес пользователей на каком-либо общем (разделяемом ими) ресурсе.

Стрессовое тестирование (Stress Testing) позволяет проверить насколько приложение и система в целом работоспособны в условиях стресса и также оценить способность системы к регенерации, т.е. к возвращению к нормальному состоянию после прекращения воздействия стресса. Стрессом в данном контексте может быть повышение интенсивности выполнения операций до очень высоких значений или аварийное изменение конфигурации сервера. Также одной из задач при стрессовом тестировании может быть оценка деградации производительности, таким образом цели стрессового тестирования могут пересекаться с целями тестирования производительности.

Объемное тестирование (Volume Testing) . Задачей объемного тестирования является получение оценки производительности при увеличении объемов данных в базе данных приложения

Тестирование стабильности или надежности (Stability / Reliability Testing) . Задачей тестирования стабильности (надежности) является проверка работоспособности приложения при длительном (многочасовом) тестировании со средним уровнем нагрузки.

Тестирование установки направленно на проверку успешной инсталляции и настройки, а также обновления или удаления программного обеспечения.

Тестирование удобства пользования - это метод тестирования, направленный на установление степени удобства использования, обучаемости, понятности и привлекательности для пользователей разрабатываемого продукта в контексте заданных условий. Сюда также входит:
Тестирование пользовательского интерфейса (англ. UI Testing) - это вид тестирования исследования, выполняемого с целью определения, удобен ли некоторый искусственный объект (такой как веб-страница, пользовательский интерфейс или устройство) для его предполагаемого применения.
User eXperience (UX) - ощущение, испытываемое пользователем во время использования цифрового продукта, в то время как User interface - это инструмент, позволяющий осуществлять интеракцию «пользователь - веб-ресурс».

Тестирование на отказ и восстановление (Failover and Recovery Testing) проверяет тестируемый продукт с точки зрения способности противостоять и успешно восстанавливаться после возможных сбоев, возникших в связи с ошибками программного обеспечения, отказами оборудования или проблемами связи (например, отказ сети). Целью данного вида тестирования является проверка систем восстановления (или дублирующих основной функционал систем), которые, в случае возникновения сбоев, обеспечат сохранность и целостность данных тестируемого продукта.

Конфигурационное тестирование (Configuration Testing) - специальный вид тестирования, направленный на проверку работы программного обеспечения при различных конфигурациях системы (заявленных платформах, поддерживаемых драйверах, при различных конфигурациях компьютеров и т.д.)

Дымовое (Smoke) тестирование рассматривается как короткий цикл тестов, выполняемый для подтверждения того, что после сборки кода (нового или исправленного) устанавливаемое приложение, стартует и выполняет основные функции.

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

Повторное тестирование - тестирование, во время которого исполняются тестовые сценарии, выявившие ошибки во время последнего запуска, для подтверждения успешности исправления этих ошибок.
В чем разница между regression testing и re-testing?
Re-testing - проверяется исправление багов
Regression testing - проверяется то, что исправление багов не повлияло на другие модули ПО и не вызвало новых багов.

Тестирование сборки или Build Verification Test - тестирование направленное на определение соответствия, выпущенной версии, критериям качества для начала тестирования. По своим целям является аналогом Дымового Тестирования, направленного на приемку новой версии в дальнейшее тестирование или эксплуатацию. Вглубь оно может проникать дальше, в зависимости от требований к качеству выпущенной версии.

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

Предугадывание ошибки (Error Guessing - EG) . Это когда тест аналитик использует свои знания системы и способность к интерпретации спецификации на предмет того, чтобы «предугадать» при каких входных условиях система может выдать ошибку. Например, спецификация говорит: «пользователь должен ввести код». Тест аналитик, будет думать: «Что, если я не введу код?», «Что, если я введу неправильный код? », и так далее. Это и есть предугадывание ошибки.

Подходы к интеграционному тестированию:

Снизу вверх (Bottom Up Integration)
Все низкоуровневые модули, процедуры или функции собираются воедино и затем тестируются. После чего собирается следующий уровень модулей для проведения интеграционного тестирования. Данный подход считается полезным, если все или практически все модули, разрабатываемого уровня, готовы. Также данный подход помогает определить по результатам тестирования уровень готовности приложения.

Сверху вниз (Top Down Integration)
Вначале тестируются все высокоуровневые модули, и постепенно один за другим добавляются низкоуровневые. Все модули более низкого уровня симулируются заглушками с аналогичной функциональностью, затем по мере готовности они заменяются реальными активными компонентами. Таким образом мы проводим тестирование сверху вниз.

Большой взрыв («Big Bang» Integration)
Все или практически все разработанные модули собираются вместе в виде законченной системы или ее основной части, и затем проводится интеграционное тестирование. Такой подход очень хорош для сохранения времени. Однако если тест кейсы и их результаты записаны не верно, то сам процесс интеграции сильно осложнится, что станет преградой для команды тестирования при достижении основной цели интеграционного тестирования.

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

Принцип 1 - Тестирование демонстрирует наличие дефектов (Testing shows presence of defects)
Тестирование может показать, что дефекты присутствуют, но не может доказать, что их нет. Тестирование снижает вероятность наличия дефектов, находящихся в программном обеспечении, но, даже если дефекты не были обнаружены, это не доказывает его корректности.

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

Принцип 3 - Раннее тестирование (Early testing)
Чтобы найти дефекты как можно раньше, активности по тестированию должны быть начаты как можно раньше в жизненном цикле разработки программного обеспечения или системы, и должны быть сфокусированы на определенных целях.

Принцип 4 - Скопление дефектов (Defects clustering)
Усилия тестирования должны быть сосредоточены пропорционально ожидаемой, а позже реальной плотности дефектов по модулям. Как правило, большая часть дефектов, обнаруженных при тестировании или повлекших за собой основное количество сбоев системы, содержится в небольшом количестве модулей.

Принцип 5 - Парадокс пестицида (Pesticide paradox)
Если одни и те же тесты будут прогоняться много раз, в конечном счете этот набор тестовых сценариев больше не будет находить новых дефектов. Чтобы преодолеть этот «парадокс пестицида», тестовые сценарии должны регулярно рецензироваться и корректироваться, новые тесты должны быть разносторонними, чтобы охватить все компоненты программного обеспечения, или системы, и найти как можно больше дефектов.

Принцип 6 - Тестирование зависит от контекста (Testing is concept depending)
Тестирование выполняется по-разному в зависимости от контекста. Например, программное обеспечение, в котором критически важна безопасность, тестируется иначе, чем сайт электронной коммерции.

Принцип 7 - Заблуждение об отсутствии ошибок (Absence-of-errors fallacy)
Обнаружение и исправление дефектов не помогут, если созданная система не подходит пользователю и не удовлетворяет его ожиданиям и потребностям.

Cтатическое и динамическое тестирование
Статическое тестирование отличается от динамического тем, что производится без запуска программного кода продукта. Тестирование осуществляется путем анализа программного кода (code review) или скомпилированного кода. Анализ может производиться как вручную, так и с помощью специальных инструментальных средств. Целью анализа является раннее выявление ошибок и потенциальных проблем в продукте. Также к статическому тестирвоанию относится тестирования спецификации и прочей документации.

Исследовательское / ad-hoc тестирование
Простейшее определение исследовательского тестирования - это разработка и выполнения тестов в одно и то же время. Что является противоположностью сценарного подхода (с его предопределенными процедурами тестирования, неважно ручными или автоматизированными). Исследовательские тесты, в отличие от сценарных тестов, не определены заранее и не выполняются в точном соответствии с планом.

Разница между ad hoc и exploratory testing в том, что теоретически, ad hoc может провести кто угодно, а для проведения exploratory необходимо мастерство и владение определенными техниками. Обратите внимание, что определенные техники это не только техники тестирования.

Требования - это спецификация (описание) того, что должно быть реализовано.
Требования описывают то, что необходимо реализовать, без детализации технической стороны решения. Что, а не как.

Требования к требованиям:
Корректность
Недвусмысленность
Полнота набора требований
Непротиворечивость набора требований
Проверяемость (тестопригодность)
Трассируемость
Понимаемость

Жизненный цикл бага

Стадии разработки ПО - это этапы, которые проходят команды разработчиков ПО, прежде чем программа станет доступной для широко круга пользователей. Разработка ПО начинается с первоначального этапа разработки (стадия «пре-альфа») и продолжается стадиями, на которых продукт дорабатывается и модернизируется. Финальным этапом этого процесса становится выпуск на рынок окончательной версии программного обеспечения («общедоступного релиза»).

Программный продукт проходит следующие стадии:
анализ требований к проекту;
проектирование;
реализация;
тестирование продукта;
внедрение и поддержка.

Каждой стадии разработки ПО присваивается определенный порядковый номер. Также каждый этап имеет свое собственное название, которое характеризует готовность продукта на этой стадии.

Жизненный цикл разработки ПО:
Пре-альфа
Альфа
Бета
Релиз-кандидат
Релиз
Пост-релиз

Таблица принятия решений (decision table) - великолепный инструмент для упорядочения сложных бизнес требований, которые должны быть реализованы в продукте. В таблицах решений представлен набор условий, одновременное выполнение которых должно привести к определенному действию.

QA/QC/Test Engineer


Таким образом, мы можем построить модель иерархии процессов обеспечения качества: Тестирование - часть QC. QC - часть QA.

Диаграмма связей - это инструмент управления качеством, основанный на определении логических взаимосвязей между различными данными. Применяется этот инструмент для сопоставления причин и следствий по исследуемой проблеме.

В переводе с английского языка «тест» - испытание, проба, проверка. В психологии, социологии, педагогике и других науках о человеке это слово употребляется в качестве термина, обозначающего систему заданий, подобранных с таким расчетом, чтобы можно было точно и обоснованно охарактеризовать конкретные особенности лиц, выполнивших эти задания. Они конструируются, выверяются, используются и интерпретируются по строгим и независящим от специфики той или иной науки правилам, призванным обеспечить качество выводов.

Рассмотрим метод исследования, предусматривающий анализ деятельности испытуемых с такими заданиями. В психодиагностике под тестированием понимают стандартизированное испытание, предназначенное для установления количественных (и качественных) индивидуально-психологических различий. Подчеркивая точность вычисления результатов и максимальную изолированность их от влияния людей, организующих данную процедуру, о тестировании часто говорят как об «измерении» особенностей психики.

Следует заметить, что ключевое понятие в приведенном выше определении - стандартизированность. Что это такое?

Во-первых, это обозначение единообразия требований ко всем условиям тестирования и инструкциям по его проведению и обработке результатов. В отношении разных лиц тест применяется унифицированно, по одному и тому же стандарту. Тем самым обеспечивается определенная гарантия уравнивания ситуативных факторов, способных поставить часть испытуемых в более выгодное положение по сравнению с остальными. Без стандартизации становится невозможным сопоставление индивидуальных результатов.

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

Во-вторых, стандартизированностью называют перевод первичных («сырых») тестовых баллов, отражающих количество выполненных заданий, в более обобщенную шкалу, характеризующую степень индивидуальной выраженности данного психического свойства или функции.

Допустим, при выполнении теста интеллекта испытуемый успешно решил определенное количество заданий. Зная только это, мы не можем еще ничего сказать о том, каков уровень его интеллекта. В самом деле, много им сделано или мало? Хорошо прошло для него испытание или плохо? Часто ли такой показатель встречается у других? А сколько заданий следовало бы выполнить, чтобы засвидетельствовать высокий уровень интеллекта?

На все эти вопросы невозможно дать ответ, не имея единой для всех системы отсчета, некоего эталона. В качестве последнего обычно выступают итоги тестирования многочисленной и репрезентативной выборки. Сравнивая одного испытуемого с другими, делавшими ранее тот же тест, мы осуществляем стандартизацию по статистической норме. В последнее время все чаще применяется и несколько иной вид стандартизации, когда результаты испытуемого сопоставляют не с другими результатами, а с описанием требований общества к развитию данной функции или свойства, то есть с социально-психологическим нормативом. Как бы то ни было, стандартизация обеспечивает возможность перехода от сведений по выполнению конкретного теста тем или иным лицом к психологическим характеристикам, лежит в основе единообразия интерпретации.

Обратимся к истории начального этапа развития метода тестов.

Известно, что уже в глубокой древности существовали более или менее типовые процедуры выявления индивидуальных различий между людьми. Так, в Китае более четырех тысяч лет назад высшие чиновники обязаны были выдержать в присутствии императора строгий экзамен по знанию ритуалов и церемоний, стрельбе из лука, верховой езде, умению писать, считать, музицировать. В древнем Вавилоне и в Египте претендент на должность писца должен был доказать обладание соответствующими навыками, разбираться в финансах, законах, сельском хозяйстве. В библии описаны своеобразные способы отбора воинов на особо трудные и опасные задания в зависимости от их действий на привале. В античной Греции и Риме разрабатывались весьма подробные классификации характеров и закономерности их определения по поведенческим признакам...

Несмотря на то, что все это и многое другое исторически предшествовало тестированию, возникновение научных тестов следует отнести лишь к концу девятнадцатого века. Сам термин был введен создателем первых антропометрических тестов Френсисом Гальтоном (1822 -1911), занимавшимся исследованием остроты зрения и слуха, мускульной силы и т. п. Однако наибольшую популярность этот термин приобрел после выхода в свет в 1890 году статьи «Умственные тесты и измерения», написанной американским психологом, родоначальником современного тестирования Джеймсом Кеттеллом (1860-1944). В этой статье Кеттелл писал о том, что применение серии статистически обрабатываемых заданий к большому количеству индивидов как ничто другое способствует преобразованию психологии в точную науку. Им же впервые была высказана мысль о необходимости стандартизации ситуации обследования.

Кеттелл разработал несколько десятков тестов, направленных на оценку элементарных сенсомоторных процессов (чувствительности, времени реакции, количества воспроизводимых звуков после разового прослушивания и др.).

Довольно быстро возникла потребность в ориентации тестов на высшие психические функции. Качественный рывок в этом направлении связан с именем Альфреда Бине (1857-1911), составившего по поручению министерства образования Франции в 1905 году серию тестов интеллекта.

Тестирование по шкале Бине начиналось с предъявления заданий, соответствующих хронологическому возрасту ребенка (то есть тех, которые успешно решались подавляющим большинством его сверстников). Если он успешно справлялся с работой, предлагался материал, рассчитанный на более старших детей. В случае, если ребенок решал лишь часть новых заданий, испытание прекращалось. При этом к количеству лет базового умственного возраста (тому, где были все задания решены) прибавлялось несколько месяцев умственного возраста (пропорционально количеству решенных заданий для более старших). Если же ребенок не справлялся со всеми заданиями своей возрастной группы, ему давался материал для более младших, пока не доходили до возраста, все задания которого успешно решались.

По А. Бине, характеристикой интеллекта являлась разность между умственным и хронологическим возрастами. Однако, как легко заметить, одна и та же разность для той или иной возрастной ступени приобретает неодинаковое значение. Такое обстоятельство весьма неудобно. Для его устранения немецкий психолог Вильям Штерн (1875-1938) предложил в 1912 году определять не разность, а соотношение (частное) умственного и хронологического возрастов, то есть делить показатели один на другой. Полученное число, умноженное на 100, он назвал величиной коэффициента интеллекта (IQ).

Заметим, что в большинстве современных тестов интеллекта принята иная процедура определения коэффициента, предложенная американским психологом и психиатром Дэвидом Векслером (1896-1981). Она основана на применении единицы стандартных отклонений, показывающей, как соотносятся результаты испытуемого с интеллектом группы его сверстников.

Тесты, созданные в начале века, были индивидуальными. Использовать их могли лишь высококвалифицированные психологи. В период первой мировой войны в Америке возникла необходимость массовых обследований призывников на предмет оптимального распределения их с учетом индивидуальных особенностей. По поручению военного ведомства Артур Отис (1888-1963) разработал первые групповые тесты - «альфа» и «бета». Одна из форм предназначалась для определения интеллекта у лиц, хорошо знающих английский язык, а другая была ориентирована на малограмотных и иностранцев. Эти тесты были значительно упрощены по процедуре применения и оценке результатов.

С 20-х гг. началось широкое распространение тестирования во всем мире. При этом, наряду с тестами общего интеллекта, стало активно развиваться и более конкретное, приближенное к потребностям повседневной диагностической практики тестирование специальных способностей и профессиональных достижений. В 30-е - 40-е гг. происходит становление психодиагностики личности, осуществляемой при помощи тестов, опросников, проективных методик.

Именно тогда на несколько десятилетий были прекращены все психодиагностические исследования в СССР. Это стало следствием постановления ЦК ВКП(б), осудившего (1934 г.) существовавшую в то время педологию - науку о целостном изучении ребенка с помощью комплекса методов психологии, анатомии, физиологии, медицины и педагогики.

В настоящее время в нашей стране, как и во всем мире, тестирование является одним из основных методов психологического исследования. Динамично развивается его инструментарий, непрерывно совершенствуются способы обработки и интерпретации информации.

Одним из наиболее важных вопросов разработки теста следует признать необходимость тщательного выявления качества измерения. На последних страницах журналов иногда печатают так называемые «популярные тесты». В отечественной школе все чаще применяются «тесты учителей». В строгом смысле слова те и другие нельзя отнести к тестам, так как показатели их надежности и валидности не установлены.

Надежность - это помехоустойчивость теста, независимость его результатов от действия случайных факторов.

Можно ли в дальнейшем применять тест, если на этапе проверки его качества испытуемые каждый раз получают оценки, значительно расходящиеся с предыдущими своими оценками? Ведь если исследуемый признак по своей природе стабилен, то результаты повторных тестирований одних и тех же лиц должны быть сходными, почти не отличающимися от полученных ранее. Надежность является характеристикой точности измерения. Она позволяет судить о том, в какой мере можно доверять данным тестирования.

Причинами недостаточной надежности тестов являются:

  • - разнообразие ситуационных условий испытания, меняющихся от одного случая к другому (различия в манере поведения тестирующего лица, наличие посторонних помех, непредусмотренное присутствие других людей, вариативность освещенности помещения и температуры воздуха и т. д.);
  • - несовершенство разработанного теста (нечеткость инструкций, принципиальная разнородность заданий, допущение элементов субъективизма при интерпретации выполнений и т. д.);
  • - изменения внутренних состояний испытуемых (усталость, раздражение, апатия, нервозность и др.), а также их отношений к тестированию.

Максимальное устранение названных причин способствует достижению приемлемой надежности теста.

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

На практике применяются чаще всего следующие типы данной характеристики теста:

1. Ретестовая надежность, определяемая при повторном обследовании тестом одних и тех же лиц.

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

Считается необходимым, чтобы коэффициент такой надежности был не ниже 0,80. В противном случае точность измерения недостаточна, процедура тестирования нуждается в дополнительной стандартизации.

2. Надежность частей теста, которая характеризует степень однородности (или, как говорят, гомогенности) всех его заданий. Это свидетельство, что разработанный тест отражает актуальное состояние только одного психического феномена, а все его задания взаимно согласованы, непротиворечивы и неразнонаправленны.

Чаще всего для применения этого способа задания делятся на четные и нечетные. Результаты выполнения людьми тех и других обрабатываются отдельно, а затем сопоставляются.

Тест считается надежным, если полученный при сопоставлении коэффициент превышает 0,75. В том случае, когда данный показатель не достигает указанной величины (а это не редкость при разработке теста), составителю необходимо выявить, какие именно задания следует переделать или изъять из употребления.

3. Надежность параллельных форм устанавливается, если составителем разработано несколько взаимозаменяемых наборов заданий, то есть тех, которые по своему содержанию являются весьма сходными, но не идентичными, напоминая варианты заданий школьной контрольной работы.

Принятая процедура определения такой надежности предусматривает, что выборка делится на две равные части, затем одной из них предлагается первая форма теста, а другой - вторая. Через некоторое время производится повторное тестирования, но в обратном порядке. Коэффициент надежности устанавливается методом корреляционного анализа результатов обоих тестирований. Его величина не должна быть менее 0,75. В противном случае становится необходимой проверка степени стандартизированности испытания и изменение содержания тех заданий, которые оказались несоответствующими своим аналогам из параллельной формы.

Итак, надежность теста характеризует степень точности измерения, не сообщая о том, что же именно измеряется. Она является предпосылкой наличия другого важного качества - валидности.

Валидность (от англ. «действительный», «пригодный», «имеющий силу») - комплексная характеристика теста, указывающая на обоснованность и эффективность его применения.

В классической тестологии выделяется множество типов валидности. Проанализируем наиболее распространенные из них.

Такая валидность имеет особое значение в критериально-ориентированных тестах (КОРТ) и тестах достижений, о которых речь пойдет ниже.

2. Конструктная валидность отражает степень соотнесения результатов теста с базовыми для него теоретическими понятиями (конструктами). Определяется, когда предмет измерения существует в неявном, комплексном виде, требует специального анализа.

Например, если тест разрабатывается для установления степени понимания речи, то необходимо, как минимум, представлять, какие компоненты образуют этот конструкт. Выберите из предложенного здесь перечня только те пункты, которые относятся к «пониманию речи»:

  • - ребенок может ответить на вопросы;
  • - он очень внимателен при слушании;
  • - он может пересказать услышанное своими словами;
  • - он может дословно запомнить текст с первого раза;
  • - он может составить план текста;
  • - он задает экспериментатору много вопросов по услышанному...

Очевидно, что только часть из них имеет отношение к рассматриваемому конструкту. Осуществив анализ проблемы, мы можем в дальнейшем составить задания, отражающие разные аспекты понимания речи.

После этого формулируется ряд гипотез о том, каким образом данные разрабатываемого теста будут коррелировать с широким кругом других тестов, направленных как на близкие конструкты, так и на отдаленные. Гипотезы проверяются методами корреляционного и факторного анализа. Подтверждение или опровержение совокупности теоретически ожидаемых связей становится характеристикой конструктной валидности теста.

  • 3. Критериальная валидность показывает, как результаты тестирования соотносятся с теми оценками измеряемого качества или свойства, которые получены другими (нетестовыми) способами, а именно: с мнениями специалистов, данными наблюдений и экспериментов, анализом продуктов деятельности испытуемых и т. д. Она может быть двух типов:
    • - валидностью текущей, когда результаты теста сопоставляются с данными из других источников, собираемых одновременно с тестированием;
    • - валидностью прогностической (предсказывающей), когда результаты теста сопоставляются с более поздним поведением испытуемого в данной сфере. К примеру, итоги тестирования учебных достижений в выпускном классе могут быть подтверждены, а могут быть и опровергнуты фактами о поступлении членов выборки в высшие учебные заведения.

Иногда применительно к некоторым из описанных типов валидности употребляют обозначение «эмпирическая валидность». Так называют те из них, при определении степени выраженности которых использовались статистические способы анализа данных, то есть коэффициенты вычислялись путем корреляций.

Каким образом соотносятся между собой характеристики эмпирической валидности и надежности?

Если высокая надежность теста свидетельствует, что он точно измеряет нечто, то высокая валидность указывает, что тест измеряет именно то, для чего он был разработан. Поэтому коэффициенты валидности не могут превышать значений коэффициентов надежности.

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

Бывает так, что тест обладает адекватной валидностью и надежностью, но тем не менее, почти не находит применения в исследовательской практике. Это может быть обусловлено излишней сложностью процедуры интерпретации, чрезмерно высокими требованиями к квалификации тестирующего, значительной трудоемкостью и длительностью применения и т. д. Необходимо считать существенной еще одну характеристику психологического измерения - его экономичность.

Под экономичностью понимают целесообразность применения теста, определяемую наличием допустимого соотношения затрат на тестирование (времени, труда, финансов) и пользы от него.

Сказанное, разумеется, не означает, что тестирование непременно должно быть легким, коротким и «дешевым», пусть даже в ущерб другим качествам измерения. Речь идет именно о допустимом соотношении надежности, валидности и экономичности.

Перейдем к изучению основных видов тестов. Для этого воспользуемся одной из наиболее распространенных классификаций. В зависимости от особенностей интерпретации выполнения тесты подразделяются на два вида:

  • - ориентированные на статистическую норму;
  • - критериально-ориентированные (КОРТ).

Первые из них предполагают использование традиционного приема математической статистики - «нормирования» результатов. Что это такое?

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

Следует заметить, что задания ориентированного на статистическую норму теста подбираются таким образом, чтобы итоги их выполнения выборкой приближались к кривой нормального распределения Гаусса.

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

формула среднего арифметического и стандартного отклонения

Где n - число членов выборки, ?N - сумма полученных ими результатов, ?d - сумма значений всех индивидуальных отклонений от среднего арифметического.

Нормальным считается такое распределение результатов, при котором в пределах одного стандартного отклонения (х ± у) находится 68 % испытуемых (то есть 34 % меньше среднего, 34 % больше среднего). Тогда в пределах двух стандартных отклонений останется 94,45 % испытуемых, а в пределах трех стандартных отклонений - почти все из них (99,73 %). Зачем это все необходимо?

Тем самым и достигается возможность классифицировать испытуемых по отношению ко всей популяции, то есть судить о том, что они входят в группу людей с показателями выше или ниже нормы.

Для удобства работы осуществляют преобразование «сырых» баллов в стандартные единицы (стандартизацию). Сохраняя относительные позиции испытуемых, изменяют среднее арифметическое и стандартное отклонение путем добавления некоей константы к каждой отдельной величине. В психологии широко используется несколько таких шкал стандартных норм. Например, шкала Т-величин имеет среднее арифметическое 50 и стандартное отклонение 10, а, скажем, шкала коэффициента интеллекта имеет среднее равным 100, со стандартным отклонением 15 и т.д.

Интерпретируются эти показатели следующим образом: все результаты, которые не выходят за границы (х ± у), находятся в пределах нормы. Те же лица, кто по тесту интеллекта получил значение IQ менее 85, находятся ниже нормы, а те, чьи результаты более 115 - выше нормы, далее, результаты от 115 до 130 интерпретируются как «несколько выше нормы», а от 130 до 145 - «значительно выше нормы». Соответственно классифицируются и результаты, располагающиеся ниже нормы.

Критериально-ориентированные тесты не предполагают подобного сопоставления данных испытуемых с итогами предварительного тестирования выборки. За точку отсчета в них принято не нормальное распределение, а определенный объем требований общества к психическому и личностному развитие его членов. Этот весьма обобщенный по своей природе феномен выражается в разрабатываемой составителями совокупности конкретных критериев.

В формулировке каждого такого критерия выделяется две части:

  • - содержательно-операциональная, четко характеризующая особенности действий испытуемых при выполнении тестовых заданий (типа «объясняет», «вычисляет», «подразделяет», «выбирает» и т. д.);
  • - соотносительно-предметная, детально описывающая тот или иной фрагмент области содержания знания на материале которого составлены тестовые задания. Обычно эта часть получает конкретизацию в ходе анализа составителями учебных программ, образовательных стандартов, действующих учебно-методических пособий и указаний.

Другими словами, одна часть критерия определяет, как надо сделать работу (каким образом), а другая - что надо сделать из предназначенного для усвоения (какой материал).

Разумеется, не каждая область знания поддается последовательной формализации для выражения в виде совокупности критериев. КОРТы, как правило, разрабатываются для диагностики сформированности умственных действий, а также для контроля за состоянием знаний, умений и навыков обучаемых. В этих случаях их применение позволяет, по словам А. Анастази, осуществлять интерпретацию с упором на то «что индивид может делать и что он делает, а не на то, как он выглядит на фоне других».

Заметно большее распространение в настоящее время имеют тесты, интерпретация выполнения которых ориентирована на статистическую норму.

В зависимости от предмета измерения выделяют тесты:

  • - интеллекта, обеспечивающие изучение уровня развития мышления и познавательных процессов в целом;
  • - способностей, оценивающие обучаемость, возможность и легкость овладения определенными знаниями, умениями и навыками. Сюда относят тесты общих и специальных способностей;
  • - достижений, определяющие обученность, то есть уровень овладения знаниями, умениями и навыками в какой-либо области (учебной, профессиональной, спортивной);
  • - личности, направленные на изучению различных аспектов личностного развития, таких как интересы, мотивы, эмоции, отношения и др.;
  • - межличностные, предусматривающие оценку человеческих отношений в группе, выявление специфики коммуникативных процессов.

По характеру тестовых заданий различают следующие виды тестов:

  • - вербальные, материал которых представлен в словесной форме;
  • - образные, где работа испытуемых производится с рисунками, схемами на основе возникающих при этом наглядных представлений;
  • - практические, выполняемые при манипулировании реальными объектами или их заместителями;
  • - комбинированные, объединяющие в себе как вербальный, так и невербальный материал заданий.

По форме предъявления заданий тесты подразделяются на бланковые («бумаги и карандаша»), аппаратурные, рисуночные и устные.

В зависимости от количества испытуемых тесты делятся на индивидуальные и групповые.

По времени выполнения тесты бывают двух видов:

  • - скорости, в которых основным показателем работы испытуемых является темп решения заданий. Оценивается либо общее количество правильно выполненных заданий за отведенное время, либо объем времени, затраченного на выполнение теста;
  • - результативности, где показатель скорости работы испытуемых не имеет соотнесения с результатами тестирования, не влияет на них. Временное ограничение (если оно есть) не является жестким, оно служит лишь целям обеспечения стандартизации процедуры измерения.

Следует заметить, что в психодиагностической практике наряду с тестами находят активное применение личностные опросники. Это методики, задания которых представлены в виде вопросов или утверждений. Задача испытуемого - дать письменные или устные ответы, сообщить информацию о себе, выразить отношение, сформулировать мнения.

По своей сути, опросники предполагают осуществление испытуемым субъективного самоотчета. От анкет, которые будут детально рассмотрены нами в дальнейшем, личностные опросники отличаются следующим:

  • 1) направленностью на изучение психологических особенностей;
  • 2) стандартизацией процедур применения и интерпретации;
  • 3) опорой на содержание определенной научной концепции, теории;
  • 4) наличием норм выполнения или соответствующих критериев развития, по отношению к которым осуществляется стандартизация индивидуальных результатов.
  • 5) проверкой степени валидности и надежности.

Все это, а также нередко более искусная постановка вопросов, маскирующая их диагностическую специфику, и тщательная разработка контроля за достоверностью и искренностью ответов («шкалы лжи»), позволяют считать их «тестами-опросниками», а не методиками самонаблюдения или традиционного опроса.

Примерами таких тестов-опросников являются Миннесотский многоаспектной личностный перечень (ММРI), разработанный С. Хатуэем и Дж. Маккинли в 1940 году и до сих пор широко использующийся в клинической психодиагностике, Патохарактерологический диагностический опросник (ПДО), предложенный А. Е. Личко (1970) для определения психопатического развития личности и акцентуаций характера, методика многофакторного исследования личности Р. Кеттелла (16-ти факторный опросник) и т. д.

В заключение, необходимо отметить следующее: использование метода тестов для исследований требует наличия как общепсихологических знаний, так и компетентности в области теории и практики измерения. Дело в том, что изучение сложных психических феноменов не сводится к чисто «технической» деятельности по предъявлению заданий и регистрации решений. Недостаток квалификации нередко оборачивается потерей индивидуального подхода, грубейшими дефектами интерпретации результатов, увеличением числа ошибок при организации процедуры испытания.

Тестирование – это исследовательский метод, который позволяет выявить уровень знаний, умений и навыков, способностей и других качеств личности, а также их соответствие определенным нормам путем анализа способов выполнения испытуемым ряда специальных заданий. Такие задания принято называть тестами. Тест – это стандартизированное задание или особым образом связанные между собой задания, которые позволяют исследователю диагностировать меру выраженности исследуемого свойства у испытуемого, его психологические характеристики, а также отношение к тем или иным объектам. В результате тестирования обычно получают некоторую количественную характеристику, показывающую меру выраженности исследуемой особенности у личности. Она должна быть соотносима с установленными для данной категории испытуемых нормами.

Значит, с помощью тестирования можно определить имеющийся уровень развития некоторого свойства в объекте исследования и сравнить его с эталоном или с развитием этого качества у испытуемого в более ранний период.

Существуют определенные правила проведения тестирования и интерпретации полученных результатов. Эти правила достаточно четко проработаны, и основные из них имеют следующий смысл:

1) информирование испытуемого о целях проведения тестирования;

2) ознакомление испытуемого с инструкцией по выполнению тестовых заданий и достижение уверенности исследователя в том, что инструкция понята правильно;

3) обеспечение ситуации спокойного и самостоятельного выполнения заданий испытуемыми; сохранение нейтрального отношения к тестируемым, уход от подсказок и помощи;

4) соблюдение исследователем методических указаний по обработке полученных данных и интерпретации результатов, которыми сопровождается каждый тест или соответствующее задание;

5) предупреждение распространения полученной в результате тестирования психодиагностической информации, обеспечение ее конфиденциальности;

6) ознакомление испытуемого с результатами тестирования, сообщение ему или ответственному лицу соответствующей информации с учетом принципа «Не навреди!»; в этом случае возникает необходимость решения серии этических и нравственных задач;

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

Выделяют также несколько типов тестов, каждому из которых сопутствуют соответствующие процедуры тестирования.

Тесты способностей позволяют выявить и измерить уровень развития тех или иных психических функций, познавательных процессов. Такие тесты чаще всего связаны с диагностикой познавательной сферы личности, особенностей мышления и обычно называются также интеллектуальными.

К ним относятся, например, тест Равена, тест Амтхауэра, соответствующие субтесты теста Векслера и т.д., а также тесты-задания на обобщение, классификацию и множество других тестов исследовательского характера.

Тесты достижений ориентированы на выявление уровня сформированности конкретных знаний, умений и навыков и как меры успешности выполнения, и как меры готовности к выполнению некоторой деятельности. В качестве примеров могут служить все случаи тестовых экзаменационных испытаний. На практике обычно применяются «батареи» тестов достижений.

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

Имеется группа тестов, называемых проективными, которые позволяют выявить установки, неосознаваемые потребности и побуждения, тревоги и состояние страха.

Применение тестов всегда связано с измерением проявления того или иного психологического свойства и оценкой уровня его развития или сформированности. Поэтому важное значение имеет качество теста. Качество теста характеризуется критериями его точности, т.е. надежностью и валидностью.

Надежность теста определяется тем, насколько получаемые показатели являются стабильными и насколько они не зависят от случайных факторов. Разумеется, речь идет о сравнении показаний одних и тех же испытуемых. Это значит, что надежному тесту должна быть свойственна согласованность показателей тестирования, полученных при повторном тестировании, и можно быть уверенным в том, что тест выявляет одно и то же

свойство. Применяются разные способы проверки надежности тестов.

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

и та же группа испытуемых обследуется с применением обеих частей теста. Надежность теста показывает, насколько точно измеряются психологические параметры и насколько высокой может быть мера доверия исследователя к полученным результатам.

Валидность теста отвечает на вопрос о том, что именно выявляет тест, насколько он пригоден для выявления того, для чего он предназначен. Например, тесты способностей нередко выявляют несколько иное: натренированность, наличие соответствующего опыта или, наоборот, его отсутствие. В таком случае тест не отвечает требованиям валидности.

В психодиагностике выделяют разные виды валидности. В простейшем случаеь валидность теста обычно определяется путем сопоставления полученных в результате тестирования показателей с экспертными оценками о наличии данного свойства у исследуемых (текущая валидность или валидность «по одновременности»), а также путем анализа данных, полученных в результате наблюдения за обследуемыми в различных ситуациях их жизни и деятельности, и их достижений в соответствующей области.

Вопрос о валидности теста может быть решен еще и сравнением его данных с показателями, полученными с помощью методики, связанной с данной методикой, валидность которой считается установленной.

Изучение продуктов деятельности – это исследовательский метод, который позволяет опосредованно изучать сформированность знаний и навыков, интересов и способностей человека на основе анализа продуктов его деятельности. Особенность этого метода заключается в том, что исследователь не вступает в контакт с самим человеком, а имеет дело с продуктами его предшествующей деятельности или размышлениями о том, какие

изменения произошли в самом испытуемом в процессе и в результате его включенности в некоторую систему взаимодействий и отношений.

Как и процесс разработки, процесс последующего тестирования программного обеспечения также следует определенной методологии. Под методологией в данном случае мы понимаем разнообразные комбинации принципов, идей, методов и концептов, к которым вы прибегаете во время работы над проектом.

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

Каскадная модель (Линейная последовательная модель жизненного цикла ПО)

Каскадная модель (Waterfall Model) является одной из наиболее старых моделей, которую можно применять не только для разработки или тестирования ПО, но также практически для любого другого проекта. Его базовым принципом является последовательный порядок выполнения задач. Это значит, что мы можем переходить к следующему шагу разработки или тестирования только после того, как предыдущий был успешно завершен. Эта модель подходит для небольших проектов и применима только в том случае, если все требования точно определены. Главными достоинствами этой методологии являются экономическая эффективность, простота использования и управления документацией.

Процесс тестирования ПО начинается после завершения процесса разработки. На этой стадии все необходимые тесты переносятся с юнитов на системное тестирование для того, чтобы контролировать работу компонентов как по отдельности, так и в комплексе.

Помимо упомянутых выше достоинств, данный подход к тестированию также имеет и свои недостатки. Всегда существует вероятность обнаружения критических ошибок в процессе тестирования. Это может привести к необходимости полностью изменить один из компонентов системы или даже всю логику проекта. Но подобная задача невозможна в случае каскадной модели, поскольку возвращение на предыдущий шаг в этой методологии запрещено.

Узнайте больше о каскадной модели из предыдущей статьи .

V-Model (Модель верификации и валидации)

Как и каскадная модель, методика V-Model основана на прямой последовательности шагов. Основным отличием между этими двумя методологиями является то, что тестирование в данном случае планируется параллельно с соответствующей стадией разработки. Согласно этой методологии тестирования ПО, процесс начинается как только определены требования и становится возможным начать статическое тестирование, т.е. верификацию и обзор, что позволяет избежать возможных дефектов ПО на поздних стадиях. Соответствующий план тестирования создается для каждого уровня разработки ПО, что определяет ожидаемые результаты, а также критерии входа и выхода для данного продукта.

Схема данной модели показывает принцип разделения задач на две части. Те, которые относятся к дизайну и разработке, размещены слева. Задачи, относящиеся к тестированию ПО, размещены справа:

Основные этапы этой методологии могут изменяться, однако обычно они включают следующие:

  • Этап определения требований . Приемочное тестирование относится к этому этапу. Его основная задача состоит в оценке готовности системы к финальному использованию
  • Этап, на котором происходит высокоуровневое проектирование, или High-Level Design (HDL) . Этот этап относится к системному тестированию и включает оценку соблюдения требований к интегрированным системам
  • Фаза детального дизайна (Detailed Design) параллельна фазе интеграционного тестирования, во время которой происходит проверка взаимодействий между различными компонентами системы
  • После этапа написания кода начинается другой важный шаг — юнит-тестирование. Очень важно убедиться в том, что поведение отдельных частей и компонентов ПО корректно и соответствует требованиям

Единственным недостатком рассмотренной методологии тестирования является отсутствие готовых решений, которые можно было бы применить, чтобы избавиться от дефектов ПО, обнаруженных на этапе тестирования.

Инкрементная модель

Данная методология может быть описана, как мультикаскадная модель тестирования ПО. Рабочий процесс разделяется на некоторое количество циклов, каждый из которых также делится на модули. Каждая итерация добавляет определенный функционал к ПО. Инкремент состоит из трех циклов:

  1. дизайн и разработка
  2. тестирование
  3. реализация.

В этой модели возможна одновременная разработка разных версий продукта. Например, первая версия может проходить этап тестирования в то время, как вторая версия находится на стадии разработки. Третья версия в то же самое время может проходить этап дизайна. Этот процесс может продолжаться до самого завершения проекта.

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

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

Спиральная модель

Спиральная модель это методология тестирования ПО, которая основана на инкрементном подходе и прототипировании. Она состоит из четырех этапов:

  1. Планирование
  2. Анализ рисков
  3. Разработка
  4. Оценка

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

Несмотря на то, что эта модель является довольно старой, она остается полезной как для тестирования, так и для разработки. Более того, главная цель многих методологий тестирования ПО, включая спиральную модель, изменилась в последнее время. Мы используем их не только для поиска дефектов в приложениях, но также и для выяснения причин, их вызвавших. Такой подход помогает разработчикам работать более эффективно и быстро устранять ошибки.

Читайте подробнее o спиральной модели в предыдущем блог посте .

Agile

Методология гибкой (Agile) разработки и тестирование ПО может быть описана как набор подходов, ориентированных на использование интерактивной разработки, динамического формирования требований и обеспечения их осуществления как результата постоянного взаимодействия внутри самоорганизующейся рабочей группы. Большинство гибких методологий разработки ПО нацелены на минимизацию рисков посредством разработки в рамках коротких итераций. Одним из главных принципов этой гибкой стратегии является возможность быстрого реагирования на возможные изменения, нежели стремление положиться на долгосрочное планирование.

Узнайте больше об Agile (прим. — статья на английском языке) .

Экстремальное программирование (XP, Extreme Programming)

Экстремальное программирование является одним их примеров гибкой разработки ПО. Отличительной особенностью этой методологии является “парное программирование”, ситуация, когда один разработчик работает над кодом, в то время как его коллега постоянно проводит обзор написанного кода. Процесс тестирования ПО является довольно важным, поскольку начинается даже раньше, чем написана первая строка кода. Каждый модуль приложения должен иметь юнит-тест, чтобы большинство ошибок могло быть исправлено на стадии написания кода. Другим отличительным свойством является то, что тест определяет код, а не наоборот. Это значит, что определенная часть кода может быть признана завершенной только в том случае, если все тесты пройдены успешно. В противном случае, код отклоняется.

Главными достоинствами такой методологии являются постоянное тестирование и короткие релизы, что помогает обеспечить высокое качество кода.

Scrum

Scrum — Часть методологии Agile, итеративный инкрементный фреймворк, созданный для управления процессом разработки ПО. Согласно принципам Scrum, команда тестировщиков должна участвовать в следующих этапах:

  • Участие в Scrum планировании
  • Поддержка в юнит-тестировании
  • Тестирование пользовательских историй
  • Сотрудничество с заказчиком и владельцем продукта для определения критериев приемлемости
  • Предоставление автоматического тестировании

Более того, участники QA-отдела должны присутствовать на всех ежедневных собраниях, как и другие члены команды, чтобы обсудить, что было протестировано и сделано вчера, что будет протестировано сегодня, а также общий прогресс тестирования.

В то же время принципы Agile методологии в Scrum к появлению специфических особенностей:

  • Оценка усилий, необходимых для каждой пользовательской истории является обязательной
  • Тестировщик должен быть внимательным к требованиям, поскольку они могут постоянно изменяться
  • Риск регрессии возрастает вместе с частыми изменениями в коде
  • Одновременность планирования и выполнения тестов
  • Недопонимание между членами команды в случае если требования заказчика не до конца ясны

Узнайте больше о методологии Scrum из предыдущей статьи .

Заключение

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

Если вам нужна помощь с разработкой программного обеспечения или тестированием, выделенная команда разработчиков и QA инженеров готова к работе.

Похожие статьи