2 июля 2013 г.

Функциональное тестирование — трудоёмкий, детально документированный, но рутинный и не очень интересный для разработчиков этап разработки ПО. И поэтому его исполнение достаточно часто передают сторонним организациям, специализирующимся на оказании такого рода услуг.

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

Виды тестирования ПО и место функционального тестирования

Обычно виды тестирования программного обеспечения классифицируются по по объекту тестирования, по знанию системы, по степени автоматизации процесса тестирования, по степени изолированности компонентов ПО и т.д.

Можно также выделить несколько видов тестирования функционирования программного обеспечения:

  • Проверка функциональности (тестирование методом «чёрного ящика»);
  • Регрессионное тестирование (regression testing);
  • Тестирование интерфейса;
  • Инсталляционное тестирование (installation testing);
  • Кросс-платформенное тестирование (cross-platform testing);
  • Интеграционное тестирование (integration testing);
  • «Беглое тестирование».

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

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

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

Организация работ по функциональному тестированию и сдачи-приемки ПО в эксплуатацию. Технические вопросы

Надёжная работа прикладного ПО зависит от корректности программного кода и работы программно-аппаратного комплекса (ПАК), на котором устанавливается ППО, а также от взаимодействия ППО и ПАК.

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

Тестирование необходимо проводить в программно-аппаратной среде, полностью соответствующей «рабочей». Сторонней организации, занимающейся исключительно тестированием, воссоздать такую среду (особенно, если речь идёт о крупных программных комплексах) чаще всего не под силу, а в «рабочую» среду её, скорее всего, не допустят. Самому заказчику временный тестовый программно-аппаратный комплекс принесёт существенные дополнительные затраты.

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

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

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

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

Организационные аспекты

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

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

Те же компетенции необходимы и на этапе тестирования и приёмки ПО. Если организация, проводящая тестирование не имеет опыта эксплуатации информационных систем, то, даже добросовестно следуя инструкциям разработчика, она не всегда сможет учесть факторы (зачастую совсем не технические!), которые повлияют на работу ППО в ходе эксплуатации. И, естественно, не сможет информировать о них разработчика. Такие неучтённые «моменты» начнут срабатывать уже в ходе эксплуатации, приводя к сбоям и остановкам системы, простоям сотрудников, финансовым потерям.

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

О распределении ответственности

Нельзя также забывать о проблемах взаимодействия заказчика, разработчика ППО и организации, эксплуатирующей информационную систему. Камнем преткновения в проектах с участием нескольких подрядных организаций обычно становятся проблемы возникающие на «стыках» интересов. Если ПО работает нестабильно, то гарантированы споры о причинах некорректного функционирования, особенно в сложных ИС где требуется интеграция со смежными системами и подсистемами. В них не всегда проверяется корректность закрытия сессий, вычислительных функций, логики подсчёта значений, соответствие требования законодательству, корректный обмен данных при интеграции систем и т.д.

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

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

Об опыте функционального тестирования

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

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

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

Выводы

Наш опыт показывает, что привлекая к функциональному тестированию организацию, имеющую опыт эксплуатации информационных систем и соответствующие ресурсы (в том числе, облачные) и обеспечивающую эксплуатацию информационной системы, заказчик получает несколько преимуществ:

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

Роман Джамалутдинов

Ссылка на источник www.computerra.ru/cio/4366