Научная статья на тему 'О внедрении процесса автоматизации тестирования в различных методологиях разработки программного обеспечения'

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

CC BY
1640
579
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ТЕСТИРОВАНИЕ / ПО / АВТОМАТИЗАЦИЯ / АВТО-ТЕСТЫ / МЕТОДОЛОГИЯ / РАЗРАБОТКА / ФУНКЦИОНАЛЬНОЕ ТЕСТИРОВАНИЕ

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Мартюкова Е. С.

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «О внедрении процесса автоматизации тестирования в различных методологиях разработки программного обеспечения»

О внедрении процесса автоматизации тестирования в различных методологиях разработки программного обеспечения

О внедрении процесса автоматизации тестирования в различных методологиях разработки программного обеспечения

Мартюкова Е.С.

Национальный исследовательский университет «Высшая школа экономики»

emartyukova@hse. ги

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

Ключевые слова: тестирование, ПО, автоматизация, авто-тесты, методология, разработка, функциональное тестирование.

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

Различные виды тестирования можно квалифицировать по следующим группам [Тамре, 2003]:

I группа. По направленности: функциональное тестирование, тестирование производительности, нагрузочное тестирование, usability тестирование, GUI тестирование, тестирование безопасности, тестирование локализации, тестирование совместимости, исследовательское тестирование.

II группа. По степени доступа к исходному коду: тестирование методом черного ящика, тестирование методом белого ящика.

III группа. По элементам системы: системное тестирование, модульное тестирование, интеграционное тестирование.

IV группа. По времени проведения: альфа-тесгирование, бета-тестирование, регрессионное тестирование, приемочное тестирование, smoke testing.

V группа. По исполнению: ручное тестирование, автоматизированное тестирование.

VI группа. По выполнению кода: статическое тестирование, динамическое тестирование.

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

функциональное тестирование черного ящика или автоматизированное тестирование производительности [Савин, 2007].

Таким образом, разные виды тестирование применяются на разных этапах жизненного цикла ПО:

Форматирование требований к ПО: статическое тестирование спецификаций.

Реализация ПО: модульное тестирование, статическое тестирование методом черного ящика.

Тестирование ПО: ручное функциональное тестирование, тестирование производительности, usability и т.д.

Сопровождение ПО: функциональное, регрессионное, smoke тестирование.

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

На данный момент выделяют следующие модели процесса разработки:

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

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

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

Еще одним важным видом тестирования является автоматизированное тестирование. Автоматизированное тестирование - это процесс, при

О внедрении процесса автоматизации тестирования

в различных методологиях разработки программного обеспечения_

котором выполнение тестов, проверка результатов, формирования отчетов происходит автоматически с помощью специальных программных средств [Винниченко, 2005].

Можно выделить 3 уровня автоматизированного тестирования [Дастин и др., 2003]:

24) Модульное тестирование. На этом уровне тесты пишутся для каждой функции или метода в написанном коде.

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

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

Использование автоматизированных тестов на проекте позволяет:

■ повысить скорость тестирования без потерь качества;

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

■ исключить человеческий фактор при выполнении тестов;

■ проводить тестирование людям, не являющимися специалистами в области тестирования ПО.

В общем случае, процесс автоматизации тестирования включает в себя:

27) оценку трудозатрат и стоимости внедрения;

28) выбор инструментов автоматизации:

a. программные средства автоматизации (наиболее распространенные: Selenium, TestComplete, QTP, MS Test, Ranorex, Cucumber);

b. язык программирования (наиболее распространенные: Java, Piton, Ruby, C#);

c. фреймворк (наиболее распространенные: Web Driver, Thucydides);

d. сервер непрерывной интеграции (наиболее распространенные: Hudson, Jenkins, TeamCity, Team Foundation Server);

29)разработка и адаптация выбранного фреймворка;

30)написание тест-кейсов для автоматизации;

31) программирование написанных тест-кейсов;

32)разработка подхода к генерации тестовых данных;

33)внедрение разработанных решений;

34)разработка системы документирования;

35)регламентирование процесса.

Заключение

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

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

Список литературы

[Винниченко, 2005] Винниченко И. Автоматизация процессов тестирования. СПб: Питер, 2005.

[Дастин и др., 2003] Дастии Э., Рэшка Дж., Пол Дж. Автоматизированное тестирование программного обеспечения. Внедрение, управление и эксплуатация. М: Лори, 2003.

[Криспин и др., 2010] Криспин Л., Грегори Дж. Гибкое тестирование. Практическое руководство для тестировщиков ПО и гибких команд. М: Вильяме, 2010.

[Савин, 2007] Савин Р. Тестирование Дот Ком, или Пособие по жестокому обращению с багами в интернет-стартапах. М: Дело, 2007.

[Тамре, 2003] Тамре Л. Введение в тестирование программного обеспечения. М: Вильяме, 2003.

i Надоели баннеры? Вы всегда можете отключить рекламу.