Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Тестирование программного обеспечения

Покупка
Артикул: 769630.01.99
Доступ онлайн
240 ₽
В корзину
В настоящее время программное обеспечение (ПО) используется во всех сферах человеческой деятельности, и сегодня тестирование - это обязательная часть процесса разработки программного продукта. Цель профессии «тестирование» - помочь создать качественный продукт. Работа тестировщика - предотвратить дефекты и, следовательно, обеспечить высокое качество процесса разработки и его результатов. Для этого необходимо обладать: знаниями о видах тестирования: об инструментах и библиотеках для автоматизации тестирования, умением пользоваться специальным ПО для автоматизированного тестирования и регистрации ошибок, навыками тест-дизайна. Данное пособие поможет получить эти знания. Для студентов направлений «Программная инженерия» и «Бизнес-информатика», а также новичков в области тестирования программного обеспечения и программирования.
Морозова, Ю. В. Тестирование программного обеспечения : учебное пособие / Ю. В. Морозова. - Томск : Эль-Контент, 2019. - 120 с. - ISBN 978-5-4332-0279-5. - Текст : электронный. - URL: https://znanium.com/catalog/product/1845910 (дата обращения: 26.04.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Министерство науки и высшего образования Российской Федерации 

 

ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ 

УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР) 

 

ФАКУЛЬТЕТ ДИСТАНЦИОННОГО ОБУЧЕНИЯ (ФДО) 

 

 

 

Ю. В. Морозова 

 

 

 

 

 

ТЕСТИРОВАНИЕ  

ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ 

 

 

 

 

 

Учебное пособие 

 

 

 

 

Томск 
2019 

УДК
004.415.53(075.8)

ББК
32.973.26-018.2я73
М 801

 

Рецензенты: 

В. В. Герасименко, канд. техн. наук, заместитель начальника отдела  

информационных технологий ООО «КДВ Групп»; 

П. В. Сенченко, канд. техн. наук, доцент кафедры автоматизации  
обработки информации Томского государственного университета  

систем управления и радиоэлектроники 

 

Морозова Ю. В. 

М 801
Тестирование программного обеспечения : учебное пособие / 

Ю. В. Морозова. – Томск : Эль Контент, 2019. – 120 с.

 
ISBN 978-5-4332-0279-5 
 
В настоящее время программное обеспечение (ПО) используется во всех 

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

Для студентов направлений «Программная инженерия» и «Бизнес-инфор
матика», а также новичков в области тестирования программного обеспечения и 
программирования.  
 
 
 

ISBN 978-5-4332-0279-5
© Морозова Ю. В., 2019
© Оформление.

ООО «Эль Контент», 2019

Оглавление 

Введение ......................................................................................................... 4 
1 Что такое тестирование и зачем нам все это надо ................................ 6 
2 Дефекты и их жизненный цикл ............................................................ 23 

2.1 Классификация дефектов ................................................................... 24 
2.2 Жизненный цикл дефекта .................................................................. 29 

3 Место тестирования  в жизненном цикле разработки ПО ............... 38 

3.1 Модели жизненного цикла разработки ПО ....................................... 39 
3.2 Этапы тестирования ........................................................................... 44 
3.3 Методы проектирования тестов ........................................................ 47 
3.4 Тестовая документация ...................................................................... 61 

3.4.1 Тест-кейсы ................................................................................... 62 
3.4.2 Чек-листы .................................................................................... 68 

4 Классификация видов тестирования ................................................... 73 

4.1 По знанию системы ............................................................................ 74 
4.2 По позитивности ................................................................................. 77 
4.3 По целям (или объекту) ...................................................................... 78 
4.4 По исполнителям (субъектам) ........................................................... 91 
4.5 По времени проведения ..................................................................... 92 
4.6 По степени автоматизации ................................................................. 94 
4.7 По состоянию системы (по исполнению кода) ................................. 96 

5 Особенности тестирования мобильных и веб-приложений .............. 99 

5.1 Особенности тестирования веб-приложений .................................. 101 
5.2 Особенности тестирования мобильных приложений ..................... 106 

