Главная страница
Навигация по странице:

  • регистрации 24729912 от 11.03.97. Гигиеническое заключение № 77.99.6.953.П.438.2.99 от 04.02.1999 Оглавление Часть I. Основы 19

  • Глава 3. Типы тестов и их роль в процессе разработки программного обеспечения 50

  • Глава 4. Программные ошибки 93 Качество 93 Что такое программная ошибка 95 Категории программных ошибок 95 Глава 5. Документирование и анализ ошибок 101

  • Часть II. Приемы и технологии тестирования 129 Глава 6. Система отслеживания проблем 130

  • Глава 7. Разработка тестов 180

  • Глава 8. Тестирование принтеров и других устройств 2 0 8 Общие вопросы конфигурационного тестирования 209 Тестирование печати 211 Глава 9. Адаптационное тестирование 2 3 7

  • Глава 10. Тестирование документации 2 4 8

  • Глава 1 1 . Инструментальные средства тестировщика 2 6 4

  • Глава 12. Планирование и документация 2 8 4

  • Глава 14. Управление группой тестирования 4 2 8

  • Приложение. Распространенные программные ошибки

  • Для кого предназначена эта книга

  • Программное обеспечение, к которому предъявляются повышенные требования по надежности

  • Тестирование-книга. Ю. Н. Артеменко Научный редактор


    Скачать 6.27 Mb.
    НазваниеЮ. Н. Артеменко Научный редактор
    Дата09.10.2019
    Размер6.27 Mb.
    Формат файлаpdf
    Имя файлаТестирование-книга.pdf
    ТипКнига
    #89291
    страница1 из 49
      1   2   3   4   5   6   7   8   9   ...   49

    ББК 32.973
    К 81
    Канер Сэм и др.
    К 81 Тестирование программного обеспечения. Фундаментальные концепции менеджмента бизнес-приложений: Пер. с англ./Сэм Канер, Джек Фолк, Енг
    Кек Нгуен. — К.: Издательство «ДиаСофт», 2001. — 544 с.
    ISBN 966-7393-87-9
    Книга именитых специалистов в области разработки программного обеспече­
    ния посвящена одному из наиболее важных и нетривиальных аспектов в рамках процесса создания сложных программных систем. Книгу отличает, прежде всего, привязка к условиям реального мира на примерах известных компаний-разработ­
    чиков, находящихся в Силиконовой долине. Подробно рассматривается широкий спектр вопросов: от организации процесса тестирования до собственно тестиро­
    вания проекта, кода, документации и т.д.
    Для специалистов в области разработки программного обеспечения.
    ББК 32.973
    Научное издание
    Канер Сэм и др.
    ТЕСТИРОВАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ.
    ФУНДАМЕНТАЛЬНЫЕ КОНЦЕПЦИИ МЕНЕДЖМЕНТА БИЗНЕС-ПРИЛОЖЕНИЙ
    Главный редактор Ю.Н.Артеменко
    Научный редактор О.В.Здир
    Литературный редактор А.В.Штин
    Переводчик О.В.Здир
    Верстка Т.Н.Артеменко
    Главный дизайнер О.А.Шадрин
    Н/К
    Сдано в набор 13.03.01. Подписано в печать 13.05.01. Формат 60x84/16. Бумага офсет­
    ная. Гарнитура Таймс.
    Печать офсетная. Усл.печл. 40.80. Усл.кр.отт. 40.80
    Тираж 3000 экз. Заказ № 1-78.
    Издательство «ДиаСофт», Киев-55, а/я 100, тел./факс (044) 212-1254. e-mail: books@diasoft.kiev.ua, http://www.diasoft.kiev.ua.
    Authorized translation from the English language edition published by International Thomson Computer
    Press. Copyright © 1999
    All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from the Publisher.
    Russian language edition published by DiaSoft Ltd. Copyright © 2001
    Лицензия предоставлена издательством International Thomson Computer Press, подразделение
    International Thomson Publishing Inc.
    Все права зарезервированы, включая право на полное или частичное воспроизведение в какой бы то ни было форме.
    ISBN 966-7393-87-9 (рус.) © Перевод на русский язык. Издательство «ДиаСофт», 2001
    ISBN 1-85032-847-1 (англ.) © International Thomson Publishing Press, 1999
    © Оформление. Издательство «ДиаСофт», 2001
    Свидетельство о регистрации 24729912 от 11.03.97.
    Гигиеническое заключение № 77.99.6.953.П.438.2.99 от 04.02.1999
    Оглавление
    Часть I. Основы 19
    Глава 1. Пример серии тестов 20
    Первый цикл тестирования 20
    Второй цикл тестирования 32
    Что дальше? 37
    Глава 2. Желаемое и действительное
    в жизни тестировщика 38
    Полностью протестировать программу невозможно 39
    Цель тестировщика — проверка правильности программы? 46
    Итак, для чего же тестируют программы? 49
    Глава 3. Типы тестов и их роль в процессе
    разработки программного обеспечения 50
    Обзор стадий разработки 55
    Стадии планирования 57
    Тестирование на этапе планирования 58
    Стадии проектирования 62
    Тестирование на этапе проектирования 66
    Тестирование "стеклянного ящика" на стадии кодирования 69
    Регрессионное тестирование 80
    Тестирование "черного ящика" 80
    Сопровождение 90
    Глава 4. Программные ошибки 93
    Качество 93
    Что такое программная ошибка? 95
    Категории программных ошибок 95
    Глава 5. Документирование и анализ ошибок 101
    Отчет следует составлять немедленно 102
    Структура отчета о проблеме 103
    Каким должен быть отчет о проблеме 113
    Анализ воспроизводимой ошибки 116
    Методика анализа воспроизводимой ошибки 119
    Поиск способа воспроизведения ошибки 122

    6 Тестирование программного обеспечения
    Часть II. Приемы и технологии тестирования 129
    Глава 6. Система отслеживания проблем 130
    Основное назначение системы отслеживания проблем 134
    Задачи системы 135
    Процесс отслеживания проблемы 135
    Пользователи системы отслеживания проблем 144
    Реализация базовых функций системы отслеживания проблем.... 158
    Дополнительные замечания о документировании проблем 169
    Терминология 178
    Глава 7. Разработка тестов 180
    Характеристики хорошего теста 182
    Классы эквивалентности и граничные условия 183
    Тестирование переходов между состояниями 193
    Условия гонок и другие временные зависимости 194
    Нагрузочные испытания 196
    Прогнозирование ошибок 196
    Тестирование функциональной эквивалентности: автоматизация, анализ чувствительности и случайный ввод .....197
    Регрессионное тестирование: успешно ли исправлена ошибка .... 204
    Регрессионное тестирование: стандартная серия тестов 205
    Выполнение тестов 206
    Глава 8. Тестирование принтеров и других устройств 2 0 8
    Общие вопросы конфигурационного тестирования 209
    Тестирование печати 211
    Глава 9. Адаптационное тестирование 2 3 7
    Изменен ли исходный код? 238
    Привлекайте к работе специалистов, свободно владеющих языком 239
    Встроен ли текст в программный код? 239
    Перевод длиннее исходного текста 239
    Наборы символов 240
    Клавиатура 240
    Фильтрация ввода 241
    Загрузка, сохранение, импорт и экспорт символов основного и расширенного набора ASCII 241
    Язык и операционная система 242
    Клавиши вызова 242
    Сборные сообщения 242
    Оглавление 7
    Идентификаторы сообщений об ошибках 243
    Правила переноса 243
    Правописание 243
    Порядок сортировки 243
    Преобразование текста к верхнему и нижнему регистру 244
    Правила подчеркивания 244
    Принтеры 244
    Размеры бумаги 244
    Процессоры и видео 244
    Форматы данных и опции настройки 245
    Единицы измерения 245
    Изображения, связанные с конкретной культурой 246
    Выходные данные, связанные с конкретной культурой 246
    Совместимость с местными продуктами 246
    Не будьте наивными 246
    Автоматизированное тестирование 247
    Глава 10. Тестирование документации 2 4 8
    Хорошая документация 249
    Цели тестировщика документации 251
    Как тестирование документации повышает надежность программного продукта 252
    Назначьте технического редактора 254
    Работа с руководством в процессе его разработки 254
    Интерактивная справка 262
    Глава 1 1 . Инструментальные средства тестировщика 2 6 4
    Базовые инструменты тестировщика 265
    Автоматизация приемочного и регрессионного тестирования 267
    Стандарты 277
    Тестирование "стеклянного ящика" 280
    Глава 12. Планирование и документация 2 8 4
    Общее назначение тестового плана: продукт или инструмент? .... 286
    Цели, преследуемые при планировании тестов и разработке документации 288
    Тесты каких типов следует фиксировать в плановых документах .. 296
    Стратегия разработки компонентов тестового плана 300
    Компоненты плана тестирования 307
    Документирование тестовых материалов 339
    Заключение 355

    8 Тестирование программного обеспечения
    Часть III. Управление проектами и группами 357
    Глава 13. Объединяющая .. 3 5 8
    Чем приходится поступаться разработчикам программного обеспечения 360
    Модели разработки программного обеспечения 362
    Затраты на качество 371
    Последовательность этапов проекта 373
    Проектирование продукта 381
    Реализация базовых функций 388
    Почти альфа 389
    Альфа 392
    Пре-бета 404
    Бета 405
    Замораживание пользовательского интерфейса 415
    Подготовка к финальному тестированию 418
    Последняя проверка целостности 423
    Выпуск : 425
    После выпуска 426
    Глава 14. Управление группой тестирования 4 2 8
    Роль группы тестирования 430
    Группа тестирования — не избавление программистов 434
    Альтернатива: независимые тестовые агентства 435
    Советы по планированию 439
    Персонал 447
    Приложение. Распространенные программные ошибки .... 4 5 3
    Ошибки пользовательского интерфейса 455
    Обработка ошибок 486
    Ошибки, связанные с граничными условиями 490
    Ошибки вычислений 493
    Начальное и последующие состояния 496
    Ошибки управления потоком 500
    Ошибки обработки или интерпретации данных 515
    Ситуации гонок 523
    Повышенные нагрузки 527
    Аппаратное обеспечение 531
    Контроль версий и идентификаторов 536
    Ошибка выявлена и забыта 542
    Предисловие
    Тестирование программного обеспечения — это книга, написанная профес­
    сионалами для профессионалов. Что такое тестирование потребительских и деловых программ в условиях, приближенных к боевым, мы знаем не понаслышке, поскольку выполняли эту работу для самых известных про­
    изводителей программного обеспечения Кремниевой Долины. Лежащее перед вами руководство разрабатывалось для наших собственных сотрудни­
    ков.
    О том, как тестировать программные продукты, от которых требуется повышенная надежность, написано немало хороших книг. От надежного функционирования определенных типов программного обеспечения может зависеть успех бизнеса — работы финансовых или промышленных компа­
    ний — или даже... человеческая жизнь. Поэтому на его самое тщательное проектирование, разработку и тестирование не жалеют ни времени, ни денег. Сотрудникам тестовых групп предоставляется полный доступ к ис­
    ходному коду программ, причем на столько времени, сколько потребуется для его подробного изучения.
    Сверхнадежное программное обеспечение можно сравнить с "Роллс- ройсом" — роскошно, но дорого. Однако не все программное обеспечение таково, и дело не только в его цене. Тестирование программных продук­
    тов для среднего бизнеса, академических учреждений и личного пользова­
    ния проводится в более сжатые сроки и скромнее оплачивается, но их качество вполне удовлетворяет требованиям рынка — это полезные и на­
    дежные программы, многими из которых производители могут заслужен­
    но гордиться.
    Так как же организовать тестирование программных продуктов, чтобы его результаты можно было назвать сверхнадежными? И как удается груп­
    пам тестирования обычного потребительского ПО в условиях сжатых сро­
    ков, малочисленной команды и ограниченных средств выпускать прекрасные и вполне конкурентоспособные продукты? Обо всем этом вы узнаете из книги Тестирование программного обеспечения.
    Чего в этой книге нет
    Часто авторы книг утверждают, что для успешного тестирования необ­
    ходимо, чтобы все было по правилам: документация, включающая необхо­
    димые для разработки спецификации была полной и своевременной, при проектировании и написании кода применялась правильная и самая совре­
    менная методология и т.д.

    10 Тестирование программного обеспечения
    Эта книга — о тестировании в условиях, когда те, с кем вы
    работаете, не следуют, не хотят и не должны следовать
    правилам.
    На деле при разработке программного обеспечения бюджет всегда слишком мал, сотрудников не хватает, согласия между ними для выработ­
    ки единой линии добиться трудно, а работа при этом должна быть выпол­
    нена "на вчера".
    Качество большого продукта зависит от работы каждого, кто его проек­
    тирует, программирует, тестирует и документирует. Никакие стандарты и спецификации, никакой контроль и отслеживание изменений не гаранти­
    руют качества продукции. Все зависит только от людей — их работоспособ­
    ности, мастерства и умения работать в команде. Только это определяет результат, а никак не правила.
    У команды разработчиков имеется определенное видение будущего продукта, горячее желание осуществить задуманное и понимание того, что во многом работа будет делаться методом проб и ошибок. К тому време­
    ни, когда каждый аспект разработки прорисуется до деталей, будет сфор­
    мирована рабочая версия проекта, которую смогут понять и охватить целиком один-два ведущих специалиста. Эта версия и называется специфи­
    кацией. Спецификация не выгравирована на камне: позднее она не раз еще будет пересматриваться и усовершенствоваться, пока не будет достигнута полная согласованность со всей системой. И выполняя тестирование, вы тоже примете участие в этой работе.
    В реальной жизни изменения вносятся в продукт даже в самом конце разработки. Если, например, программа разрабатывается на продажу, ваши пользователи — потенциальные пользователи — ни на какую спецификацию не соглашались. И если конкурент создает нечто более привлекательное, отвечать приходится быстро.
    Как часто приходится отказываться от внесения в программу полезных дополнительных возможностей из-за нехватки времени. И часто первая рабочая версия фрагмента, которую никак нельзя назвать профессиональ­
    ной, остается последней, поскольку переписывать ее некогда. Бывает, что программист "втихаря" по собственной инициативе все же выполнит нуж­
    ную работу и без предупреждения внесет в проект значительные измене­
    ния. Такая работа делается не по обязанности, сверх положенных 40 часов в неделю. Она может значительно улучшить проект, а может и серьезно его дестабилизировать на некоторое время. Но каким бы ни был результат, личная инициатива всегда направлена на улучшение проекта.
    Изменения в конце разработки есть всегда, и они нужны. Главное — справиться с ними с минимумом потерь. Не стоит разводить бюрократию,
    Предисловие
    11
    пытаясь запретить такие изменения. Профессионализм сотрудников груп­
    пы тестирования заключается в том, чтобы принять реальность такой, как она есть, не жалуясь и не пытаясь бороться с ней запретами, и успешно закончить тестирование продукта вместе с внесенными изменениями.
    Для кого предназначена эта книга
    Эта книга предназначена для того, кто выполняет тестирование про­
    граммного кода, обычно написанного кем-то другим. В ней обсуждаются вопросы и решения, которые на наш взгляд интересны и полезны такому человеку. Поэтому рассказ наш не академичен, в нем не затрагиваются такие классические темы, как доказательства правильности программного кода. Мы постарались больше уделить внимания темам, не характерным для учебников, как, например, межличностные взаимоотношения и корпо­
    ративная политика. Судить о работе других людей приходится даже начи­
    нающему тестировщику — в этом суть тестирования. За высказывание своих суждений тестировщики нередко подвергаются нападкам со стороны разработчиков. (Бывает, что и заслуженно.) Поскольку группа тестирования работает с программой последней и ее результаты у всех на виду, ее ответ­
    ственность всегда оказывается больше возможностей — положение поли­
    тически самое невыгодное. Решения этой проблемы у нас нет. Однако мы готовы поделиться своим опытом в том, как повысить эффективность ра­
    боты и избежать некоторых неприятных моментов и ошибок.
    Поговорим мы также и об управлении проектом. Оценка, планирование и составление календарного плана работ по тестированию программного продукта — задача не из легких, ведь конечная точка фактически не опре­
    делена. Всегда остаются тесты, которые еще полезно было бы провести, и риск, связанный с отказом от их выполнения. Специалист по тестированию должен это хорошо понимать и принимать во внимание при планировании работ. Например, можно отложить важный тест, чтобы в совершенстве выполнить другую часть работы, а потом обнаружить, что времени на от­
    ложенный тест уже нет. В результате, пытаясь выполнить работу лучше, вы на самом деле сделаете ее хуже. К сожалению, ситуация эта очень типич­
    на. Поэтому в нашей книге много внимания уделено вопросам эффектив­
    ности и правильной расстановки приоритетов.
    Бывает, что при тестировании программного продукта приходится иметь дело с ошибками, допущенными еще на стадии проектирования. Програм­
    ма может в точности соответствовать спецификации, но, если специфика­
    ция содержит ошибки, такая программа, увы, для работы не годится.
    Часто в литературе, посвященной вопросам надежности программного обеспечения и методикам его тестирования, совсем не уделяется внимания пользовательскому интерфейсу программ. Ее авторы считают, что этим

    12 Тестирование программного обеспечения
    вопросом должен заниматься специалист по анализу человеческого факто­
    ра. Мы же с этим абсолютно не согласны. (И даже имеющийся в нашем коллективе специалист по анализу человеческого фактора с этим не согла­
    сен.) Ведь надежность системы зависит от того, насколько хорошо работают вместе все ее составляющие, включая и людей, которые используют програм­
    му.
    Задача специалиста по тестированию — выявить все проблемы, которые могут возникнуть при работе с продуктом, и сделать все возможное для улучшения его качества. Помните, что вы тестируете не просто програм­
    му, вы тестируете систему человек-компьютер, и отчеты о ненадежности или неэффективности взаимодействия между человеком и компьютером не менее важны, чем остальные. Вы один из немногих специалистов, анали­
    зирующих продукт во всех деталях, причем непосредственно перед его пре­
    доставлением пользователю. И поэтому кто же, как не вы, сможет выявить и устранить подобные проблемы.
    Прочитав разделы нашей книги, посвященные пользовательскому ин­
    терфейсу, вы не станете в этом вопросе специалистом — книга не претен­
    дует на абсолютную полноту освещения этой темы. Может быть, некоторые из ваших предложений будут неверны. Но все же предоставьте отчеты и на тему интерфейса. Они очень важны. И некоторые из них обязательно помогут улучшить конечный продукт.
    Программное обеспечение, к которому
    предъявляются повышенные
    требования по надежности
    При создании определенных типов программного обеспечения отступ­
    ление программистов и управляющего персонала от стандартизированной методологии абсолютно недопустимо. Например, программы, управляющие ядерным реактором, должны быть специфицированы и документированы самым тщательным образом. И в случае их сбоя отчеты о тестировании становятся юридическими документами. Для тестирования таких проектов выделяются огромные средства и этим занимаются очень большие группы специалистов, называемые группами гарантии качества (Quality Assurance).
    Для обучения сотрудников таких групп больше подойдут другие книги — строго академического характера.
    Но даже на таких проектах в конце работы часто подключаются груп­
    пы приемки, бюджеты которых мизерны, а сроки предельно коротки.
    Сотрудники таких групп не участвуют в разработке и часто из-за недостат­
    ка времени не могут по-настоящему серьезно протестировать продукт. Если
    Предисловие 13
    вы работаете именно в таких условиях, эта книга будет для вас полезнее, чем традиционные учебники.
    Можно ли назвать эту книгу
    учебником?
    Мы принимали на работу множество специалистов по тестированию, но еще ни разу не встречали выпускника компьютерного факультета, который узнал бы что-нибудь полезное о тестировании из университетского курса.
    Организациями Association for Computing Machinery (Ассоциация вы­
    числительной техники) и IEEE Computer Society (Компьютерное сообще­
    ство IEEE) недавно был опубликован документ Computing Curricula 1991
    (рекомендованный учебный план компьютерных факультетов), который в значительной степени определит содержание университетских учебных программ в области компьютерных наук на все следующее десятилетие.
    Время, отводимое на изучение технологий тестирования, обычно составляет несколько часов на четырехгодичный курс. В документе Computing Curricula
    предлагается ввести необязательный курс под названием Advanced Software
    Engineering (Продвинутый курс разработки программного обеспечения), вклю­
    чающий среди прочих и темы тестирования, но идеи о специальном кур­
    се тестирования в этом руководстве нет.
    Итак, не похоже, что в ближайшие десять лет выпускники компьютер­
    ных факультетов университетов будут хоть что-нибудь знать о тестирова­
    нии программных продуктов.
    Но почему бы этот пробел не заполнить колледжам? Associate of
    Sciences (Ассоциация наук), у которой есть несколько курсов по тестиро­
    ванию, дополненных вводным курсом программирования и управления проектами, вполне могла бы с этим справиться. К тому же стартовая зара­
    ботная плата специалистов по тестированию достаточно высока. Так что, по нашему мнению, колледжам стоит подумать о подготовке таких специ­
    алистов — это дело как раз для них.
    Работая над последним изданием этой книги, мы внесли в нее много дополнений, рассчитанных именно на студентов колледжей — тех, которым никогда не приходилось бывать с тестовых лабораториях. Надеемся также, что книга будет полезна тем колледжам, которые захотят включить в свои программы курс тестирования делового программного обеспечения.

    14 Тестирование программного обеспечения
    Структура книги и
    принятые в ней
    соглашения
    Сначала несколько замечаний о
    структуре книги
    Эта книга представляет собой учебное пособие. В вопросах, которым она посвящена, многие из ее читателей будут новичками. Будут ее читать и опытные специалисты, обучившиеся своему делу на практике и никогда еще не читавшие подобных учебников. Планируя структуру книги, имен­
    но на таких читателей мы и ориентировались.
    Представленная в книге информация разделена по степени сложности, чтобы читатель мог осваивать ее постепенно. Вместо того чтобы пытаться осветить все стороны вопроса в одном разделе, мы сначала рассказываем о его сути, а в следующих разделах предлагаем дополнительные сведения, позволяющие понять его глубже или изучить подробнее.
      1   2   3   4   5   6   7   8   9   ...   49


    написать администратору сайта