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

Для создания качественного программного продукта может потребоваться применение правильно сбалансированных усилий нескольких проектных команд или даже компаний. Часто можно добиться наилучших результатов с помощью аутсорсинга тестирования. Но для эффективного использования этого подхода надо знать, как правильно организовать взаимодействие с тестовым агентством и избежать типичных ошибок.
Сведения, которые получат читатели
  • Определение различных видов независимого тестирования
  • Случаи, в которых следует прибегать к аутсорсингу
  • Чего ожидать от независимого тестирования
  • Распределение ответственности и функций управления
  • Документооборот между заказчиком и тестовым агентством
Алексей Викторович Лукутин - исполнительный директор компании "Амфора - Технологии качества". С ним можно связаться по адресу lav@aqt.ru

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

Тестирование и аутсорсинг

Тестирование является неотъемлемой частью процесса производства ПО. Вне зависимости от того, есть в вашей организации отдел тестирования или нет, такая фаза в производственном цикле присутствует всегда - явно либо скрыто. В последнем случае определенное тестирование проводят либо программисты, либо «подопытные» заказчики программного продукта. Современные стандарты качества, такие как ISO 9001 и CMM, уделяют тестированию особое внимание, выделяя его в отдельный жизненно важный этап создания ПО.

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

Путь к аутсорсингу

В мировой практике аутсорсинг тестирования известен достаточно давно. Еще в 70-х годах патриарх программирования Гленфорд Майерс отмечал, что для получения объективной оценки качества программного продукта независимое тестирование абсолютно необходимо. С тех пор прошло уже около 30 лет - срок по меркам компьютерной отрасли фантастический. И то, что являлось нормой в 70-х годах, не обязательно актуально в наши дни. Действительно, интерес к аутсорсингу тестирования угас в конце 80-х годов, когда широко стали внедряться стандарты качества и объектно-ориентированное программирование. Тем не менее новые подходы не смогли решить все поставленные задачи, а в ряде случаев даже усложнили ситуацию. Именно поэтому конец 90-х годов ознаменовался новой волной интереса к индустрии независимого тестирования. Эта отрасль приобрела новые, зрелые очертания, адаптировалась к требованиям нового века.

Почему менеджеры ИТ-подразделений обращаются к услугам аутсорсинга тестирования? Для этого существует несколько веских причин. Как правило - и это реалии нашей жизни - проекты по созданию или внедрению программного обеспечения планируются таким образом, что должны выполняться в условиях недостатка некоторых ресурсов. Такими ресурсами могут быть время, персонал, финансирование. Кроме того, проведение сложных нагрузочных тестов может потребовать особого технического обеспечения. Нельзя сказать, что такие случаи - результат только просчета менеджмента. Сложность современных систем настолько высока, а требования к ним столь часто изменяются, что просто невозможно учесть все возможные факторы на этапе планирования. Все это ведет к тому, что, пытаясь уложиться в имеющиеся ограничения, руководитель вынужден идти на какие-то жертвы. Неудивительно, что такой жертвой зачастую становится качество ПО: достижение качества требует значительных затрат, а при сдаче продукта заказчику роль имеющихся дефектов можно попытаться занизить. Оставив в стороне морально-этические аспекты такого подхода, можно сказать, что в долгосрочном плане он является бесперспективным, грозящим как минимум подрывом репутации руководителя, а как максимум - применением к нему санкций.

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

Виды независимого тестирования

В настоящее время принято выделять пять основных сценариев аутсорсинга тестирования в зависимости от выявленной проблематики производства ПО.

  1. Полный аутсорсинг всего объема работ по тестированию и обеспечению качества ПО.
  2. Проведение сложных, непрофильных, ресурсоемких тестовых исследований.
  3. Быстрое расширение ресурсов компании внешними тестерами
  4. Поддержка существующих программных продуктов тестированием новых релизов.
  5. Проведение независимого аудита качества.

В последнем случае существует несколько дополнительных категорий сценария, в зависимости от того, кто является заказчиком проведения независимого тестирования. Так, это может быть разработчик ПО, желающий удостовериться в качестве производимой продукции и правильности организации производственного цикла. Или же это потребитель ПО, желающий квалифицированно провести приемочные испытания. В этом случае заказчик ПО получает дополнительные гарантии качества приобретаемого продукта. Отдельным случаем является проведение независимого тестирования по заказу системных интеграторов, выступающих посредниками между производителем ПО и клиентом. Как правило, системных интеграторов больше интересуют вопросы сопряжения ПО и оборудования различных поставщиков, а также характеристики надежности и производительности программно-аппаратного комплекса в целом. (Независимый аудит качества ПО, предусматриваемый, в частности, ГОСТ Р ИСО/МЭК 12207:1999, может проводиться и внутренней по отношению к компании группой тестеров; аутсорсинга при этом нет, но такая группа обязательно должна быть организационно независимой от проекта, для которого выполняется аудит. - Прим. ред.)

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