Заключение ............................................................................................... 111 
Литература ................................................................................................ 112 
Глоссарий .................................................................................................. 114 

 

Введение 

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

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

В пособии рассмотрены этапы, уровни и виды тестирования ПО, техники 

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

Соглашения, принятые в учебном пособии 

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

 ·······························································  

Эта пиктограмма означает определение или новое понятие. 

 ·······························································  
 ·······························································  

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

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

 ··························  
 Пример  ··························  

Эта пиктограмма означает пример. В данном блоке автор может привести 

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

 ··························  
 Выводы  ··························  

Эта пиктограмма означает выводы. Здесь автор подводит итоги, обобщает 

изложенный материал или проводит анализ. 
 ··········································································  

 ·······························································  
Контрольные вопросы по главе 
 ·······························································  

1 Что такое тестирование и зачем нам все это надо 

Результатом работы тестировщика является счастье конечного пользователя.

Роман Савин

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

 В 1990 г. абоненты американского оператора сотовой связи AT&T не 

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

 Баг американской системы противовоздушной обороны Patriot, выпу
щенной в 1991 г., унес жизни 28 солдат. Точность расчетов системы падала при использовании более 14 часов. В реальных условиях она была 
задействована около 100 часов. 

 В 1974 г. один программист написал систему расчета платежей, где го
да записывались в виде двух последних цифр, что влекло за собой проблемы с вычислениями в 2000-х гг. В 1995 г. компания, которой принадлежала программа, потеряла несколько сотен миллиардов долларов 
в процессе замены ПО на компьютерах по всему миру. 

 В 1994 г. компании Disney пришлось иметь дело с большим числом раз
гневанных покупателей. Ее первая компьютерная игра, The Lion King 
Animated Storybook, запускалась только на небольшом числе компьютеров, таких, которые использовали разработчики, когда писали код. 
История попала в новости многих газет и телеканалов. 

 В 1994 г. рейс № 140 компании China Airlines закончился гибелью 

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

 В 1983 г. чуть не случилась третья мировая война. Почти в результате 

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

 В 2005 г. компания Toyota объявила об отзыве 160 000 гибридных ав
томобилей Prius из-за необъяснимого включения света и остановки 
бензиновых двигателей. Однако, в отличие от множества отзывов последних лет, проблема Priusʼа заключалась вовсе не в железе, это была 
программная ошибка в программном обеспечении автомобиля. Prius 
имел программный баг [1]. 

 В 2012 г. случился крах Knight Capital Group из-за бага: потеряв 

440 млн долл. за 30 минут, компания была вынуждена согласиться на 
слияние. Один из крупнейших игроков трейдерского рынка в США потерял 75% своих акций в одночасье. Причина: ошибка в торговом алгоритме заставила ПО проводить ошибочные сделки, покупая дорого и 
продавая дешево – как можно догадаться, это совсем не то, что обычно 
называют успешной торговой стратегией [2]. 

 2 августа 2016 г. Samsung представила миру свой новый фаблет Galaxy 

Note 7 на мероприятии в Нью-Йорке. Менее чем через две недели после 
релиза в сети стали появляться первые сообщения о взрывах этого 
устройства (рис. 1.1). Менее чем через два месяца после выхода флагмана компании производство и продажи Galaxy Note 7 были окончательно прекращены. Samsung зафиксировал всего 35 случаев, когда оставленный на зарядке Galaxy Note 7 нагревался до такого состояния, 
что это приводило к взрыву аккумулятора. По официальным данным, 
их подвел производитель аккумулятора. На тестирование прислал один, 
а в общей поставке – другой. В любом случае, это был провал.  

Рис. 1.1 – Бюллетень, предупреждающий о запрете на использование  

Galaxy Note 7 в автобусах в штате Флорида, США 

 В 2000 г. мы успешно преодолели Баг тысячелетия (Millennium Bug), 

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

Какие можно сделать выводы? 
Итак, тестирование не нужно, если продукт: 

 делается для себя; 

 не нацелен на продажи; 

 не предусматривает особых финансовых вложений; 

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

