Тестирование-книга. Ю. Н. Артеменко Научный редактор
Скачать 6.27 Mb.
|
Обработка ошибок Программа должна корректно реагировать на неправильные, нестандар тные или не предусмотренные документацией действия пользователей. Постарайтесь сделать как можно больше ошибок и своими глазами посмот реть на каждое описываемое в документации сообщение. Может быть, вы столкнетесь с сообщениями об ошибках, которых в документации нет. Проводя такое тестирование, вы соберете наибольший урожай ошибок, поскольку этой части программы обычно уделяется меньше всего внима ния. Защита Сложно ли неавторизированному пользователю получить доступ к си стеме? Что для этого нужно? О тестировании защиты программного обес печения немного рассказывается у Бейзера (Beizer, 1990) и более подробно — у Фернандеса (Fernandez, 1981). Совместимость и преобразование форматов данных Два программных продукта называют совместимыми (compatible), если они могут работать с одними и теми же файлами данных или если они благополучно сосуществуют в оперативной памяти компьютера и работают, Глава 3: Типы тестов ... 89 не мешая друг другу. Поэтому, получив задание проверить программы на совместимость, обязательно выясните, о какой именно совместимости идет речь. Если две программы не могут непосредственно работать с данными друг друга, это еще не значит, что они абсолютно несовместимы. Возможно, что пользователи смогут воспользоваться специальными конвертерами — про граммами-посредниками, преобразующими данные из одного формата в другой. Одной из самых распространенных ситуаций, требующих конвертиро вания данных, является выпуск новой версии программы. В этом случае новая программа должна уметь определить, что предложенные ей данные сохранены в формате предыдущей версии, и самостоятельно выполнить их преобразование. Кроме того, программы одного класса часто умеют читать и сохранять данные в формате друг друга. Это позволяет пользователям совершенно безболезненно переходить с одной программы на другую или даже эксплуатировать их совместно. Аппаратные конфигурации Очень важно, чтобы программа успешно работала на компьютерах са мых разнообразных конфигураций. Даже если программа ориентирована на конкретную модель процессора, все равно в системах, где ей придется работать, периферийные устройства будут различны. Поэтому вам нужно выявить те устройства, с которыми программа должна быть совместима, но на деле не работает. Установка и обслуживание Вместе с программным продуктом обычно поставляется и программа его установки. Она автоматизирует процесс интеграции продукта в систе му и его настройки для нужд конкретного пользователя. Работает ли эта программа? Насколько она проста и удобна? Сколько времени в среднем требуется на установку? Если программу будет устанавливать не пользователь, а специалист, например сотрудник фирмы-дилера, возникает и еще несколько вопросов, связанных с ее обслуживанием. Например, если произойдет сбой програм мы, как быстро квалифицированный специалист сможет устранить его последствия или установить заплатку? Эффектные тесты Есть среди тестов и такие, которые служат не для реальной работы, а Для того, чтобы произвести впечатление на публику. Их проводят перед зрителями (например, администрацией, пришедшей посмотреть, как идет работа), чтобы показать, как "ужасно нестабильна" программа и как про фессиональны тестировщики. 90 Часть I: Основы По-настоящему эффектный тест должен быть очень простым и приво дить к немедленному сбою. Как подбирать такие тесты, сказать сложнее. Здесь приходится основываться на своем собственном профессиональном опыте, знании слабых мест программиста, операционной системы и резуль татах тестирования аналогичных продуктов. Сопровождение Значительная часть средств, которые компания затрачивает на про граммный продукт, уходит уже после завершения его разработки. Вот ка кие данные приводят в своем учебнике Мартин и Мак-Клер (Martin & mcClure, 1984). На сопровождение программного обеспечения затрачивается 67% его общей стоимости. Распределяется эта сумма так. • 20% бюджета сопровождения тратится на исправление ошибок • 25% уходит на адаптацию продукта к новому аппаратному обеспе чению и новой программной среде • 6% тратится на исправление документации • 4% тратится на повышение производительности • 42% тратится на внесение изменений и усовершенствований • 3% на другие нужды На этапе сопровождения программного продукта в вашей работе не будет ничего особенного — вы будете делать то же самое, что уже делали в конце разработки во время функционального и системного тестирования. Если у вас есть серия регрессионных тестов, которые к тому же еще и частично автоматизированы, вам остается только повторять их после каж дого изменения программы. И не забывайте, что сделанные на этом этапе изменения, как и всякие другие, чреваты побочными эффектами. Поэто му проявите предусмотрительность и обязательно проверьте не только измененный фрагмент, но и всю программу в целом. Адаптационное тестирование Этот вид тестирования выполняется только на этапе сопровождения, когда программа переносится с одной аппаратной или программной плат формы на другую. Если программа должна работать на нескольких типах компьютеров, нужно проверить ее совместимость с каждым из них. Вот краткое описание стратегии такого тестирования. • Общее функционирование. Выполните серию регрессионных тестов. Если ее у вас нет, разработайте набор тестов, выполняющих каждую Глава 3: Типы тестов ... 91 из основных функций программы. При этом постарайтесь хотя бы частично проверить программу как на граничных, так и на основ ных данных. Если какая-то из функций плохо совместима с новой платформой, то, скорее всего, она не будет работать вообще, так что не стоит опасаться, что возникшие проблемы останутся незамечен ными. Как правило, при переносе программы на другую платформу тесты на общее функционирование она проходит вполне успешно. Поэтому не стоит тратить на них слишком много времени. • Клавиатура. Если у компьютера специфическая клавиатура, в рабо те с ней могут быть небольшие отклонения от стандарта. Поэтому нужно обязательно нажать каждую клавишу, и к тому же в различ ных ситуациях. Особое внимание обратите на управляющие клави ши — • Терминал. Проверьте, как программа работает с новым терминалом. Как отображается графика? Если программа работает в текстовом режиме, то все ли символы отображаются правильно, нет ли про блем с цветом, подчеркиванием или подсветкой? • Номер версии и идентификация системы. Если номер версии про граммы изменился, убедитесь, что он нигде не остался старым. Если при запуске программа идентифицирует аппаратуру или операцион ную систему, убедитесь, что она делает это правильно. • Диски. Емкость и формат дисков могут сильно отличаться. Убеди тесь, что программа правильно работает с файлами, размер которых кратен 2. Если новая система поддерживает размер дисков, которо го не поддерживала старая, попробуйте поработать с таким большим диском. • Обработка ошибок операционной системой. Как действует операци онная система в таких ситуациях, как ошибка доступа к диску? Позволит ли она прикладной программе самой обработать эту ситу ацию и выдать корректное сообщение или просто остановит про грамму и сообщит о системной ошибке? А как сам программный продукт защищает пользователя от ошибок и странностей операци онной системы? • Установка. При установке программного продукта инсталляционной программе может потребоваться определить аппаратную и программ ную конфигурацию системы. Убедитесь, что она делает это правиль но. Протестируйте программу установки как можно тщательнее. Выполните установку продукта в системах с различной конфигура цией, в сети и на отдельном компьютере, попробуйте установить его поверх предыдущей версии. 92 Часть I: Основы • Совместимость. Предположим, что на исходном компьютере ваша программа была совместима с программой Икс. Если программа Икс также была перенесена на новый компьютер, остались ли они совме стимы? • Интерфейс. В различных графических средах (Windows, Mac, AmigaDOS, Motif и т.п.) действуют различные соглашения о пользо вательском интерфейсе. Перейдя в новую среду, программа должна выглядеть в ней достаточно естественно. • Другие изменения. Поинтересуйтесь у программиста, какие еще из менения он вносил в программу для ее адаптации, и как следует их протестируйте. Если программный продукт впервые адаптируется к новой платформе, не рассчитывайте на быстрый успех. Тестирование может занять у вас четверть того времени, которое вы потратили на разработку. Перенос на следующую платформу может пройти и быстрее, особенно если эти плат формы достаточно совместимы. Глава Программные ошибки Назначение этой главы Главной задачей тестировщика является поиск и документирование оши бок. Найденные ошибки исправляются, решаются описанные тестировщи- ком проблемы, и тем самым улучшается качество программного продукта. В этой короткой главе мы определим понятия качества и программных ошибок, а также расскажем о том, какими бывают про граммные ошибки и как они классифицируются. Зная своего противни ка, вы сможете бороться с ним более целенаправленно. Более подробно программные ошибки описываются в приложении, где кроме основной классификации, разделяющей все возможные ошибки на 13 категорий, рассматривается около 400 их видов. Библиография Хорошими пособиями для изучения вопросов качества программных про дуктов и классификации возможных ошибок являются книги Деминга (Deming, 1982), Фейгенбаума (Feigenbaum, 1991), Ишикавы (Ishikawa, 1985) и Джурана (Juran, 1989). Качество Если программный продукт создается по заказу конкретного клиента, тогда клиент может принимать в его проектировании самое непосредствен ное участие. Он предоставляет подробную спецификацию с описанием своих требований и собственного видения продукта, а разработчик согла шается все это реализовать. В таком случае качество будет означать точное соответствие спецификации клиента. 4 94 Часть I. Основы У большинства разработчиков программного обеспечения таких грамотных и обстоятельных клиентов нет. Для них критерием качества служит не соответствие спецификации, а то, насколько пользователи удовлетворены программным продуктом и сопутствующими услугами компании. Спецификация — спецификацией, но если конечный результат пользо вателю не нравится, значит, его качество не на высоте. И не важно, что пользователь ознакомился со спецификацией и согласился с ней или даже сам ее составил. Если в конечном счете продукт его не удовлетворяет, то только это и будет иметь для него значение. Еще одной составляющей качества является надежность программного продукта. А надежность его тем выше, чем реже в нем происходят сбои, особенно такие, которые влекут за собой потерю данных и другие непри ятные последствия. Хотя надежность программы исключительно важна, она не является единственным критерием ее качества, и не правы те тестировщики, кото рые так думают. Если программа не позволяет пользователю выполнить что-то, что он считает важным, пользователь не будет ею доволен. А если пользователь недоволен, значит, качество программы нельзя назвать высо ким. Итак, качество программы определяется: • возможностями, благодаря которым она понравится пользователю; • недостатками, которые вынуждают пользователя приобрести другую программу. Главное, что тестировщик может сделать для улучшения качества про граммы, — это выявить ее недостатки, сбои в ее работе и явные ошибки. Если руководитель проекта примет решение в последний момент добавить какую-нибудь очень важную функцию, это тоже может способствовать повышению качества, даже несмотря на то, что от этого программа станет менее надежной. Ни надежность, ни функциональность программы не могут быть абсолютными, и ее качество в конечном счете означает разум ный баланс между этими двумя характеристиками. (Подробнее данный вопрос рассматривает в своей книге Джуран (Juran, 1989).) Оставшаяся часть этой главы посвящена недостаткам и ошибкам про грамм. Как их выявить и как определить степень их серьезности? Глава 4: Программные ошибки 95 Что такое программная ошибка? Одним из распространенных определений программной ошибки явля ется расхождение между программой и ее спецификацией. Не пользуйтесь этим определением. Расхождение между программой и ее спецификацией является ошибкой тогда, и только тогда, когда спецификация существует и она правильна. Программа, которая соответствует плохой спецификации, и сама никуда не годится. Поэтому следующие два определения более точны. • Если программа не делает того, чего пользователь от нее вполне обоснованно ожидает, значит, налицо программная ошибка (Майерс (Myers, 1976, с. 6)). • Не существует ни абсолютного определения ошибок, ни точного критерия наличия их в программе. Можно лишь сказать, насколько программа не справляется со своей задачей, — это исключительно субъективная характеристика (Бейзер (Beizer, 1984, с. 12)). Конечно, второе определение не касается таких явных ошибок, как ошибки вычислений по точно известным формулам. Майерс вообще ис ключил из своего определения ошибки, связанные с человеческим факто ром. Очевидно, что это совершенно самостоятельная группа ошибок, требующая специфического подхода к их анализу и устранению. Бывает довольно сложно убедить программиста, что недостаток пользовательско го интерфейса является ошибкой или что эта ошибка очень серьезна или даже в том, что тестировщик вообще имеет право заниматься такими воп росами. Но пользователи жалуются на подобные ошибки не меньше, чем на очевидные сбои. Категории программных ошибок В этой главе описываются 13 категорий, охватывающих все возможные ошибки в программном обеспечении. Несколько отличающуюся, но также очень полезную классификацию предлагает в своей книге Бейзер (Beizer, 1990). Ошибки пользовательского интерфейса С программой может быть трудно (или даже невозможно) работать по множеству причин. Мы объединили их все под названием "ошибки пользо вательского интерфейса". Вот несколько разновидностей таких ошибок. 96 Часть I: Основы Функциональность Функциональные недостатки имеют место, если программа не делает того, что должна, выполняет одну из своих функций плохо или не полно стью. Хотя функции программы достаточно подробно описываются в ее спецификации, окончательное представление о том, что программа долж на делать, существует только в умах ее пользователей. Функциональные недостатки есть абсолютно у всех программ, поскольку ожидания пользователей — вещь субъективная: у разных пользователей они различны. Оправдать их все просто невозможно, а попытка этого добиться может привести лишь к усложнению и потере концептуальной целостности программного продукта. Однако во многих случаях функциональный недостаток вполне очеви ден. Если предусмотренную программой задачу трудно выполнить, если она решается неуклюже или при определенных обстоятельствах вообще не может быть решена — проблема налицо. И когда ожидания пользователей вполне разумны и обоснованны, эту проблему без колебаний можно на звать ошибкой. Взаимодействие программы с пользователем Насколько сложно пользователю разобраться в том, как работать с программой? Откуда вообще он об этом узнает? Как обстоит дело с экран ными инструкциями и подсказками? Достаточно ли их? Понятны ли они? Имеется ли в программе интерактивная справка и может ли пользователь в случае затруднений найти в ней реальную помощь? Насколько коррект но программа сообщает пользователю о его ошибках и объясняет, как их исправить? Нет ли в программе элементов, которые могут раздражать пользователя, сбивать его с толку или просто выглядеть неуклюже? Организация программы Насколько легко потеряться в вашей программе? Нет ли в ней непонят ных команд или таких, которые легко спутать между собой? Какие ошиб ки чаще всего делает пользователь, на что он тратит больше всего времени и почему? Пропущенные команды Чего в программе не хватает? Не заставляет ли программа выполнять некоторые действия странным, неестественным или крайне неэффектив ным способом? Нельзя ли привести ее в соответствие с привычным стилем Глава 4: Программные ошибки 97 работы пользователя? Допускает ли она хотя бы некоторую степень на стройки? Производительность В интерактивном программном обеспечении очень важна скорость. Плохо, если у пользователя создается впечатление, что программа работа ет медленно, если он чувствует задержки в ее реакции (особенно если конкурирующие программы работают ощутимо быстрее). Выходные данные Большинство программ так или иначе формируют выходные данные: отображают информацию на экране, печатают ее или сохраняют в файлах. Получаете ли вы то, что хотите? Правильно ли формируются отчеты, на глядны ли диаграммы и достаточно ли отчетливо они выглядят на бумаге? Сохраняются ли данные в формате, доступном и для других аналогичных программ? Обладает ли программа достаточной гибкостью, чтобы можно было подстраивать ее под нужды конкретного пользователя? Обработка ошибок Процедуры обработки ошибок — это очень важная часть программы. Но, к сожалению, в них тоже очень часто встречаются ошибки. Кроме того, правильно определив ошибку, программа не всегда выдает о ней достаточно информативное сообщение. |