Тестирование инф.систем. Ответы на вопросы к лекциям Понятие тестирования программного обеспечения
Скачать 0.52 Mb.
|
Уровень модульного тестирования (Unit Test layer).Под автоматизированными тестами на этом уровне понимаются модульные или компонентные тесты, которые чаще всего пишут разработчики программного продукта. Такие тесты позволяют начать тестирование на ранней стадии разработки проекта. Более того, разработчики используют их для проверки исправлений дефектов. Количество тестов на уровне модульного тестирования увеличивается за счет разработки новых модулей и тестов для них. Уровень функционального тестирования (Functional Test Layer non-UI). Не всю бизнес логику приложения можно протестировать через слой GUI. Иногда бизнес-логика скрыта от пользователя, и это является особенностью реализации. Но тестирование бизнес-логики все равно необходимо. В таком случае для команды тестирования реализуется доступ напрямую к функциональному слою, что обеспечивает возможность тестировать бизнес-логику приложения, минуя пользовательский интерфейс. Уровень тестирования через пользовательский интерфейс (GUI Test Layer).На данном уровне есть возможность тестировать не только интерфейс пользователя, но также и функциональность, выполняя операции, которые вызывают бизнес-логику приложения. Такие тесты, как правило, более эффективны, чем тестирование функционального слоя напрямую, так как функциональность тестируется посредством эмуляции действий конечного пользователя через графический интерфейс. Идеальной является ситуация, когда автоматизация тестирования выполнена на всех трех указанных выше уровнях. Почему регрессионное тестирование наиболее часто автоматизируют? Регрессионное тестирование автоматизируют чаще всего, что избавляет тестировщика от повторения одних и тех же тестов перед каждым релизом. Обычно сценарии автоматических регрессионных тестов разрабатываются на основе ручных тестов, которые уже выявляли дефекты. А в дальнейшем подготовленные сценарии можно использовать повторно. 12.Какова архитектура теста? Любой тест включает в себя три основных блока: • рreconditions; • steps; • post-conditions. Схематически данная структура изображена на рисунке 18: Рисунок 18 – Общая структура теста В блоке «Preconditions» описываются начальные условия, которые должны быть выполнены, чтобы далее можно было проходить по шагам тест- кейса. Для ручного теста это может быть, например, авторизация в приложении и открытие определенной формы, на которой далее по шагам будут производиться какие-либо действия, проверяющие конкретную функциональность. Кроме того, в качестве предусловия может выступать описание пользователя (тестового клиента) системы, для которого должны быть выполнены шаги. Например, определенные формы приложения доступны только юридическому лицу. Тогда в предусловии к тесту может быть сказано следующее: «Юридическое лицо авторизовано в системе». Для автотеста предусловия в целом такие же, за исключением того, что тест-скрипт при выполнении самостоятельно подготавливает систему к дальнейшему выполнению шагов теста и инициализирует тестовые данные. Если упустить предусловия, то тест может быть выполнен некорректно, или тестировщик, выполняя тест, упустит важные условия и дефекты останутся не обнаруженными. Блок «Steps» предполагает описание шагов, по которым будет осуществляться непосредственно проведение теста. Каждый шаг ручного теста должен содержать лишь одно действие и корректное описание ожидаемого для данного действия результата. Для автоматизированного скрипта действует то же правило. Несколько действий в рамках одного шага могут привести систему в непригодное для выполнения следующего шага состояние, а, следовательно, к некорректности выполнения теста и пропуску дефектов. Данный блок также предусматривает сохранение результатов прохождения теста. Это может быть провал (если хотя бы на одном шаге фактическое поведение системы отличалось от описанного ожидаемого результата) или успешное прохождение. Кроме того, выполнение теста может быть блокировано имеющимся в системе дефектом. Четко фиксируются как сами результаты, так и шаги, на которых тест был провален. Рекомендуется, чтобы все шаги теста относились к единственной проверке. Большое количество разнотипных проверок в рамках одного теста является некорректным и также может привести к пропуску имеющихся в системе дефектов. Кроме того, нельзя совмещать негативные и позитивные проверки в рамках одного теста. Блок «Post-Conditions» включает в себя удаление ненужных тестовых данных, подготовку системы в состояние, пригодное для выполнения следующего теста, а также корректное завершение работы системы. Этот блок очень важен для автотеста. В ручном тесте данный блок может просто подразумеваться, но не описываться. Помимо трех самых важных разделов тест может содержать в себе и краткоеописание осуществляемых проверок. Данный блок называется «Summary». Здесь указываются основные требования и цели выполнения проверок. Для автотестов создается также библиотека по обработке исключений и ошибок, например: • PreConditionException; • TestCaseException; • PostConditionException. Очень важно поддерживать как ручные, так и автоматизированные тесты в актуальном состоянии. Почему архитектура ручного и автоматизированного теста в целом идентична? Ручное тестирование может занимать много времени, зато в краткосрочной перспективе сэкономит в разы больше денег. Его стоимость зависит только от тестировщика, а не инструментов для автоматизации. Автоматизированное тестирование — это написание кода. С его помощью ожидаемые сценарии сравниваются с тем, что получает пользователь, указываются расхождения. Автоматизированное тестирование играет важную роль в тяжёлых приложениях с большим количеством функций. Перечислите уровни автоматизации и охарактеризуйте каждый из них. Уровни автоматизации Если подойти к вопросу условно, то тестируемая система (приложение) может быть разбита на три уровня, показанных на рисунке 17: Рисунок 17 – Три уровня автоматизации Рассмотрим каждый уровень более детально. |