Тестирование и качество ПО
Стр 1 из 10Следующая ⇒ Содержание
Вступление 4 Лекция 1. Тестирование и его роль в процессе разработки ПО 5 Определение тестирования 5 Тестирование и отладка 6 Тестирование и качество ПО 6 Тестирование как этап разработки 7 Виды тестирования 10 Контрольные вопросы: 12 Лекция 2. Психология и экономика тестирования 13 Стоимость тестирования 13 Психология тестирования 15 Принципы тестирования 17 Контрольные вопросы: 20 Лекция 3. Ошибки в программном обеспечении 21 Определение ошибки 21 Англоязычная терминология 23 Классификация ошибок 23 Контрольные вопросы: 26 Лекция 4. Методы тестирования 27 Проектирование тестов 28 Тестирование путем покрытия 29 Эквивалентное разбиение 30 Анализ граничных значений 31 Функциональные диаграммы 32 Прекращение тестирования 33 Контрольные вопросы: 35 Лекция 5. Тестирование без компьютера 36 Инспекции исходного текста 36 Сквозные просмотры 37 Влияние языка программирования 38 Контрольные вопросы: 39 Лекция 6. Тестирование модулей и классов 40 Общая стратегия тестирования 40 Способы тестирования взаимодействия модулей 41 Стратегии выполнения пошагового тестирования 42 Восходящее тестирование 43 Принципы тестирования структуры программных модулей 43 Показатели корректности тестирования структуры программных модулей 44 Особенности тестирования ООПО 47 Контрольные вопросы: 48 Лекция 7. Отладка 49 Определение и особенности процесса отладки 49 Метод «грубой силы» 49 Индуктивный метод 50 Дедуктивный метод 51 Принципы отладки 52 Контрольные вопросы: 54 Лекция 8. Независимое тестирование (аутосорсинг) 55 История независимого тестирования 55 Тестовые агентства 56 Виды тестовых исследований 56
Аутосорсинг на примере 58 Литература 65 Приложение I. Список вопросов поинспекциям исходного текста программ (по Г.Майерсу) 67 Приложение II. Список вопросов поинспекциям исходного текста программ на С++ (по Б. Марику) 70 Приложение III. Тестирование Internet-приложений и Web-сайтов 74
Вступление
Курс «Методология тестирования» посвящен изучению важной, но, к сожалению, мало освещаемой стадии процесса разработки программного обеспечения – тестированию. В последние годы программирование из искусства превратилось в индустрию, приобрело характер массового производства. Армия программистов стала миллионной, но и ее все еще недостаточно, чтобы удовлетворить спрос на производство ПО. В ближайшем будущем, требования, как к качеству программного обеспечения, так и к его количеству и разнообразию только возрастут и поэтому вопросы соответствия ПО функциональным требованиям, обеспечения удобного интерфейса пользователя, бесперебойной работы, приобретают исключительно большое значение. Тестирование программного обеспечения стало специализацией, основной работой для многих специалистов компьютерного мира. Но недостаток таких кадров все равно ощущается. Данный курс призван познакомить начинающих инженеров с основами науки тестирования и донести до них методологические принципы данного этапа разработки ПО. Материал данного курса затрагивает общие вопросы, связанные с тестированием ПО. Рассматриваются традиционный (структурный) и современный (объектно-ориентированный) подходы. В первую очередь, внимание уделяется содержанию имеющихся методологий, их принципиальным особенностям, а только затем – техническим деталям. Важно понять роль тестирования в целом, его значение в жизненном цикле ПО. Зависимость процесса тестирования от используемого языка программной системы является несущественной. В данном курсе не делается ставка на какой-либо язык программирования, хотя примеры и лабораторные работы основаны на языках С, С++ и Java.
Каждая лекция снабжена списком контрольных вопросов, ответы на которые помогут в сжатой форме выразить суть представленного материала.
Лекция 1. Тестирование и его роль в процессе разработки ПО
Цель : определить понятие тестирования, его отличие от процесса отладки, рассмотреть роль тестирования в качестве этапа разработки ПО. Определение тестирования
Наверное, не существует такого термина из области разработки программного обеспечения, вокруг которого велись бы такие споры, как вокруг тестирования. Согласно Майерсу [1], «тестирование – это процесс выявления ошибок в программе». Другая точка зрения гласит [4,с.13], что «тестирование – это, прежде всего, оценка промежуточных продуктов, созданных в процессе разработки ПО». Конечно, следует признать ошибочными определения, в которых тестирование признается как процесс, убеждающий, что в программе ошибок нет. Ошибки в программах есть всегда, только они обнаруживаются или в процессе эксплуатации (что, в принципе, недопустимо) или в процессе тестирования. Есть также мнение, что тестирование – это процесс выявления несоответствия программы ее функциональной спецификации. Еще одно толкование: «Тестирование - это любая деятельность, направленная на обнаружение ошибок в программном продукте». Какое определение следует признать правильным? На основе рассмотренных определений, в каждом из которых присутствует одна из сторон рассматриваемого предмета, дадим, на наш взгляд, более полное:
Тестирование программного обеспечения – это комплекс организационных, технических и методических мероприятий, направленный на исследование программы в виде исходного текста или исполняемого модуля с целью выявления дефектов в работе и отклонений от функциональной спецификации.
По-существу, тестирование представляет собой процесс выявления наличия дефектов в программных системах, которые могут быть внесены на стадии проектирования и кодирования. Дефект может быть привнесен и на этапе сопровождения программы, после некоторого времени ее эксплуатации.
Разработчик программного обеспечения и специалист, проводящий его тестирование, находятся по разные стороны баррикад. Разработчик стремится избежать ошибок, тестирующий стремится обнаружить ошибки, разработчик маскирует недостатки своих методов, тестирующий их находит. Данная борьба полезна для создаваемого программного продукта и цикла разработки в целом, но она никогда не должна приводить к столкновениям между программистами на разных ее этапах.
Тестирование и отладка
Есть еще одно распространенное заблуждение, связанное с тестированием. Оно заключается в том, что в процессе тестирования ошибки должны исправляться [4, c.18]. Таким образом, тестирование путают с отладкой. Тестирование представляет собой процесс выявления отказов из-за наличия в программе ошибок, в то время как отладка представляет собой процесс локализации источников отказов и внесение в программу соответствующих исправлений. Другими словами, в тестирование не входит отладка, или действия, по устранению последствий ошибок. Следует отметить, что часто процессы тестирования и отладки выполняются одними теми же специалистами и могут пересекаться. Для небольших программных комплексов эти процессы вообще сливаются. Тем не менее, для уяснения методологии тестирования мы должны четко разделить эти два вида деятельности.
Тестирование и качество ПО
Понятие тестирования тесно связано с другим важнейшим понятием – качеством ПО. Тестирование позволяет добиться того, чтобы готовый продукт соответствовал требованиям технического задания, защитить пользователей от отказов ПО, которые могут повлечь за собой потери времени, материальных ценностей и даже человеческих жизней. Однако, как утверждают Макгрегор и Сайкс [4,с.19], «тестирование – это еще не обеспечение качества». Тестирование представляет собой необходимую, но недостаточную часть любого процесса обеспечения качества. Обеспечение качества подразумевает деятельность, ориентированную на предотвращение появления дефектов в программном продукте. Группа, отвечающая за обеспечение качества, устанавливает стандарты, которым должны следовать проектировщики, чтобы создавать высококачественные продукты.
Никакое тестирование не решает задачи повышения качества программной системы. Оно содействует распознаванию отказов, благодаря чему разработчики могут искать ошибки и устранять их. Чем тщательнее мы тестирует систему, тем больше убеждаемся в ее правильном или неправильном функционировании, но не можем гарантировать 100% качества работы. Тестирование также содействует повышению качества программного продукта, помогая выявлять проблемы на ранних стадиях процесса разработки. Эти стадии наиболее ответственные, поскольку допущенные здесь ошибки повлияют на все последующие этапы, и эти ошибки трудно будет обнаружить потом.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|