Полный аутсорсинг тестирования

При данном подходе предполагается, что организация-заказчик поручает выполнение всего комплекса работ по тестированию тестовому агентству. При этом происходит достаточно тесная интеграция производственного процесса заказчика и тестового агентства (cхема взаимодействия компаний приведена на рис. 1). При данном виде сотрудничества следует ожидать, что тестовое агентство будет предпринимать попытки активного участия в процессе производства, начиная с выработки требований к ПО и заканчивая собственно тестированием. Возможно, что существующий у заказчика производственный процесс при содействии тестеров претерпит изменения для адаптации к новым условиям работы. Для получения наилучших результатов заказчик должен быть готов допустить тестеров к участию в процессе разработки с ранних этапов производственного цикла, едва ли не к обсуждению идеи нового продукта. Если это покажется невозможным, то всегда следует иметь в виду, что чем раньше тестовое агентство включится в производственный цикл, тем качественнее будет итоговый программный продукт и тем быстрее он будет получен.

Рис. 1. Схема взаимодействия компании-разработчика и тестового агентства при полном аутсорсинге работ по тестированию.

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

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

Не стоит также впадать в заблуждение, полагая, что независимое тестирование обеспечит качество продукта. Это не так. Тестеры помогают выявить максимально возможное количество ошибок в производимом заказчиком коде. Однако тестеры (за исключением отдельных случаев) не исправляют ошибки. Поэтому ответственность за качество продукта всецело будет лежать на руководителе ИТ-подразделения, ответственного за разработку. Роль тестеров заключается в выявлении существующих недостатков и получении объективной картины производственного процесса и качества итогового продукта. Более того, тестеры не в состоянии определить критерий достаточного качества для выпуска продукта. Только специалисты заказчика, являясь экспертами в предметной области, способны дать такую оценку. Тем не менее консультации тестового агентства могут оказать в этом вопросе неоценимую помощь. Квалифицированные тестеры посодействуют тому, чтобы найти не только симптомы имеющейся проблемы, но и выявить коренные причины появления того или иного класса дефектов. Благодаря применению независимого тестирования систематизируется подход к тестированию в организации, создаются предпосылки к снижению числа дефектов в последующих версиях. Таким образом, независимое тестирование не является «одномоментным средством», оно оказывает долговременное позитивное влияние на качество разработки ПО.

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

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

Фактически управление внешним тестированием схоже с управлением внутренней командой тестеров, за исключением того что должны быть налажены надежные каналы связи и обмена информацией. Этому вопросу следует уделить особое внимание, поскольку при взаимодействии разных организаций общение должно быть более формальным и четким, чем при работе внутренних подразделений одной компании. Отметим, что данный факт является одновременно и главным препятствием для аутсорсинга, и одним из ключевых моментов, позволяющих обеспечить высокое качество тестирования. Поэтому, рассматривая возможность аутсорсинга тестирования, в первую очередь необходимо запросить у тестового агентства образцы документов, которыми вы собираетесь обмениваться, и убедиться, что они подходят вам для работы. К таким документам обычно относятся: «План тестирования», «Стратегия тестирования», «Формат отчета о статусе проекта», «Формат отчета об обнаруженном дефекте». Эти документы должны содержать полную информацию, необходимую вам для работы, а также быть понятными персоналу. Хорошее тестовое агентство, работающие с большим числом клиентов, имеет целый набор подобных документов, что позволяет проводить быструю и безболезненную интеграцию производственных процессов заказчика и агентства.

Проведение непрофильных тестовых исследований

К данному виду аутсорсинга прибегают, как правило, зрелые в производственном плане организации. В таких компаниях уже существует сложившаяся система обеспечения качества продукции и есть собственный отдел тестирования ПО. В чем же причина обращения к независимому тестированию? Это стремление добиться экономически самого эффективного способа обеспечения качества, получить в свое распоряжение самые квалифицированные кадры. При подобном подходе к тестированию внутренняя команда специалистов сосредоточивается на наиболее значимой функциональности продукта, составляющей его ноу хау, а большая часть редко проводимых тестов поручается тестовому агентству. В этом случае заказчик избавляет себя от необходимости содержать большую команду высококвалифицированных и редко используемых тестеров. Есть и другие причины. Определенные виды тестирования, например нагрузочное или совместимости, требуют наличия обширного парка высокопроизводительной техники от различных производителей, а также дорогостоящего ПО. Таким образом, аутсорсинг может стать единственным способом проведения указанных тестов, если, конечно, у заказчика не безграничный бюджет.

