Многообразный мир тестированияВводную заметку приглашенные редакторы Рене Брайс (Renee Bryce) и Рик Кун (Rick Kuhn) назвали «Тестирование программного обеспечения» (Software Testing). В мире, который все в большей степени зависит от программного обеспечения, ключевую роль играет сообщество тестирования программ — наличие любого фрагмента программного кода, не прошедшего должной проверки, может привести к серьезным потерям, вплоть до снижения качества жизни, и угрозе здоровью человека. К счастью, появляется все больше методов тестирования, позволяющих обеспечить качество ПО. Одним из основных путей развития методов тестирования является обмен идеями на основе анализа конкретных случаев и накопленного опыта. По понятным причинам практики с недоверием относятся к непроверенным методам или к методам, опробованным лишь в небольших академических исследованиях, а если демонстрируются реальные преимущества новых методов, то они обычно принимаются. Поскольку, как правило, расходы на тестирование составляют половину общих расходов на разработку программного обеспечения, совершенствование методов тестирования может оказывать существенное влияние на финансовый результат.

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

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

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

Первая статья тематической подборки называется «Расширяемая инфраструктура для онлайн-тестирования срежиссированных сервисов (An Extensible Framework for Online Testing of Choreographed Services). Ее представили Мидхат Али (Midhat Ali), Фраческо де Анжелис (Francesco De Angelis), Даниеле Фани (Daniele Fanì), Антониа Бертолино (Antonia Bertolino), Гельельмо де Анжелес (Guglielmo De Angelis) и Андреа Полини (Andrea Polini). Статья посвящена проблемам тестирования сервисных архитектур. В ней анализируются проблемы соответствующего ПО, возникающие в системах, основанных на хореографии сервисов, а также подробно описывается инфраструктура, поддерживающая непрерывный процесс онлайн-тестирования таких систем (см. рисунок).

Рис. 1. Процесс онлайн-тестирования. Совет по хореографии устанавливает бизнес-цели (1) и публикует модель композиции сервисов, а также сопровождающую ее спецификацию (2). Поставщики услуг (торговые предприятия аэропорта, транспортные компании и т. д.) выявляют новые возможности для бизнеса и регистрируют свои сервисы для участия в хореографии (3). Во время работы системы конечные пользователи приводят предписания хореографии (4) в соответствие со спецификацией (5). Это включает установление связей между всеми сервисами (6) и образование средств, доступных по подписке (7). Тестировщики выбирают подходящие стратегии тестирования (8) и выявляют конкретные тестовые случаи для возможных сервисов (9). Эти тестовые случаи делаются доступными в специальном репозитории (10), так что все поставщики услуг могут протестировать взаимодействие своих сервисов с сервисами других поставщиков, включая еще не разработанные сервисы (11). Инженеры могут непрерывно тестировать требуемые сервисы в режиме онлайн, чтобы периодически убеждаться в том, что их сервисы работают в среде выполнения именно так, как замышлялось.
Рис. 1. Процесс онлайн-тестирования. Совет по хореографии устанавливает бизнес-цели (1) и публикует модель композиции сервисов, а также сопровождающую ее спецификацию (2). Поставщики услуг (торговые предприятия аэропорта, транспортные компании и т. д.) выявляют новые возможности для бизнеса и регистрируют свои сервисы для участия в хореографии (3). Во время работы системы конечные пользователи приводят предписания хореографии (4) в соответствие со спецификацией (5). Это включает установление связей между всеми сервисами (6) и образование средств, доступных по подписке (7). Тестировщики выбирают подходящие стратегии тестирования (8) и выявляют конкретные тестовые случаи для возможных сервисов (9). Эти тестовые случаи делаются доступными в специальном репозитории (10), так что все поставщики услуг могут протестировать взаимодействие своих сервисов с сервисами других поставщиков, включая еще не разработанные сервисы (11). Инженеры могут непрерывно тестировать требуемые сервисы в режиме онлайн, чтобы периодически убеждаться в том, что их сервисы работают в среде выполнения именно так, как замышлялось.

 

Нуно Антунес (Nuno Antunes) и Марко Виейра (Marco Vieira) написали статью «Тестирование защиты от несанкционированного проникновения веб-сервисов» (Penetration Testing in Web Services). Авторы исследуют эффективность автоматических инструментов определения уязвимостей приложений, основанных на использовании веб-сервисов. Хотя автоматизированный подход к обнаружению уязвимостей имел некоторый успех, результаты сильно уступали тем, которые получались при проверке кода экспертами. У инструментов также имелось значительное число ложноположительных срабатываний, что сводило на нет многие преимущества автоматизированного подхода из-за появления лишней работы. Наличие злоумышленников приводит к тому, что в некоторых областях тестирования проверка защиты от несанкционированного проникновения является скорее искусством, а не наукой. Для эффективного внедрения экспертных знаний в процесс тестирования требуются дополнительные исследования.

