Тестирование программного обеспечения
Покупка
Тематика:
Проектирование, отладка и тестирование ПО. Вспомогательные средства проектирования. CASE-технологии
Издательство:
Эль-Контент
Автор:
Морозова Юлия Викторовна
Год издания: 2019
Кол-во страниц: 120
Дополнительно
Вид издания:
Учебное пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-4332-0279-5
Артикул: 769630.01.99
В настоящее время программное обеспечение (ПО) используется во всех сферах человеческой деятельности, и сегодня тестирование - это обязательная часть процесса разработки программного продукта. Цель профессии «тестирование» - помочь создать качественный продукт. Работа тестировщика - предотвратить дефекты и, следовательно, обеспечить высокое качество процесса разработки и его результатов. Для этого необходимо обладать: знаниями о видах тестирования: об инструментах и библиотеках для автоматизации тестирования, умением пользоваться специальным ПО для автоматизированного тестирования и регистрации ошибок, навыками тест-дизайна. Данное пособие поможет получить эти знания. Для студентов направлений «Программная инженерия» и «Бизнес-информатика», а также новичков в области тестирования программного обеспечения и программирования.
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Министерство науки и высшего образования Российской Федерации ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР) ФАКУЛЬТЕТ ДИСТАНЦИОННОГО ОБУЧЕНИЯ (ФДО) Ю. В. Морозова ТЕСТИРОВАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ Учебное пособие Томск 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).