Как и в первом сценарии, качество работы и затраты на ее проведение в большой степени зависят от того, насколько рано тестеры были включены в процесс разработки ПО. Важно также обеспечить тесное взаимодействие внутренней команды тестеров и специалистов тестового агентства. Особенностью этого сценария является то, что в процесс тестирования вовлечены не только независимые тестеры, но и внутренний отдел тестирования, что иллюстрирует схема взаимодействия на рис. 2. Соответственно, все документы, их формат и содержание должны удовлетворять как требованиям агентства, так и внутренних тестеров. Далее, нужно четко разграничить ответственность каждого участника процесса тестирования. Необходимо совершенно определенно понять, что считается ноу хау продукта и тестируется внутренними тестерами, а за что будет отвечать тестовое агентство. На данном этапе должно быть согласовано и использование инструментов автоматизации тестирования. Очевидно, что если отдел тестирования применяет продукты Mercury WinRunner и LoadRunner, а тестовое агентство - Rational Suite TestStudio, то обмен тестовыми скриптами будет затруднен, если вообще возможен.

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

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

Быстрое расширение ресурсов компании

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

Главная проблема подобного подхода - управление ресурсами. Несмотря на то что руководителю не придется заниматься набором и обучением персонала, на его плечи, несомненно, ляжет дополнительная нагрузка. Не стоит рассчитывать на самоорганизацию привлеченных тестеров. Хорошее тестовое агентство, безусловно, поможет решить большую часть проблем, но груз общего руководства останется на менеджере проекта (см. рис. 3). Какие качества потребуются от руководителя? Прежде всего это способность точно определять потребность в дополнительных ресурсах, быстро находить решения выявленных проблем и поддерживать хорошие отношения с привлеченным персоналом.

Рис. 3. Взаимодейтсвие компании-разработчика и тестового агентства в случае быстрого расширения проектной команды дополнительными тестерами.

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

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

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

Поддержка существующих программных продуктов

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

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

Рис. 4. Взаимодействие компании-разработчика и тестового агентства для аутсорсинга тестирования новых релизов старых версий ПО.

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

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

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

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

Проведение независимого аудита качества

Опишем три варианта такого аудита.

В первом варианте мы рассматриваем ситуацию, полностью противоположную описанной перед этим. А именно ту, при которой заказчик ставит перед собой задачу проверить качество работы собственной системы обеспечения качества и созданного программного продукта. Это достаточно часто встречающаяся ситуация, поскольку у программистов и тестеров вырабатывается определенный взгляд на продукт, мешающий объективно оценить качество ПО. Взгляд со стороны всегда выявляет проблемы и несоответствия, которые непонятным образом ускользают из вида отдела тестирования. Доказано, что полное объективное тестирование программы невозможно, поэтому человеческий фактор играет здесь ключевую роль. (Ряд показательных примеров, иллюстрирующих это утверждение, можно найти в замечательной книге Роберта Биндера Testing Object-Oriented Systems. Addison-Wesley, 2001). Утомление, монотонная работа, низкая мотивация тестеров и другие факторы приводят к тому, что значительная часть дефектов остается необнаруженной. В этом случае на помощь приходит независимый аудит качества.

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

Альтернативным подходом является указание заказчиком наиболее существенных функций ПО, качественная работа которых жизненно необходима. Предполагается, что качество продукта в целом будет оцениваться по качеству реализации каких-то определенных функций, используемых в 80% случаев. Это в первую очередь касается систем с большим числом редко изменяемых настроек. Таким образом, тестеры проверят ключевые бизнес-процессы в системе и сделают заключение о пригодности ее к использованию.

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

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