Авторами статьи «Развитие области комбинаторного тестирования взаимодействий» (Moving Forward with Combinatorial Interaction Testing) являются Кемаль Йилмаз (Cemal Yilmaz), Гульсен Демироз (Gulsen Demiroz), Угур Коч (Ugur Koc), Сандро Фуше (Sandro Fouche), Мира Коэн (Myra B. Cohen) и Адам Портер (Adam Porter). В последние годы комбинаторное тестирование взаимодействий (Combinatorial Interaction Testing, CIT) стало модной темой, о чем свидетельствуют появление десятков инструментальных средств, исследовательских статей, возникновение ежегодного симпозиума на Международной конференции по тестированию программного обеспечения, верификации и валидации (International Conference on Software Testing, Verification, and Validation). В данной статье приводится краткий обзор состояния дел в области CIT.

Последнюю статью тематической подборки «Тестирование мобильных приложений — методы исследований, проблемы и потребности» (Mobile Application Testing — Research Practice, Issues, and Needs) представили Джерри Гао (Jerry Gao), Сяоин Бай (Xiaoying Bai), Вей-Тек Цай (Wei-Tek Tsai) и Тадахиро Уэхара (Tadahiro Uehara). Авторы анализируют имеющиеся инструменты для тестирования мобильных приложений. Сравниваются многочисленные популярные коммерческие средства и инструменты с открытыми исходными текстами. Обсуждаются открытые проблемы в области тестирования мобильных приложений [1].

Вне тематической подборки опубликованы две крупные статьи. Статью «Прозрачность приложений и манипулирование ими» (Application Transparency and Manipulation) написали Андреас Дан (Andreas Dahn) и Клеменс Кап (Clemens Cap). Манипулирование приложениями производится через Интернет зачастую незаметным образом — пользователи не знают, как работают веб-сервисы и что делается с данными. Это может вызывать недоверие к приложениям или приводить к их недостаточно эффективному использованию. Большая часть манипуляций происходит в сетевой инфраструктуре, и пользователи их не видят. В то же время, фильтрация контента может быть явной, направленной на поддержку некоторой заявленной политики (не обязательно понятной пользователям), либо неявной в тех случаях, когда поставщик услуг предпочитает не раскрывать свои экономические, политические или социальные мотивы. Поставщики сервисов, стремящиеся к обеспечению прозрачности своих приложений, могли бы начать с разъяснительных сообщений и поддержки большего числа опций в пользовательском интерфейсе, позволяющих изменять или сортировать результаты. Однако базовые сетевые технологии, такие как переадресация пакетов и разрешение доменных имен, никогда не будут полностью видимыми, и поставщики услуг всегда будут в некоторой степени манипулировать поведением приложений, чтобы защитить свои бизнес-интересы. В конечном счете улучшенной прозрачности приложений удастся достичь лишь тогда, когда пользователи станут более информированными и потребуют обеспечить прозрачность от поставщиков услуг.

Последняя крупная статья номера называется «Расширение IP: IPv4 с 64-битовыми адресами» (Enhanced IP: IPv4 with 64-Bit Addresses).Ее написали Вильям Химяк (William Chimiak), Сэмуэль Паттон (Samuel Patton) и Стефан Янански (Stephen Janansky). В прошлом несколько раз приходилось изменять IPv4, чтобы смягчить проблему исчерпания адресного пространства, и основное решение обеспечивала система трансляции адресов CGN (Carrier-Grade Network address translation), которая позволяла многим оконечным узлам совместно использовать небольшой пул адресов и обеспечивала временный выход из положения интернет-провайдерам с ограниченным пространством IP-адресов. Однако для работы CGN требуется сложный обмен состояниями, а кроме того, из-за трансляции адресов возникают значительные трудности при мониторинге соблюдения законов и ведении учета. Надвигающееся истощение адресного пространства IPv4 побудило авторов статьи к разработке Enhanced IP. В EnIP используется частное адресное пространство в духе IPv4+4, но имеется большая гибкость адресации и не требуется маршрутизация. EnIP расширяет адресное пространство IPv4 в 17,9 млн раз. Для EnIP не требуется трансляция сетевых адресов с сохранением состояния.

Литература

  1. Джерри Гао, Сяоин Бай, Вей-Тек Цай,Тадахиро Уэхара. Тестирование мобильных приложений // Открытые системы.СУБД. — 2014. — № 3. — С. 40–45. http://www.osp.ru/os/2014/03/13040836 (дата обращения: 28.05.2014).

Сергей Кузнецов (kuzloc@ispras.ru) — профессор, МГУ (Москва).