Качественный успех |
30.09.2008 09:48 | ||||||||||||||||||||||||||||||||||||||||||||||||||
Автор: Артём Ваулин Рано или поздно (лучше рано, конечно) руководители всех уровней задумываются о том, как сделать их проект, направление, бизнес лучшим из лучших; как работать без авралов и выходных, но успевать все вовремя; как сократить затраты и увеличить прибыль; как повысить лояльность клиентов и сделать так, чтобы они рекомендовали вас своим друзьям, знакомым и коллегам. Существует множество различных способов для достижения этих целей. В рамках же данного монолога хотелось бы немного поговорить о КАЧЕСТВЕ. Не о каком-то абстрактном качестве из Большой Советской Энциклопедии (или из Модных Западных Стандартов), а о том реальном КАЧЕСТВЕ производимых, разрабатываемых и внедряемых нами продуктов и услуг, которое позволяет сделать эти самые продукты и услуги лучшими и, как следствие, приближает нас к заветным целям. Я попытаюсь рассмотреть два аспекта:
Но сначала буквально несколько слов о КАЧЕСТВЕ. Что же это собственно такое, какова цена качества и с помощью чего оно достигается? В области IT нет четкого определения качества. Каждая компания должна сама определить для себя, что понимается под качеством производимых ей продуктов или услуг. Вот, пожалуй, самые удачные определения качества, от которых можно отталкиваться.
Из чего же складывается цена этого самого КАЧЕСТВА?
То, с помощью чего достигается достойное качество, видно из перечисленных выше составляющих: превентивные меры и тестирование.
Как качественный продукт сможет помочь в достижении обозначенных выше целейИтак, каким же образом разработка качественного продукта сделает жизнь наших Заказчиков и, как следствие, нашу жизнь лучше? В качестве ответа на этот вопрос я вижу следующие возможности: 1. Тестирование ПО снизит количество его возвратов на доработку разработчикам (в том числе и возвратов от Заказчика и от конечных пользователей) во время внедрения и, что особенно важно, когда продукт находится в промышленной эксплуатации. Это позволит:
2. Тестирование на проектах приведет к значительному снижению как ошибок, так и запросов, поступающих в группу тех. поддержки. Это позволит:
3. Тестирование на проектах позволит снизить риски возникновения сбоев ПО у Заказчика, из-за которых он может терять реальные деньги. Здесь основная специфика заключается в том, что проявление ошибки у Заказчика «в полевых условиях» стоит достаточно дорого, и тестирование может снизить количество таких сбоев. Это то, что может получить Заказчик, на чем он может реально сэкономить, потратив дополнительные деньги на тестирование. У Заказчика возврат инвестиций достигается за счет уменьшения количества проблем в эксплуатации, Заказчик не теряет на этом деньги, недополучая их со своих клиентов из-за сбоев в системе. Именно за это он и готов платить, увеличивая бюджет проекта. Да, в заказной разработке увеличение бюджета — это наиболее честная линия поведения по отношению к Заказчику, как это ни странно звучит. Когда подрядчик дешево делает заказной продукт с кучей дефектов, а потом в течение продолжительного времени тянет с Заказчика деньги за поддержку, сопровождение и устранение проблем — для компании «Деньги за свои ошибки — безвыигрышная стратегия» . 4. Внедрение на проектах тестирование требований. Данный вид тестирования на самых ранних стадиях проекта позволит с самыми минимальными затратами устранить максимальное количество ошибок, и опять же значительно сократить трудозатраты разработчиков, которые часто мучаются из-за неполных, противоречивых, нетестопригодных, двусмысленных и непонятных требований.
Как сделать продукт качественнымКак же нам добиться того, чтобы разрабатываемые и внедряемые продукты и услуги были качественными? Только формализованный, прозрачный, повторяемый и управляемый процесс тестирования на проектах позволит добиться всего того, о чем написано выше. Ниже лишь тезисно обозначу основные моменты такого процесса тестирования. I Необходимые изменения процесса тестирования на проектах (если они еще не реализованы)1. Персонал
Это чисто психологический момент — человек, создавший что-то (в нашем случае разработчики и консультанты) не склонен специально разрушать свои творения. А у тестировщиков работа такая! «Тестерам платят за то, что они приносят дурные вести»
2. Организация процесса тестирования
3. Документирование Процесс тестирования, как и любой другой процесс обязательно должен быть документирован. Для этого должны выполняться:
4. Управление ошибками
II Виды проводимого тестирования1. Тестирование требований (документации) В целях экономии времени, тестирование документации необходимо осуществлять еще на этапе ее разработки или сразу же после его завершения. При тестировании и анализе документации следует уделять внимание на следующие критерии качества требований:
Тестировщик, работающий с документацией, отвечает за техническую точность каждого ее слова. Он обязан произвести самую тщательную проверку ее соответствия реальной структуре и поведению программы. Необходимо обращать внимание на сложные и запутанные места текста. Они могут отражать неудачно спроектированные элементы самой программы. 2. Приемочное тестирование При разработке ТС исключительно важно включить в ТС приемочные тесты. Набор этих тестов заранее согласовывается с Заказчиком и выполняется им по завершении разработки, т.е после выкладки очередной версии (или после завершения очередного этапа). Если программа проходит приемочные тесты, значит работы по ТС выполнены и все дальнейшие изменения будут включаться только в следующий этап. Разработка и выполнение приемочных тестов позволит во-первых, более глубоко понять требования Заказчика, во-вторых, улучшить качество разрабатываемых систем, в-третьих, формализовать отношения с Заказчиком на этапе сдачи и, в-четвертых, убедить Заказчика в полноте и качестве выполненных работ. Приемочные тесты также необходимо проводить и при передаче очередной версии программы разработчиками группе тестирования. При поступлении каждой новой версии тестировщики прежде всего проверяют, достаточно ли она стабильна. Если она «обрушивается» при малейшей провокации, то возиться с ней не стоит. Копии приемочных тестов можно передавать программистам, чтобы те проводили их сами и не сдавали программы раньше времени. Это позволит избежать возвратов тестировщиками неработающих программ — моментов, психологически не приятных для обеих сторон. Приемочные тесты должны быть короткими. В них должны проверяться только основные функции и основные данные. Если программа не пройдет даже такой тест, то с полной уверенностью можно утверждать, что эта версия никуда не годится. Ряд приемочных тестов можно автоматизировать. 3. Функциональное (ручное) тестирование Основной вид тестирования, направленный на проверку всех требований Заказчика. 4. Регрессионное (автоматизированное) тестирование Данный вид тестирования направлен на проверку общей стабильности программы при внесении в какие-либо ее компоненты изменений, исправлений, доработок и т.п. Один раз тщательно протестировать каждую область программы еще не достаточно — ее тестирование необходимо регулярно повторять. Программа постоянно меняется, возникают новые проблемы, повторно появляются новые ошибки. Регрессионное тестирование должно охватывать программу также полно, как и первоначальное, однако, не требовать также много времени. Поэтому все регрессионные тесты должны (по возможности) автоматизироваться. Прежде всего в набор регрессионных тестов включаются проверки всех недавних исправлений программы. Этот набор непостоянен, тесты включаются в него, затем какое-то время спустя удаляются, уступая место новым. Регрессионных тестов не должно быть слишком много — только необходимый минимум, полностью покрывающий выбранную область программы. Ими должны по возможности охватываться все аспекты выбранной области (подпрограммы, граничные условия и т.п.) и ситуации, чреватые сбоями и ошибками. 5. Тестирование производительности (нагрузочное тестирование, стрессовое тестирование) Тестирование производительности (Performance testing) — любое тестирование, при котором производится оценка характеристик производительности (таких как скорость работы, использование ресурсов и т.п.) и сравнение их с ожидаемыми. Нагрузочное тестирование (Load testing) — испытание системы под большой нагрузкой. При этом могут проверяться как функциональные характеристики (корректность работы под большой нагрузкой), так и характеристики производительности. Стресс-тестирование (Stress testing) — разновидность нагрузочного тестирования, испытание системы под большой пиковой нагрузкой (в противоположность большой продолжительной загрузке). III Возможная схема этапов разработки и тестированияВозможная схема этапов разработки и тестирования [ открыть крупнее ] IV Обязательные документы1. Регламент тестирования Целью регламента тестирования является:
2. План тестирования План тестирования разрабатывается один раз для каждого проекта (обычно его разработка начинается на ранних стадиях проекта). Во время выполнения проекта план тестирования корректируется, дополняется и углубляется по мере необходимости. Цель плана тестирования — обеспечить полноту процесса тестирования. План тестирования разрабатывается на основе технического задания — требований к продукту. В плане тестирования описываются способы, виды и критерии тестирования для всех требований, необходимые ресурсы и порядок выполнения тестирования. План тестирования согласуется со всеми ключевыми членами рабочей группы и утверждается менеджером проекта. 3. Спецификация проектирования тестов Этот документ определяет, как будет тестироваться каждая функция или группа функций программы. Разрабатывается каждый раз перед тестированием той или иной функциональности. Цель – усовершенствование и углубление подхода к тестированию функциональности, описание связи с конкретными тестами. Спецификации разрабатываются на основе следующих документов: план тестирования, техническое задание — требования к продукту. 4. Спецификация тестов Разрабатывается отдельно для тестирования каждой функциональности. Цель — дать полное определение тестов, определяемых спецификацией проектирования тестов. Спецификации тестов разрабатываются на основе следующих документов: план тестирования, техническое задание — требования к продукту, спецификация проектирования тестов. 5. Спецификация проектирования процедуры тестирования Цель — определить набор последовательных действий для полного тестирования определенного набора требований для определенного тестируемого элемента. Тестовая процедура определяет действия для выполнения набора тестовых спецификаций. Спецификация процедуры тестирования разрабатывается, если последовательность действий имеет какие-либо специфичные особенности, не описанные в плане тестирования. Спецификации процедуры тестирования разрабатываются на основе следующих документов: план тестирования, техническое задание — требования к продукту, спецификация проектирования тестов, спецификации тестов. 6. Отчеты тестирования Отчеты тестирования заполняются в процессе проведения тестирования. Целью отчетов тестирования является отслеживание состояния качества тестируемого программного продукта. V Количественная оценка процесса тестированияВ процессе тестирования собираются так называемые метрики, т.е. количественные оценки, позволяющие определить как качество разрабатываемого продукта, так и состояние выполнения работ. Вот лишь некоторые из них:
2. Тестирование производительности — стандартные метрики
— метрики аппаратного обеспечения
VI Возможности при использовании системы отслеживания проблем
VII Преимущества централизованной группы тестирования перед локальными группами тестирования (или специально назначенными для этого людьми) из числа проектной команды.Положительные стороны
Отрицательные стороны
Tags: |