Ключ к Успешному Тестированию: Планирование Тестов

by Rational Software

Сложность современных клиент/серверных приложений усилила роль тестирования и сделала его существенной и неотъемлемой частью процесса разработки программного обеспечения. Сегодня никто не будет отрицать необходимость планирования усилий по тестированию. Однако исследования и обзоры указывают на то, что планирование тестирования - часто имеет низший приоритет при разработке. Более того, оно часто не выполняется, а если и выполняется, то не в полном объеме, неаккуратно и непоследовательно.

Как только мы согласились с тем, что тестирование необходимо, мы должны ответить на следующие за этим непростые вопросы:

Ответ на эти вопросы простой – необходимо планирование.

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

Почему нужно затрачивать усилия на планирование?

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

AT & T – программно управляемая система переключения вышла из строя и не позволяла осуществлять связь на большие расстояния в США почти в течение 24 часов. Для решения проблемы потребовалось изменить лишь одну строку в коде.

Аэропорт Денвера – ошибки программного обеспечения задержали открытие аэропорта почти на девять месяцев, что, по приблизительным оценкам, обошлось налогоплательщикам в $ 500,000 за каждый день.

Ashton-Tate - В 80-тые, DBASE - программное обеспечение Ashton-Tate's было де-факто стандартом приложений баз данных для PC компьютеров. Выпуски релизов с ошибками привели к снижению продаж и уменьшению доходов и, в конечном счете, к кончине Ashton-Tate's (и DBASE's) . Ashton-Tate была приобретена Borland, которая выступала на рынке с конкурирующим приложением Paradox .

Конечно, все это были первоклассные компании и проекты. Не Вашего ранга, правильно?

Неправильно! Мы все зависим от ошибок программного обеспечения, которые могут быть критическими и значимыми как внутри наших организаций, так и вне их, поскольку все связано в этом мире. Далее приводятся некоторые из наиболее общих признаков низкого качества программного обеспечения:

Низкая продуктивность

Разочарования пользователей Простои системы, потеря данных и повреждения

Что отличает Клиент/серверные приложения?

В силу своей специфики современные клиент/серверные приложения ставят перед специалистами по контролю качества (Quality Assurance) сложные задачи. Ниже приводятся некоторые из наиболее важных:

Быстрая Разработка Приложений

Большинство клиент/серверных приложений разрабатывается с использованием инструментов и методологии Rapid Application Development (RAD). Задачей тестировщиков является поддержка качества тестирования на высоком уровне при очень коротких циклах разработки. Ранее разработка не клиент/серверных приложения часто занимала 18 - 24 месяца до полного завершения и начала внедрения. Теперь, с RAD, приложения поставляются во множественных релизах или "chunks" - кусках. Каждый кусок основан на предыдущем и включает расширения, изменения и устранения ошибок. Каждый кусок требует множества разработок новых тестов или итерационных прототипов. Каждый кусок требует отдельного тестирования, и все это должно быть сделано менее чем за 3 - 6-месячный отрезок времени!

Архитектура клиента /сервера

Сегодняшние клиент/серверные приложения требуют совместного функционирования большого количества программных компонентов, включая клиентское приложение, операционную систему рабочей станции, сеть, и систему управления базы данных. Часто имеется много других компонентов типа DLL (динамически связанных библиотек), содержащих дополнительный код для выполнения специфических задач, процессоров транзакции или приложений и сервисов управления базами данных. Каждый дополнительный "слой" программного обеспечения усложняет архитектуру клиент/серверного приложения и заставляет выполнять дополнительное тестирование.

Различные типы тестирования

Более того, при тестировании клиент/серверных приложений требуется несколько различных типов тестирования, таких как функциональное тестирование, тестирование интерфейса пользователя, тестирование производительности и конфигурационное тестирование. Каждый из этих типов тестов фокусируется на одной или нескольких целях. Для того, чтобы предотвратить тестирование от случайного блуждания или попыток протестировать все одновременно, каждый тип тестирования должен быть тщательно спланирован. Это становится особенно актуальным, когда ставится задача автоматизации процесса тестирования.

Данные

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

Дополнительные причины для планирования тестов

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

Автоматизация Тестирования

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

(типа " неописанные свойства /изменения ").

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

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

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

Управление дефектами и анализ

Цель тестирования – обнаружить дефекты. Следующей задачей является идентификация и отслеживание жизненного цикла дефектов и анализ результатов для того, чтобы быть уверенными в том, что дефекты устранены действенно и эффективно. Планирование тестов гарантирует то, что управление дефектами и анализ будут являться активом проекта, а не обузой. Если не используются какие-либо из существующих процессов и систем управления дефектами или они не отлажены, то планирование тестов является хорошей возможностью установить или исправлять это.

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

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

Анализ Риска

Планирование тестирования предлагает возможности для оценки риска. Риск и ответственность могут быть кошмаром для организации, но ими можно управлять. Однако, сначала их нужно проанализировать. Анализ Риска помогает расположить в порядке приоритетов и сосредоточить усилия по тестированию, гарантируя, что правильные вещи проверены с правильной целью и в правильном порядке (правильность в данном случае основана на риске и приемлемости для конкретной организации).

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

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

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

Совершенствование Процесса

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

Слышали ли Вы когда-либо что-нибудь подобное:

" пользователи сообщили об ошибке в ..., разве Вы не проверяли это? "

" Это было настолько очевидно, как можно было выпускать программу с такой ошибкой!? "

" Я знаю, что Вы заявляли, что Вам нужно три месяца для того чтобы успеть протестировать, но Вы получили только два …"

Улучшение качества продукции (меньшее количество дефектов программного обеспечения) требует, чтобы процесс, в котором продукция разрабатывается, подвергался постоянному улучшению. Разработка планов тестирования позволяет тестировщикам определять, измерять и выполнять их работу более качественно.

Заключение

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


Interface Ltd.

Tel: 7+(095) 135-55-00, 135-25-19
E-mail: mail@interface.ru
http://www.interface.ru

Подготовили: stepanov@interface.ru
tkachev@interface.ru
Дата: 24.11.99