Введение 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
Приложение А Схемы и экранные формы
Основной всплеск интереса к теме тестирования пришёлся на конец 20-го века. Бурное развитие различных технологий привело к росту рынка производства программного обеспечения и к пересмотру вопросов обеспечения качества и надёжности разрабатываемых программ. Резко усилившаяся конкуренция между производителями ПО потребовала особого внимания к качеству создаваемых продуктов, т.к. теперь у потребителя был выбор: многие фирмы предлагали свои продукты и услуги по достаточно приемлемым ценам, а потому можно было обратиться к тем, кто разработает программу не только быстро и дёшево, но и качественно. Ситуация осложнилась тем фактом, что в настоящее время практически все сферы человеческой жизни подвержены компьютеризации, тем самым вопрос о качестве ПО начинает приобретать особую важность, так как сегодня это уже не просто комфорт от работы в той или иной программе, сегодня ПО управляет оборудованием в больницах, диспетчерскими системами в аэропортах, атомными реакторами, космическими кораблями и т.п.
Сегодня тестирование стало обязательной частью процесса производства ПО. Оно направлено на обнаружение и устранение как можно большего числа ошибок. Следствием такой деятельности является повышение качества ПО по всем его характеристикам.
Однако, несмотря на существование большого количества разных методов и видов тестирования, не существует единой методики для проверки ПО, вся информация о том, как нужно тестировать и что для этого предпринять разрозненна по разным научным источникам.
Анализ актуальности обусловили выбор темы исследования: «Разработка методики тестирования программного обеспечения».
Научной проблемой в данной работе является отсутствие единой методики тестирования.
Гипотеза исследования состоит в предположении, что применение разработанной методики тестирования в рамках данного диссертационного исследования поможет улучшит качество выдаваемого функционала.
Целью исследования является разработка методики тестирования программного обеспечения и ее применение на примере.
Для достижения поставленной цели необходимо решить следующие задачи:
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) снизилась нагрузка на команду тестировщиков за счет проведения модульного тестирования разработчиками.
Данная методика не исключает ряд недостатков: еще большее улучшение качества поставляемого функционала посредством частичного или полного перевода команды разработчиков на шаг интеграционного тестирования.
1. ГОСТ Р 50922-2006. Защита информации. Основные термины и определения
2. ГОСТ Р ИСО/МЭК 12207-2010. Информационная технология. Системная и программная инженерия. Процессы жизненного цикла программных средств
3. Методология функционального моделирования IDEF0, Руководящий документ, Госстандарт России
Научная и методическая литература:
4. Абезгауз Д.Б. Редактор диаграмм функциональных блоков программируемых контроллеров // Вестник Пензенского государственного университета. 2013. №3. С. 66-69.
5. Антонова Г.М. Эволюция терминов «Черный ящик» и «Серый ящик» // Вестник Московского финансово-юридического университета. 2012. №1. С. 16-19.
6. Аткинсон Л. MySQL. Библиотека профессионала - СПб: Вильямс, 2014. - 624 с.
7. Барахтаев М.А., Демкин К.В., Харитонов А.Ю. Проблемы тестирования программного обеспечения встроенных систем // Международный журнал гуманитарных и естественных наук. 2018. №5-1. С. 184-187.
8. Бедердинова О.И., Иванова Л.А. Совершенствование метода тестирования программного обеспечения «Белый ящик» // Arctic Evironmental Research. 2014. №2. С. 113-123.
9. Бирюков С.В. Анализ стратегий тестирования программного обеспечения // Известия Южного федерального университета. Технические науки. 2008. №1 (78). С. 59-63.
10. Бритов Г., Осипова Т. Моделирование бизнес-процессов. - М/LAP, 2014. - 124 с.
11. Варфоломеева Е.В. Информационные системы в экономике: Учебное пособие / Е.В. Варфоломеева, Т.В. Воропаева и др.; Под ред. Д.В. Чистова - М.: НИЦ ИНФРА-М, 2015. - 234 с.
12. Вдовенко Л.А. Информационная система предприятия: Учебное
пособие/Вдовенко Л. А. - 2 изд., перераб. и доп. - М.: Вузовский учебник, НИЦ ИНФРА-М, 2015. - 304 с.
13. Гвоздева В.А. Базовые и прикладные информационные технологии: Учебник / Гвоздева В. А. - М.: ИД ФОРУМ, НИЦ ИНФРА-М, 2015. - 384 с.
14. Гвоздева В.А. Информатика, автоматизированные информационные технологии и системы: Учебник / В.А. Гвоздева. - М.: ИД ФОРУМ: НИЦ ИНФРА-М, 2015. - 544 с.
15. Гладышев Е.И., Мурыгин А.В. Обзор архитектура современного OSS/BSS решения // Актуальные проблемы авиации и космонавтики. 2011. №7(1). C. 386-387.
16. Грофф Д., Вайнберг П., Оппель Э. SQL. Полное руководство. - СПб.: Вильямс, 2014. - 960с.
17. Дейт К.Дж. Введение в системы баз данных. - К.: Диалектика, 2012. - 360 с.
18. Домарацкий Я.А. Модульное тестирование операционной системы реального времени // Программные продукты и системы. 2017. №4. С. 37-40.
19. Дунаев В.В. Базы данных. Язык SQL для студента - Издательство: БХВ,
2013. - 196 с.
20. Журавлев. С.О., Никитина С.А. Скорынин А.С. Об одном подходе к разбиению на классы эквивалентности // Челябинский физико¬математический журнал. 2017. №4. С. 497-502.
21. Заботина Н.Н. Проектирование информационных систем: Учебное пособие / Н.Н. Заботина. - М.: ИНФРА-М, 2011. - 331 с.
22. Затонский А.В. Информационные технологии: разработка информационных моделей и систем: Учеб. пос. / А.В.Затонский - М.: ИЦ РИОР: НИЦ ИНФРА-М, 2014 - 344с.
23. Информационные системы в экономике: Учебник / К.В. Балдин, В.Б. Уткин. - 7-e изд. - М.: Дашков и К, 2012. - 395 с.
24. Исаев Г. Проектирование информационных систем : учебное пособие : М.: Омега-Л, 2015. 432с.
25. Калиберда Е.А., Федотова И.В. Анализ требований к программным продуктам с выбором метода тестирования на примере web- ориентированных приложений // Омский научный вестник. 2017. №2 (110). С. 259-262.
26. Климентьев К.Е. Современные методы и технологии тестирования программного обеспечения: электрон. учеб.-метод. комплекс по дисциплине в LMS Moodle : мин-во образования и науки РФ, Самар. гос. аэрокосм. ун-т им. С. П. Королева (нац. исслед. ун-т), 2013. 43 с.
27. Коваленко В.В. Проектирование информационных систем: Учебное пособие / В.В. Коваленко. - М.: Форум: НИЦ ИНФРА-М, 2014. - 320 с.
28. Костомаров В.Г., Митрофанова О.Д. Методика как наука. Статья 1 //
ФГБОУ ВО «Государственный институт русского языка им. А.С. Пушкина». 2017. №3. С 56-62.
29. Котляров В.П. Критерии покрытия требований в тестовых сценариях, сгенерированных из поведенческих моделей приложений // Научно-технические ведомости Санкт-Петербургского государственного политехнического университета. Информатика, телекоммуникации и управление. 2016. №6(1). С 202-207.
30. Куликов С. Тестирование программного обеспечения. Базовый курс: учеб. Пособие : EPAM Systems, 2020. 298 с.
31. Мутилин В.С. Паттерны проектирования тестовых сценариев // Труды Института системного программирования РАН. 2018. №5. С 97-128.
32. Никифоров И.В., Петров А.В., Котляров В.П. Статический метод отладки тестовых сценариев, сгенерированных с использованием эвристик // Научно-технические ведомости Санкт-Петербургского государственного политехнического университета. Информатика, телекоммуникации и управление. 2012. №4. С 114-119.
33. Носырев П., Носырева М., Рассказова Т., Корнеева Н. Валидация аналитических методик: теория и практика (часть I. теория) // Ремедиум. Журнал о российском рынке лекарств и медицинской технике. 2016. №11. С 62-64.
34. Петров А.С., Плаксин М.А., Сергеев Д.И. Автоматизация контроля обучения студентов тестированию учебных программ методами «чёрного ящика» // Вестник Пермского университета. Серия: Математика. Механика. Информатика. 2010. №2. С. 85-93.
35. Пирогов, В.Ю. Информационные системы и базы данных: организация и проектирование: Учебное пособие / В.Ю. Пирогов. - СПб.: БХВ-Петербург,
2014. - 528 с.
36. Полевщиков И.С. Особенности разработки методического пособия на тему «Разбиение по эквивалентности и анализ граничных значений» (для студентов направлений «Информатика и вычислительная техника» и «Программная инженерия») // Инновации в науке. 2013. №18-1. С. 1-6.
37. Полухин П.В. Практическая апробация фаззинга межсайтового скриптинга методом черного ящика к тестированию интернет и интранет приложений // Перспективы развития информационных технологий. 2015. №25. С. 17-21.
38. Поначугин А.В. Определение надёжности программного обеспечения в структуре современной информационной системы // Кибернетика и программирование. 2016. №2. С. 65-72.
39. Уткин В., Балдин К. Информационные системы в экономике. - М.:
Academia, 2014. - 288с.
40. Федотова Е.Л. Информационные технологии в профессиональной деятельности: Учебное пособие / Е.Л. Федотова. - М.: ИД ФОРУМ: НИЦ ИНФРА-М, 2015. - 368 с.
41. Фуфаев, Э.В. Базы данных: Учебное пособие для студентов учреждений среднего профессионального образования / Э.В. Фуфаев, Д.Э. Фуфаев. - М.: ИЦ Академия, 2014. - 320 с.
Электронные ресурсы:
42. Фуфаев, Э.В. Базы данных: Учебное пособие для студентов учреждений среднего профессионального образования / Э.В. Фуфаев, Д.Э. Фуфаев. - М.: ИЦ Академия, 2014. - 320 с.
Литература на иностранном языке:
43. Copeland L. A practitioner’s Guide to Software Test Design : Artech House Publishers, 2003. 300 p.
44. Kaner C., Falk J., Nguyen H.Q. Testing computer software : Wiley, 1999. 496.
45. Luciano B., Mauro P. Electronic Notes in Theoretical Computer Science // ELSEVIER. 2015. №148. P.89-111.
46. Reddy N. The Difference In Perspective Of “Testers” And “Developers” // Software Testing Help. 2020. №3. P 18-22.
47. Xu Q., Jiao R.J., Yang X., Helander M.G. Customer Requirement Analysis based on an Analytical Kano Model // School of Mechanical & Aerospace Engineering, Nanyang Technological University, Singapore. 2008. №1. P 7-12.