Разработка методики тестирования программного обеспечения
|
Введение 4
Глава 1 Теоретико-методологические основы тестирования программного обеспечения 7
1.1 Понятие тестирования и его место в процессе разработки ПО 7
1.2 Этапы тестирования 10
1.2.1 Планирование тестирования и анализ требований 10
1.2.2 Разработка тестовых сценариев 13
1.2.3 Выполнение тестов 16
1.2.4 Анализ результатов тестирования и выдача проекта 18
1.3 Определение понятия «методика тестирования» 19
Глава 2 Анализ существующих методов и типов тестирования программного обеспечения 23
2.1 Обзор существующих видов тестирования 23
2.2 Обзор существующих методов тестирования 32
2.2.1 Метод черного ящика 32
2.2.2 Метод белого ящика 37
2.2.3 Метод серого ящика 40
Глава 3 Методика тестирования программного обеспечения 45
3.1 Описание предлагаемой методики тестирования 45
3.1.1 Сбор требований о тестируемой системе 47
3.2 Тестирование и анализ требований 48
3.2.1 Разработка тестовых сценариев 49
3.2.2 Интеграционное тестирование, отслеживание найденных ошибок . 57
3.2.3 Тестирование пользовательского интерфейса, отслеживание
найденных ошибок 66
3.2.4 Системное тестирование, отслеживание найденных ошибок 67
3.2.5 Регрессионное тестирование 69
3.2.6 Выдача 70
Глава 4 Рекомендации по использованию представленной методики тестирования 73
4.1 Обоснование эффективности представленной методики тестирования 73
4.2 Возможности применения результатов представленной методики тестирования 79
Заключение 81
Список используемой литературы 83
Приложение А Схемы и экранные формы
Глава 1 Теоретико-методологические основы тестирования программного обеспечения 7
1.1 Понятие тестирования и его место в процессе разработки ПО 7
1.2 Этапы тестирования 10
1.2.1 Планирование тестирования и анализ требований 10
1.2.2 Разработка тестовых сценариев 13
1.2.3 Выполнение тестов 16
1.2.4 Анализ результатов тестирования и выдача проекта 18
1.3 Определение понятия «методика тестирования» 19
Глава 2 Анализ существующих методов и типов тестирования программного обеспечения 23
2.1 Обзор существующих видов тестирования 23
2.2 Обзор существующих методов тестирования 32
2.2.1 Метод черного ящика 32
2.2.2 Метод белого ящика 37
2.2.3 Метод серого ящика 40
Глава 3 Методика тестирования программного обеспечения 45
3.1 Описание предлагаемой методики тестирования 45
3.1.1 Сбор требований о тестируемой системе 47
3.2 Тестирование и анализ требований 48
3.2.1 Разработка тестовых сценариев 49
3.2.2 Интеграционное тестирование, отслеживание найденных ошибок . 57
3.2.3 Тестирование пользовательского интерфейса, отслеживание
найденных ошибок 66
3.2.4 Системное тестирование, отслеживание найденных ошибок 67
3.2.5 Регрессионное тестирование 69
3.2.6 Выдача 70
Глава 4 Рекомендации по использованию представленной методики тестирования 73
4.1 Обоснование эффективности представленной методики тестирования 73
4.2 Возможности применения результатов представленной методики тестирования 79
Заключение 81
Список используемой литературы 83
Приложение А Схемы и экранные формы
Основной всплеск интереса к теме тестирования пришёлся на конец 20-го века. Бурное развитие различных технологий привело к росту рынка производства программного обеспечения и к пересмотру вопросов обеспечения качества и надёжности разрабатываемых программ. Резко усилившаяся конкуренция между производителями ПО потребовала особого внимания к качеству создаваемых продуктов, т.к. теперь у потребителя был выбор: многие фирмы предлагали свои продукты и услуги по достаточно приемлемым ценам, а потому можно было обратиться к тем, кто разработает программу не только быстро и дёшево, но и качественно. Ситуация осложнилась тем фактом, что в настоящее время практически все сферы человеческой жизни подвержены компьютеризации, тем самым вопрос о качестве ПО начинает приобретать особую важность, так как сегодня это уже не просто комфорт от работы в той или иной программе, сегодня ПО управляет оборудованием в больницах, диспетчерскими системами в аэропортах, атомными реакторами, космическими кораблями и т.п.
Сегодня тестирование стало обязательной частью процесса производства ПО. Оно направлено на обнаружение и устранение как можно большего числа ошибок. Следствием такой деятельности является повышение качества ПО по всем его характеристикам.
Однако, несмотря на существование большого количества разных методов и видов тестирования, не существует единой методики для проверки ПО, вся информация о том, как нужно тестировать и что для этого предпринять разрозненна по разным научным источникам.
Анализ актуальности обусловили выбор темы исследования: «Разработка методики тестирования программного обеспечения».
Научной проблемой в данной работе является отсутствие единой методики тестирования.
Гипотеза исследования состоит в предположении, что применение разработанной методики тестирования в рамках данного диссертационного исследования поможет улучшит качество выдаваемого функционала.
Целью исследования является разработка методики тестирования программного обеспечения и ее применение на примере.
Для достижения поставленной цели необходимо решить следующие задачи:
1) выявить место тестирования в процессе разработки ПО;
2) рассмотреть существующие этапы тестирования;
3) дать определение термину «методика тестирования»;
4) провести анализ существующих видов и методов тестирования;
5) принять решение, какие виды и методы тестирования должны быть покрыты новой методикой;
6) предоставить новую методику тестирования;
7) протестировать новую методику на реальном примере;
8) описать возможности применения новой методики тестирования;
9) обосновать эффективность новой методики тестирования;
10) определить дальнейшее направление в развитии данной методики.
Объектом исследования является процесс тестирования ПО.
Предметом исследования является методика тестирования ПО.
Методы исследования включают в себя:
1) методы тестирования программного обеспечения;
2) методы определения качества продукта;
3) методы верификации программного обеспечения;
4) классификацию;
5) систематизацию;
6) сравнительный анализ.
Теоретической основной исследования стали:
1) отечественные и зарубежные исследования по обеспечению качества программного обеспечения;
2) публикации на сайтах, посвященные тестированию программного обеспечения.
Теоретическая значимость работы заключается в том, что в ней проанализированы большинство существующих видов и методов тестирования и систематизированы в одну методику.
Практическая значимость работы заключается в применении новой методики на реальном проекте в компании ООО «НетКрэкер».
Научная новизна работы состоит в разработке новой методики тестирования, которая поможет начинающим и практикующим тестировщикам улучшить качество своего тестирования.
На защиту выносятся:
1) Разработанная методика тестирования с ее подробным описанием и делением на конкретные шаги;
2) Анализ эффективности разработанной методики.
Магистерская диссертация состоит из введения, четырех глав и заключения, изложенных на 91 страницах, а также списка использованной литературы (47 наименований) и 4 приложений.
Сегодня тестирование стало обязательной частью процесса производства ПО. Оно направлено на обнаружение и устранение как можно большего числа ошибок. Следствием такой деятельности является повышение качества ПО по всем его характеристикам.
Однако, несмотря на существование большого количества разных методов и видов тестирования, не существует единой методики для проверки ПО, вся информация о том, как нужно тестировать и что для этого предпринять разрозненна по разным научным источникам.
Анализ актуальности обусловили выбор темы исследования: «Разработка методики тестирования программного обеспечения».
Научной проблемой в данной работе является отсутствие единой методики тестирования.
Гипотеза исследования состоит в предположении, что применение разработанной методики тестирования в рамках данного диссертационного исследования поможет улучшит качество выдаваемого функционала.
Целью исследования является разработка методики тестирования программного обеспечения и ее применение на примере.
Для достижения поставленной цели необходимо решить следующие задачи:
1) выявить место тестирования в процессе разработки ПО;
2) рассмотреть существующие этапы тестирования;
3) дать определение термину «методика тестирования»;
4) провести анализ существующих видов и методов тестирования;
5) принять решение, какие виды и методы тестирования должны быть покрыты новой методикой;
6) предоставить новую методику тестирования;
7) протестировать новую методику на реальном примере;
8) описать возможности применения новой методики тестирования;
9) обосновать эффективность новой методики тестирования;
10) определить дальнейшее направление в развитии данной методики.
Объектом исследования является процесс тестирования ПО.
Предметом исследования является методика тестирования ПО.
Методы исследования включают в себя:
1) методы тестирования программного обеспечения;
2) методы определения качества продукта;
3) методы верификации программного обеспечения;
4) классификацию;
5) систематизацию;
6) сравнительный анализ.
Теоретической основной исследования стали:
1) отечественные и зарубежные исследования по обеспечению качества программного обеспечения;
2) публикации на сайтах, посвященные тестированию программного обеспечения.
Теоретическая значимость работы заключается в том, что в ней проанализированы большинство существующих видов и методов тестирования и систематизированы в одну методику.
Практическая значимость работы заключается в применении новой методики на реальном проекте в компании ООО «НетКрэкер».
Научная новизна работы состоит в разработке новой методики тестирования, которая поможет начинающим и практикующим тестировщикам улучшить качество своего тестирования.
На защиту выносятся:
1) Разработанная методика тестирования с ее подробным описанием и делением на конкретные шаги;
2) Анализ эффективности разработанной методики.
Магистерская диссертация состоит из введения, четырех глав и заключения, изложенных на 91 страницах, а также списка использованной литературы (47 наименований) и 4 приложений.
В работе был сделан вывод, что, в настоящее время не существует единого определения для такого термина, как «методика тестирования», в результате чего было предоставлено собственное определение данному термину - это конкретные действия, шаги для достижения контроля качества программного обеспечения.
Был сделан вывод о том, что некоторые из них должны быть покрыты новой методикой тестирования, например, интеграционное и системное тестирование, а также тестирование документации.
В результате, проанализировав существующие методы и виды тестирования, в работе была представлена и опробована на реальной системе новая методика тестирования, содержащая следующие шаги:
- сбор требований о тестируемой системе во время которого была предоставлена реальная система для тестирования, а также собраны требования для нового функционала;
- анализ требований, которые были проанализированы с точки зрения адекватности, полноты, совместимости, выполнимости и разумности, а также с точки зрения подверженности тестированию;
- шаг разработки тестовых сценариев включал составление примеров тестовых сценариев для стартовой страницы одного из зарубежных телекоммуникационных операторов с помощью методологии случаев использования, техники классов эквивалентности и анализа пограничных значений, а также анализ покрытия кода;
- интеграционное тестирование и последующее отслеживание найденных ошибок - представлял собой тестирование взаимодействия двух систем. Были подробно протестированы составленные ранее тестовые сценарии, в результате чего была найдена и зафиксирована ошибка;
- тестирование пользовательского интерфейса, в ходе которого были протестированы различные характеристики графического интерфейса, после чего был сделан вывод, что он соответствует требованиям и эстетическим желаниям пользователей, даже несмотря на то, что был найден один незначительный недостаток;
- шаг системное тестирование включал проверку различных позитивных и негативных end-to-end процессов;
- регрессионное тестирование включало в себя последние прогоны основных бизнес-сценариев, после чего новый функционал был готов к выдаче;
- выдача проекта - шаг, на котором были написаны рекомендации по установке сборки и по настройке нового функционала на реальном сервере.
Применив приведенную методику на реальной системе, а также на реальном проекте разработки ПО можно сделать вывод, что данная методика:
1) может применяться для тестирования различных проектов по разработке ПО, однако более подходит для проектов, работающих по гибким методологиям управления;
2) дает конкретные шаги тестирования, поэтому может помочь начинающим тестировщикам легче «влиться» в процесс;
3) может применяться и для опытных команд тестировщиков, как это было сделано к одной из команд компании «НетКрэкер».
Таким образом, нам удалось проанализировать эффективность данной методики, в результате чего стало видно, что:
1) улучшилось качество разрабатываемого функционала значительно за счет нахождения меньшего количества ошибок во время интеграционного тестирования, а также таких факторов как процент переоткрытых ошибок, непройденых тестовых сценариев после первого прогона тестов;
2) снизилась нагрузка на команду тестировщиков за счет проведения модульного тестирования разработчиками.
Данная методика не исключает ряд недостатков: еще большее улучшение качества поставляемого функционала посредством частичного или полного перевода команды разработчиков на шаг интеграционного тестирования.
Был сделан вывод о том, что некоторые из них должны быть покрыты новой методикой тестирования, например, интеграционное и системное тестирование, а также тестирование документации.
В результате, проанализировав существующие методы и виды тестирования, в работе была представлена и опробована на реальной системе новая методика тестирования, содержащая следующие шаги:
- сбор требований о тестируемой системе во время которого была предоставлена реальная система для тестирования, а также собраны требования для нового функционала;
- анализ требований, которые были проанализированы с точки зрения адекватности, полноты, совместимости, выполнимости и разумности, а также с точки зрения подверженности тестированию;
- шаг разработки тестовых сценариев включал составление примеров тестовых сценариев для стартовой страницы одного из зарубежных телекоммуникационных операторов с помощью методологии случаев использования, техники классов эквивалентности и анализа пограничных значений, а также анализ покрытия кода;
- интеграционное тестирование и последующее отслеживание найденных ошибок - представлял собой тестирование взаимодействия двух систем. Были подробно протестированы составленные ранее тестовые сценарии, в результате чего была найдена и зафиксирована ошибка;
- тестирование пользовательского интерфейса, в ходе которого были протестированы различные характеристики графического интерфейса, после чего был сделан вывод, что он соответствует требованиям и эстетическим желаниям пользователей, даже несмотря на то, что был найден один незначительный недостаток;
- шаг системное тестирование включал проверку различных позитивных и негативных end-to-end процессов;
- регрессионное тестирование включало в себя последние прогоны основных бизнес-сценариев, после чего новый функционал был готов к выдаче;
- выдача проекта - шаг, на котором были написаны рекомендации по установке сборки и по настройке нового функционала на реальном сервере.
Применив приведенную методику на реальной системе, а также на реальном проекте разработки ПО можно сделать вывод, что данная методика:
1) может применяться для тестирования различных проектов по разработке ПО, однако более подходит для проектов, работающих по гибким методологиям управления;
2) дает конкретные шаги тестирования, поэтому может помочь начинающим тестировщикам легче «влиться» в процесс;
3) может применяться и для опытных команд тестировщиков, как это было сделано к одной из команд компании «НетКрэкер».
Таким образом, нам удалось проанализировать эффективность данной методики, в результате чего стало видно, что:
1) улучшилось качество разрабатываемого функционала значительно за счет нахождения меньшего количества ошибок во время интеграционного тестирования, а также таких факторов как процент переоткрытых ошибок, непройденых тестовых сценариев после первого прогона тестов;
2) снизилась нагрузка на команду тестировщиков за счет проведения модульного тестирования разработчиками.
Данная методика не исключает ряд недостатков: еще большее улучшение качества поставляемого функционала посредством частичного или полного перевода команды разработчиков на шаг интеграционного тестирования.