Тестирование необходимо, если: 

 продукт делается с целью получения прибыли; 

 он призван решать важные задачи; 

 плохое качество выпущенного продукта нанесет удар по репутации 

компании и понизит ее авторитет среди пользователей. 

Конечно, исправить можно многое: дефекты дизайна, неудобно располо
женные элементы, скорость работы, уязвимости в системе безопасности, но вот 
вернуть доверие пользователей и репутацию IT-компании крайне сложно. 
Раньше компаний на IT -рынке было мало, и пользователи программных продуктов были продвинутыми и заменяли тестировщиков. Если в программе обнаруживались баги или какие-то дефекты, то пользователь звонил или отправлял 
письмо в компанию, где ошибку исправляли, и по почте отправляли дискетку со 
свежим релизом. Но начиная с 1990 г., согласно статистике, продажи персональных компьютеров с каждым годом удваивались. И появилась армия пользователей, которая не готова была что-то тестировать. Если программа не выполняет 
поставленных задач или наносит ущерб, пользователи уходят к конкурентам. 
Если что-то не устраивало или не работало, проще обменять на другой софт, т. к. 
число компаний, производящих ПО, тоже увеличивалось с каждым годом. И у 
пользователей появился выбор, что покупать и чем пользоваться. И сегодня тестирование – это обязательная часть процесса разработки программного обеспечения.  

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

В большинстве случаев объявление с вакансией на должность тестиров
щика выглядит так: «Требуется QA (QA Tester, тестировщик, тестер, QAинженер)». И возникает вопрос: «Кто такой QA Tester?». Тот, который тестирует 
того, кто делает QA? 

Для начала давайте рассмотрим, что такое Quality Control и чем он отлича
ется от Quality Assurance (QA). 

 ·······························································  

Контроль качества (quality control) – рабочие методы и ак
тивности, нацеленные на выполнение требований к качеству, являющиеся частью управления качеством [3].  
 ·······························································  

Задачей контроля качества является поддержка качества продукта в теку
щий момент времени. 

 ·······························································  

Обеспечение качества (quality assurance – QA) – это совокуп
ность мероприятий, охватывающих все этапы разработки ПО, 
включая эксплуатацию и релиз, которые предпринимаются на разных стадиях жизненного цикла ПО, главной целью которого является обеспечение качества выпускаемого продукта [3].  
 ·······························································  

Таким образом, обеспечение качества (Quality Assurance) включает в себя 

контроль качества (Quality Control) наряду с другими процессами по улучшению 
качества работы компании. 

Давайте разберемся: что же такое качество? 

 ·······························································  

Качество программного обеспечения (software quality) – это 

способность программного продукта при заданных условиях удовлетворять установленным или предполагаемым потребностям (ISO 
9126). 
 ·······························································  

Обобщая определение, приведенное в ISO-cтандарте, можно сказать, что ка
чество – это отсутствие дефектов. 

Давайте рассмотрим, в чем разница между тестированием и обеспечением 

качества. Часто используют фразу «обеспечение качества» (или просто QA) для 
обозначения тестирования, тем не менее, обеспечение качества и тестирование 
не одно и тоже, но эти понятия связаны. Их объединяет более крупное понятие – 
управление качеством. Это понятие появилось в процессе эволюции представления о тестировании. 

Самый первый компьютерный баг в истории был обнаружен 9 сентября 

1947 г. Согласно фольклору, это произошло после случая в Гарвардском университете. После того как на реле прадедушки персонального компьютера Mark II 
Aiken Relay Calculator присел отдохнуть мотылек, один из контактов слегка коротнуло и весь 35-тонный агрегат со скрежетом остановился (рис. 1.2).  

Рис. 1.2 – Mark II Aiken Relay Calculator 

Инженеры извлекли мотылька, после чего аккуратно зафиксировали его 

скотчем в журнале испытаний с комментарием «Первый фактический случай 
найденного жука» (First actual case of bug being found) (рис. 1.3). Именно поэтому 
компьютерные дефекты принято называть багами (bugs – жуки). 

 

Рис. 1.3 – Первый фактический случай найденного жука 

Доступ онлайн
240 ₽
В корзину