Во втором варианте заказчиком независимого аудита качества является конечный пользователь. Он изначально заинтересован в получении продукта наивысшего качества. Для него не представляет особого интереса внутренняя организация процесса разработки в программистской компании, но принципиально важным является то, насколько приобретаемый продукт удовлетворит его потребности или решит стоящие перед ним задачи. При этом возникает дилемма: довериться маркетинговым материалам или как-то проверить продукт. Большинство потенциальных покупателей прежде, чем сделать выбор, интересуются, как данный продукт работает у других, как зарекомендовала себя компания-разработчик, или же запрашивают пробную версию ПО, чтобы составить о нем наиболее объективное представление. Однако пробная эксплуатация - занятие недешевое. Это отнимает много ресурсов, которых может и не быть. Более того, рядовые пользователи за ограниченное время не в состоянии выявить большое число дефектов, это под силу лишь квалифицированному тестеру. Поэтому целесообразно привлечь к проведению приемочных испытаний тестовое агентство (см. рис. 5). Тестеры, используя как свои знания предметной области, так и приглашая специалистов заказчика, смогут за кратчайший срок составить такой план тестирования, который позволит с наименьшими затратами провести приемочные испытания продукта. Это максимально снижает риски, связанные с приобретением и внедрением нового ПО. Аналогичный подход может применяться и в том случае, если предполагается установка новой версии ПО. Клиент хочет получить гарантии того, что производственный процесс не остановится из-за какой-то новой ошибки в очередной версии программного продукта.

Рис. 5. Взаимодействие заинтересованных лиц при проведении независимого аудита качества.

Несколько слов о третьем варианте аудита. Независимый аудит качества, как уже отмечалось, может быть полезен и для компаний - системных интеграторов. Часто перед подобной компанией стоит задача разработать специальное программно-аппаратное решение «под ключ». Для этой цели в арсенале системных интеграторов имеется целый набор ПО, аппаратных комплексов, из которых, как из кирпичей, строится заказное решение. При этом надо быть уверенным в качестве исходного материала, то есть «кирпичиков», и убедиться в том, что созданная конструкция будет надежна. Из системного анализа хорошо известно, что комплексные решения приобретают такие новые свойства, которыми не обладает ни один из составляющих систему компонентов. Вполне возможно появление новых ошибок при взаимодействии компонентов системы, а также изменение требований к качеству исходных компонентов. Например, компоненты, применяемые в локальной сети, могут не обеспечить безопасности, надежности и производительности при работе в Internet.

По этой причине системные интеграторы обращаются к тестовым агентствам. Наиболее целесообразным для законченных решений видится проведение нагрузочных испытаний, проверка надежности, безопасности и качества интеграции компонентов. Итоговый отчет, подготовленный тестовым агентством, может содержать нагрузочные характеристики проверяемой системы, выявленное максимально допустимое число пользователей системы, время наработки системы на отказ. В разделе анализа безопасности программного комплекса обычно указываются обнаруженные бреши в системе защиты и потенциально опасные места в приложении, которые при определенном изменении конфигурации (или окружения) системы могут стать причиной нарушения защиты. Работа подобного рода может быть очень продолжительной и объемной, поэтому необходимо заранее сделать оценку времени выполнения тестов и оговорить ограничения, существующие при эксплуатации системы. Более того, в процессе проведения тестов надежности может быть обнаружено большое число функциональных ошибок. Тогда, если система будет исправлена, потребуются повторные тесты для получения репрезентативных результатов.

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

Итог

Какой бы из вариантов аутсорсинга ни выбрала ваша организация, независимое тестирование, вне всякого сомнения, существенно улучшит качество итогового решения и будет полезно всем сторонам. В начале статьи уже упоминалось, что, как показывает статистика, простое проведение функционального тестирования, уменьшает количество дефектов в ПО от трех до 30 раз! (Это возможно, если тестовое агентство обладает компетентными кадрами, а ваша организация наладит с агентством эффективную связь, предоставит ему максимум информации о продукте.) Но дело не только в обнаруженных сегодня ошибках. Обмен опытом с тестовым агентством позволит лучше наладить процедуры обеспечения качества в вашей организации. В свою очередь тестеры обретут новый опыт и повысят свою квалификацию. В итоге выиграют все.

Надеюсь, данная публикация сделает мир чуть лучше, спокойнее и защищеннее, а люди будут меньше думать о спасении цивилизации от компьютерных вирусов и «синих экранов смерти».


По оценке западных экспертов, среднестатистический программист делает ошибку в среднем один раз в пяти строках кода (включая опечатки). Примерно 90% этих ошибок исправляется самим программистом, остальные выявляются последующим тестированием. Соответственно, переход от одной ошибки на 500 строк до одной ошибки на 2000 строк и выше выполняется при помощи тестеров. Среднестатистическая американская программа содержит ошибку через каждые 2100 строк кода. Проведение функционального тестирования независимым тестовым агентством, как показывает статистика, уменьшает количество дефектов в ПО от трех до 30 раз. (Источник: Материалы конференции QualityWeek Europe 2000)


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

назад