В нашу цифровую эпоху тестирование ПО перед выпуском является императивным требованием. Ведь отказ ПО способен повредить бизнесу и репутации компании. Если учесть, что сегодня лояльность бренду стала недолговечной, негативная реакция пользователей может привести к их переориентации на другого производителя.
Такие потенциальные последствия важнее технических неисправностей, утверждают обозреватели, которые единодушно подчеркивают необходимость тестирования ПО.
Принцип “тестируй как можно раньше и как можно чаще” большинством компаний, к сожалению, не соблюдается. Обычно тестирование откладывается до последней минуты, говорит Джефф Финдли, старший архитектор решений для Азиатско-Тихоокеанского региона и Японии в фирме Micro Focus. Разработчики стремятся отсрочить тестирование важнейших функций и транзакций вплоть до самого выпуска продукта.
Рей Ванг, главный аналитик и генеральный директор фирмы Constellation Research, добавляет, что даже если компании признают важность подготовки высококачественного ПО, то скорее в соответствии с принципом “быстрее, лучше, дешевле”. Это ограничивает вероятность отказа программ, но одновременно и возможности предвидения неожиданных трудностей, которые могут возникнуть в реальной жизни, и готовности к ним.
“Тестирование из искусства превратилось в науку”, — считает Ванг. Немногие компании сейчас достигают этого уровня в процессе интегрированной гибкой разработки. Они составляют планы тестирования параллельно с функциональными спецификациями. При этом больше времени уходит на планирование, зато остается меньше ошибок, сказал аналитик.
“Если вы пересчитали все деревья, это не значит, что вы видели лес”, — сказал Рамешвар Вьяс, генеральный директор компании Ranosys Technologies, предоставляющей услуги по тестированию ПО. Компаниям всегда следует помнить об этом при подготовке тестовых программ, считает он. Управление изменениями и рисками являются составными частями общего плана, который должен включать тестирование на предмет всего того, что ПО не должно делать.
Финдли подчеркивает, что всё тестируемое компаниями ПО должно соответствовать требованиям бизнеса. Эти требования следует четко сформулировать, согласовать с акционерами и хранить в центральном репозитарии. Зачастую составляются многочисленные документы, в которых многократно и различным образом описываются предъявляемые требования. В результате появляется множество интерпретаций, что в свою очередь ведет к сбоям в работе приложения и к его дорогостоящей переделке, поясняет он.
Эти комментарии были высказаны после 1 августа, когда американская трейдерская компания Knight Capital Group потеряла 440 млн. долл. из-за того, что небрежно обновленное ПО отдало несколько ошибочных распоряжений на Нью-Йоркской фондовой бирже. Ей пришлось выпутываться с помощью финансового спасательного круга. Всего неделю спустя в Азии произошел сбой системы резервного копирования на Токийской фондовой бирже. В результате торговля дериватами была приостановлена на 95 минут.
Достаточно — это сколько?
Как компаниям оценить, какой объем и продолжительность тестирования ПО позволит избежать подобных инцидентов? Это зависит от того, как они определяют риски, связанные с выполнением конкретных функций приложения, считает Финдли.
Важно понять влияние сбоя на бизнес, а затем двигаться в обратном направлении, тестируя каждый элемент как можно раньше, причём тесты должны соответствовать требованиям бизнеса, для проверки которых они проводятся, поясняет руководитель компании Micro Focus.
Когда транзакции имеют важнейшее значение для успеха всего предприятия, они должны быть тщательно протестированы как в функциональном, так и в нефункциональном отношении. Это необходимо, чтобы определить, корректно ли приложение выполняет транзакцию по времени для всех пользователей независимо от того, как они получают доступ к нему.
Тесты, касающиеся второстепенных функций приложения, не требуют такой же строгости. В данном случае можно обойтись тестированием по сокращенной программе, отказ не будет иметь серьезных последствий для бизнеса.
Даже после выпуска ПО важно проводить непрерывное и регулярное тестирование его важнейших транзакций. Для этого следует как можно раньше разработать автоматизированные тесты и регулярно прогонять их, убеждаясь, что усилия разработчиков не нарушают работу приложения. Такое автоматическое тестирование должно распространяться на программный код, функциональность ключевых транзакций и производительность приложения, рекомендует Финдли.
Понять влияние отказов ПО на бизнес очень важно при планировании и проведении тестирования. Но компании редко этим занимаются, откладывая такую работу до последней минуты.