Возврат к тестированию программного обеспечения
По мере того как программное обеспечение усложняется, автоматическое тестирование становится ключом к успеху
Существует как минимум однапостоянная проблема столь же сложная, как и наши взаимоотношения с компьютерами за последние полвека: где бы вы ни обнаружили компьютер, вы всегда встретите рой багов. Многие десятилетия пользователи и менеджеры искали оружие против их нашествия. Одни предпринимают попытки использовать структурированные инструменты программирования, среды, которые считаются стерильными по отношению к ошибкам. Другие надеются на амбициозные программы альфа- и бета-тестирования. Но концептуально наиболее приемлемой является идея заставить компьютеры самостоятельно выявлять (а возможно, и исправлять) собственные ошибки в автоматическом режиме.
Автоматическое тестирование некоторых ошибок требует очень высокого уровня возможностей, сравнимого с настоящим искусственным разумом. Тем не менее многие проблемы могут быть устранены, и в 80-х годах на рынке стали появляться предназначенные для этого продукты. Как правило, программы работали таким образом, что предоставляли возможность менеджерам собирать данные и создавать типичные пользовательские сеансы (последовательности клавиатурных команд и движений мыши) для отдельных блоков программного обеспечения. После чего программисты пропускали эти сеансы через отлаживаемую программу и исследовали выходные данные на предмет появления ошибок. К началу 90-х сектор автоматического тестирования был уже вполне развит, что позволило нам опубликовать опрос об этой технологии («Bug Busters», CIO, март 1993 года).
Результаты нас несколько разочаровали. Инструменты оказались довольно дорогими, топорными, да еще и пропускали массу ошибок. Кроме того, график освоения программ оказался неприемлемым. «Вскоре после начала внедрения подобных продуктов организации сталкиваются с затягиванием производственных календарных планов, возрастанием спроса на разработчиков и падением качества программного обеспечения, - писали мы. - Успехом для директоров информационных служб будет, если набор инструментов оправдает возложенные надежды... через три года».
В те годы любой менеджер мог глубоко сомневаться в том, что сетевая система любого масштаба может выжить под натиском своих собственных ошибок. Тем не менее развитие Интернета послужило толчком как для активизации войны с ошибками в целом, так и для развития автоматического тестирования в частности. Обмен исходными кодами программ среди разработчиков стал проще, быстрее и дешевле, поразительно усиливая эффективность ручного поиска ошибок. (Высокая надежность программ с открытым кодом хорошо иллюстрирует эти преимущества.) Стало проще распространять программы, созданные для устранения ошибок. Сети сделали возможной инсталляцию «черных ящиков» - сенсоров, которые находятся внутри приложений и посылают отчеты о дисфункциональных сеансах к производителю. «Это очень важно, поскольку означает, что персонал технической поддержки не должен пытаться воспроизводить эти ошибки на своем оборудовании», — говорит Оливер Кол, президент OC Systems - компании, производящей инструменты для обеспечения работоспособности систем и расположенной в Фэрфаксе (шт. Вирджиния). Также «черные ящики» способны генерировать высококачественные тестовые сеансы как исходные данные для автоматического тестирования программного обеспечения. (Подобные инструменты разрабатывает компания Atesto Technologies of Fremont.)
Несмотря на то что сети не привели непосредственно к развитию автоматического тестирования, они принесли волну простых, ?глупых? ошибок (например, мертвые HTML-ссылки), которые идеально подходили для автоматического тестирования даже при том уровне возможностей. В результате инвестиции хлынули в данный сектор и технология стала более развитой. Например, несколько компаний (включая OC Systems) разработали инструменты, которые во время выполнения последовательности теста «отслеживают» процесс вызова команд. Если инструмент не может вызвать какую-либо команду, программы генерируют новые последовательности теста, специально создаваемые для тестирования недостающего кода.
Многое зависит от того, повторится ли успех тестирующих инструментов на рынке в следующем десятилетии. Все потрясающие перспективы для информационных систем - повсеместное или расширяющееся использование вычислительной техники, семантические сети, адаптивные программы, полная независимость устройств, распределенные вычисления, инициатива IBM в области «автономной вычислительной техники» (самоуправляемые и самовосстанавливающиеся сети) - требуют заметного улучшения наших возможностей по поиску и исправлению ошибок. Например, встроенные системы не снабжены записывающим устройством или часто не способны связываться с сетями, а это означает невозможность их починки с помощью вставок заплат в программы или обслуживающих программ. Если встроенные системы не могут быть изготовлены без ошибок, то они не смогут и выполнять заявленные функции.
К решению проблемы можно двигаться разными путями. Некоторые компании надеются, что новый унифицированный язык моделирования позволит инженерам-разработчикам создавать внутренние модели пользовательских устройств, которые дадут возможность производить ?полевые исследования? на ранних этапах разработки. А компания Lucent создает систему, которая будет автоматически генерировать логические представления исполняемого кода для того, чтобы обнаружить при тестировании специфические виды ошибок, такие как конфликты взаимодействия в распределенных системах, на предмет их вероятного появления. Как было замечено выше, Интернет заставил переоценить многие виды программного обеспечения.
Возможно, неверно говорить, что будущее программного обеспечения зависит от автоматизации определения и устранения ошибок. Но автоматическая охота за багами может поднять разработку программного обеспечения на новые уровни, о которых до сих пор только мечтали.