СИСТЕМА И СПОСОБ ДЛЯ ВЫБОРА РЕЖИМОВ ВЫПОЛНЕНИЯ ТЕСТОВОГО ПРИМЕРА ДЛЯ АВТОМАТИЗАЦИИ ПОВТОРНО ВЫПОЛНЯЕМОГО ТЕСТИРОВАНИЯ
SYSTEM AND METHOD FOR TEST CASE EXECUTION MODES FOR AUTOMATION OF REPEATED TESTING

ПЕРЕКРЕСТНАЯ ССЫЛКА НА РОДСТВЕННЫЕ ЗАЯВКИ
Данная заявка соотносится с патентной заявкой США, которая имеет номер в реестре поверенного MSFT-4149, озаглавленной «Automated Test Case Verification That Is Loosely Coupled With Respect To Automated Test Case Execution», поданной вместе с данной заявкой, и с патентной заявкой США, которая имеет номер в реестре поверенного MSFT-4150, озаглавленной «Test Automation Stack Layering», поданной вместе с данной заявкой.
ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
Данное изобретение относится к тестированию программного обеспечения для приложений и, в частности, к извлечению режимов выполнения из тестовых примеров.
ПРЕДШЕСТВУЮЩИЙ УРОВЕНЬ ТЕХНИКИ
Основные стадии в жизненном цикле разработки программного обеспечения - стадия проектирования, стадия кодирования, стадия завершения кодирования, стадия альфа-тестирования, стадия бета-тестирования и, наконец, выпуск на рынок. На стадии проектирования определяют проблемы клиента, на которые будет ориентирован данный программный продукт, и функциональные возможности программного продукта. Как правило, завершение функционального описания отмечает конец стадии проектирования. Стадия кодирования к этому времени может уже начаться. Стадии завершения кодирования достигают, когда код написан, но не обязательно отлажен. Стадия альфа-тестирования отмечает момент времени, когда продукт является устойчивым; то есть большинство основных ошибок найдено. На стадии бета-тестирования продукт, в идеальном случае, свободен от всех основных ошибок; те ошибки, которые остались, должны быть, по существу, безвредными. Когда продукт проходит заключительный контроль обеспечения качества, он готов к выпуску на рынок.
Поскольку никто не хочет иметь программное обеспечение, которое не работает, тестирование является важной частью жизненного цикла, и оно может охватывать несколько стадий. Тестирование программного обеспечения вовлекает создание тестового примера (или, более вероятно, набора тестовых примеров), выполнение программного обеспечения с тестовым примером в качестве входной информации и проверку того, что работа программного обеспечения с тестовым примером в качестве входной информации приводит к ожидаемым результатам. Тестирование программного обеспечения может проводиться вручную людьми или программным образом, которое называют автоматизированным тестированием программного обеспечения. В идеале тестирование программного обеспечения должно начинаться как можно раньше в жизненном цикле программного обеспечения. В общем случае, однако, программное обеспечение вообще не может тестироваться, пока не закончена стадия проектирования, потому что до тех пор, пока стадия проектирования не закончена, ожидаемые результаты не могут быть определены. Как правило, на стадии кодирования разработчик вручную тестирует свой код, когда он его пишет. Автоматизированное тестирование программного обеспечения обычно может начинаться только намного позже в процессе разработки.
Иногда единственное тестирование, которое проводится, выполняется разработчиком, который вручную выполняет тестирование по мере кодирования. Разработчик, который тестирует свою собственную работу, однако, вероятно, пропустит ошибки, которые может найти кто-нибудь, кто не так эмоционально принимает участие в работе над кодом. Кроме того, возможности тестирования разработчиком обычно ограничиваются функциональными возможностями его кода и интеграцией его кода с ограниченным количеством других приложений.
Для борьбы с этими недостатками многие фирмы-разработчики программного обеспечения имеют отдельную группу тестирования программного обеспечения, которая также тестирует программное обеспечение, часто используя по меньшей мере частично автоматизированные методики тестирования. Как правило, группа тестирования тестирует комплексное взаимодействие по функциональным особенностям и по приложениям, создавая и выполняя тестовые примеры. В общем случае считается, что раннее участие группы тестирования в жизненном цикле продукта, даже на стадии проектирования, приводит ко многим выгодам, которые включают в себя идентификацию несогласованностей в описании функциональных возможностей, идентификацию трудных для тестирования областей и многое другое. В общем случае, однако, усилия, требуемые для сохранения работоспособности каждого тестового примера при постоянных изменениях в определении особенностей, реализации и настройки пользовательского интерфейса (UI), делают этот подход практически неприменимым. Следовательно, создание и выполнение тестовых примеров обычно является срочным вопросом, который появляется в заключительной части разработки продукта. Тестирование и, в частности, автоматизированное тестирование, таким образом, имеет тенденцию постоянно отставать. Было бы полезно, если бы существовал способ создания тестовых примеров и использования автоматизированного тестирования как можно раньше в жизненном цикле программного продукта, в идеале - на стадии проектирования.
Разработка набора тестовых примеров является сложной проблемой всякий раз, когда она возникает. Для тестирования определенной особенности приложения должны создаваться многочисленные наборы тестов. Например, приложение может разрешать множество режимов взаимодействия с особенностью: через мышь, клавиатуру, графический планшет, программное обеспечение для доступа, программным образом и так далее. Поэтому для обеспечения всестороннего тестирования данной особенности комплект тестов должен включать в себя набор тестов, взаимодействующих с данной особенностью через мышь (набор текста, точно так, как может делать пользователь); один набор, взаимодействующий с особенностью через клавиатуру, один набор, взаимодействующий с особенностью через графический планшет, один набор, взаимодействующий с особенностью через программное обеспечение для доступа для активизации действия по умолчанию и иной имитации доступности приложения, один набор, взаимодействующий с особенностью через модель кодирования приложения, и так далее. Было бы полезно, если бы существовал способ удостовериться в том, что созданный комплект тестовых примеров обеспечивает всестороннее тестирование особенности или приложения и, дополнительно, уменьшить общее количество тестовых примеров, которые должны создаваться для обеспечения всестороннего тестирования.
Кроме того, большая часть или вся логика в каждом из этих наборов тестов идентична логике в других наборах тестов, и обычно большая часть или вся обработка верификации результатов также идентична. Следовательно, многие тесты идентичны или почти идентичны, просто изменяются опции выполнения. Например, для всех описанных выше многочисленных форм входной информации ожидаемые результаты, вероятно, идентичны. Следовательно, создание тестового примера для каждого из этих источников входной информации обычно требует создания отдельного способа для выполнения тестирования для каждого из источников входной информации и дублирования большей части оставшегося сценария тестирования. Создание того же самого теста много раз с незначительными изменениями является утомительным и отнимающим много времени. Было бы полезно, если бы существовал способ устранить или значительно уменьшить это дублирующее кодирование и уменьшить общее количество тестовых примеров, которые должны создаваться.
Тестовый пример часто включает в себя код, написанный для определения того, совпадают ли фактические результаты выполнения тестового примера с ожидаемыми результатами (что называют верификацией результатов, или верификацией). Изменение деталей конкретной верификации результатов или добавление новой верификации результатов обычно требует модификации каждого тестового примера. Было бы полезно, если бы код верификации существовал отдельно от тестового примера, делая тестовый пример проще для понимания, и код верификации проще для многократного использования и обслуживания.
Детали выполнения часто трудно кодировать в тестовый пример, т.к. требуется завершение стадии проектирования до написания тестового примера. Было бы полезно, если бы существовал способ описания тестовых примеров в терминах пользовательских действий, а не в терминах определенных деталей выполнения, так, чтобы тестовые примеры могли создаваться раньше в жизненном цикле разработки программного обеспечения.
Тестирование приложения является критической стадией при первоначальной разработке приложения и при выполнении модификации приложения. Разработчики приложений прилагают большие усилия на стадии тестирования при разработке приложения. Такое тестирование помогает обеспечивать, чтобы приложение отвечало ожидаемым образом на определенные действия.
Как правило, тестовый пример кодируют для тестирования определенного компонента приложения. Например, тестовый пример пользовательского интерфейса (UI) может содержать код, представляющий идентификацию текстовых полей, кнопок, меню и т.п., тогда как тестовый пример интерфейса прикладного программирования (API) может осуществлять связь непосредственно с API, который тестируют. Создание тестового примера для каждого из этих способов выполнения может требовать создания прежде всего того же самого тестового примера, с единственным различием между тестовыми примерами, которым является способ выполнения. Таким образом, один тестовый пример может определять тестирование компонента приложения, используя кнопки, другой может определять тестирование компонента, используя объектную модель, и третий - используя ввод информации с помощью клавиатуры. Кроме способа выполнения, эти тестовые примеры и ожидаемые результаты их выполнения могут быть идентичными.
Дополнительно, тестовый пример может требовать выполнения многочисленных операций, причем каждая операция может завершаться, используя любой из множества способов выполнения (например, активизируя кнопки или меню с помощью мыши, активизируя кнопки или меню с помощью клавиатуры, активизируя меню с помощью мыши, а кнопки - с помощью клавиатуры, и т.д.). Количество тестовых примеров, необходимых для тестирования всех возможных комбинаций способов выполнения для завершения множества операций приложения, может быть большим, даже для относительно простого приложения.
Разработка такого большого объема тестовых примеров для тестирования приложения с помощью всех способов выполнения является пугающей перспективой. Такая задача может требовать создания многочисленных фактически идентичных тестовых примеров, которые отличаются только способом выполнения. Кроме того, обслуживание тестового примера может быть еще более трудоемким и отнимающим больше времени, чем создание тестового примера. Когда приложение изменяют, применяемые тестовые примеры могут требовать, чтобы обновление гарантировало сохранение совместимости. Обновление такого большого количества тестовых примеров, созданных для каждого способа выполнения, аналогично является пугающей задачей.
Дополнительно, некоторые способы выполнения могут вообще не тестироваться в тестовом примере. Тестовый пример может проектироваться для определения того, выполняет ли приложение определенное действие, не вызывая неожиданных результатов. Тестовый пример может быть не заинтересован в способе выполнения действий, которые могут казаться не имеющими прямого отношения к цели тестового примера. Было бы выгодным, однако, если бы даже не имеющие прямого отношения этапы тестового примера проверялись с помощью различных способов выполнения, даже когда основное внимание тестирования находится на некотором другом аспекте приложения. Если тестовый пример прежде всего предназначен, например, для тестирования способности приложения рисовать синий прямоугольник, то тестовый пример может включать в себя этап открытия нового документа. Поскольку открытие нового документа может не иметь прямого отношения к цели тестового примера, тестовый пример может обеспечивать действие, которое будет закончено только с использованием мыши. Было бы полезным, однако, тестировать все способы выполнения на предмет открытия нового документа, потому что, например, может быть обнаружено, что открытие нового документа с использованием клавиатуры приводит к тому, что синий прямоугольник фактически окрашен в красный цвет, имеет форму круга или иначе отличается от ожидаемого результата.
Поэтому существует потребность тестирования приложений, используя различные способы выполнения, не требуя, чтобы фактически идентичные тестовые примеры создавались для каждого способа выполнения или для каждой комбинации возможных способов выполнения.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Данное изобретение предоставляет возможность выполнять один тестовый пример с помощью многих способов выполнения или комбинаций способов выполнения. Эти способы выполнения называют «режимами выполнения». Изобретение предоставляет возможность выполнять один тестовый пример с помощью различных режимов выполнения, не требуя, чтобы громоздкий, подробный код тестового примера учитывал многочисленные комбинации режимов выполнения.
Изобретение отделяет режим выполнения от тестового примера и оставляет выбор режима выполнения отдельному устройству, называемому «менеджером (средством управления) режимов выполнения». Тестовый пример или этап тестового примера могут вызывать менеджер режимов выполнения. Менеджер режимов выполнения может выбирать режим выполнения и посылать режим выполнения назад для выполнения с помощью тестового примера. Менеджер режимов выполнения может выбирать режим выполнения, основываясь на предыдущих режимах выполнения, посланных для предыдущих вызовов от тестового примера. Менеджер режимов выполнения может отслеживать ранее обеспеченные режимы выполнения и циклически проходить через все доступные режимы выполнения. Это может обеспечивать сбалансированное тестирование приложения с помощью всех доступных режимов выполнения.
Дополнительно «глобальное» присвоение весовых коэффициентов может применяться менеджером режимов выполнения при всех принятиях решений относительно выбора соответствующего режима выполнения. Например, если меню в приложении было реструктурировано, то глобальное присвоение весовых коэффициентов может применяться, сообщая менеджеру режимов выполнения использовать меню 80% времени и кнопки панели 20% времени. Это глобальное присвоение весовых коэффициентов может отменять нормальную работу менеджера режимов выполнения, выбирая каждый режим выполнения соответствующее число раз.
Дополнительно, тестовый пример через «местное» присвоение весовых коэффициентов может отменять глобальное присвоение весовых коэффициентов и указывать менеджеру режимов выполнения, например, использовать кнопку панели для выполнения этапа «открытия нового документа» тестового примера. Эта отмена может быть важной, если, например, инструментальная панель была недавно реструктурирована, и испытатель (лицо, выполняющее тестирование) хочет гарантировать, что она работает должным образом в конкретном тестовом примере. Альтернативно, местное присвоение весовых коэффициентов может использоваться совместно или независимо относительно глобального присвоения весовых коэффициентов так, что оба присвоения весовых коэффициентов учитываются при выполнении режима.
ПЕРЕЧЕНЬ ЧЕРТЕЖЕЙ
Предшествующее описание сущности изобретения, а также последующее подробное описание иллюстративных вариантов осуществления лучше осмысливать при их чтении совместно с прилагаемыми чертежами. Для иллюстрации изобретения на чертежах показан пример конструкций изобретения, однако, изобретение не ограничено конкретными способами и раскрытыми средствами.
На чертежах:
фиг.1 - структурная схема, которая показывает пример вычислительной конфигурации, в которой могут быть реализованы аспекты выполнения тестового примера с извлечением режима выполнения из тестового примера;
фиг.2 - структурная схема варианта осуществления примера системы для выполнения тестового примера с извлечением режима выполнения.
фиг.3 - структурная схема примерных режимов выполнения;
фиг.4 - схема последовательности операций способа выполнения тестового примера с извлечением режима выполнения из тестового примера; и
фиг.5A-5B - схема последовательности операций альтернативного способа выполнения тестового примера с извлечением режима выполнения из тестового примера.
ПОДРОБНОЕ ОПИСАНИЕ ИЛЛЮСТРАТИВНЫХ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ
Краткий обзор
Отделение режимов выполнения от тестовых примеров и объединение режимов выполнения в менеджере режимов выполнения позволяет более тщательно тестировать приложение. Изобретение обеспечивает более полное тестирование, предоставляя возможность выполнять один тестовый пример через использование всех режимов выполнения и комбинаций режимов выполнения. При отделении режима выполнения от тестового примера менеджер режимов выполнения может продолжать циклически проходить все различные режимы выполнения для каждого этапа тестового примера. Таким образом, могут проверяться многочисленные комбинации различных способов выполнения для каждого этапа, обеспечивая большую полноту проверки. Изобретение может предоставлять возможность обнаружения ошибки при определенной комбинации способов выполнения для каждого этапа тестового примера, где данная ошибка, возможно, не была замечена раньше. Дополнительно, изобретение обеспечивает повторное выполнение такого тестового примера с точными режимами выполнения для определения того, была ли ошибка устранена.
Пример вычислительной конфигурации
Фиг.1 и последующее обсуждение предназначены для обеспечения краткого обобщенного описания соответствующей вычислительной конфигурации, в которой может быть реализован примерный вариант осуществления изобретения. Следует понимать, однако, что карманные, портативные и другие вычислительные устройства всех видов рассматриваются для использования в связи с настоящим изобретением. Хотя ниже описан универсальный компьютер, он является всего лишь одним из примеров. Настоящее изобретение также может работать на «тонком клиенте», который может совместно работать и взаимодействовать с сетевым сервером. Таким образом, примерный вариант осуществления изобретения может быть реализован в среде размещенных в сети услуг, в которую вовлечено очень небольшое или минимальное количество ресурсов клиента, например в сетевой среде, в которой устройство-клиент служит просто в качестве браузера или интерфейса к «всемирной паутине».
Хотя это и не требуется, данное изобретение может быть реализовано через интерфейс прикладного программирования (API) для использования разработчиком или испытателем, и/или его может включать в себя программное обеспечение обзора сети, которое будет описано в общем контексте машиноисполняемых команд, таких как модули программ, исполняемые одним или большим количеством компьютеров (например, клиентскими рабочими станциями, серверами или другими устройствами). В общем случае, модули программ включают в себя процедуры, программы, задачи, компоненты, структуры данных и т.п., которые выполняют конкретные задачи или воплощают определенные абстрактные типы данных. Как правило, функциональные возможности модулей программ могут объединяться или распределяться при желании в различных вариантах осуществления. Кроме того, специалисты должны признать, что изобретение может быть реализовано с помощью других конфигураций компьютерной системы. Другие известные вычислительные системы, среды и/или конфигурации, которые могут быть подходящими для использования изобретением, включают в себя, но не в ограничительном смысле, персональные компьютеры (ПК), банкоматы, компьютеры-серверы, карманные или портативные компьютеры, многопроцессорные системы, системы на основе микропроцессора, программируемую бытовую электронику, сетевые ПК, миникомпьютеры, универсальные компьютеры и т.п. Вариант осуществления изобретения может также быть реализован в распределенных вычислительных конфигурациях, в которых задачи выполняются удаленными устройствами обработки данных, которые связаны через сеть связи или другие среды передачи данных. В распределенной вычислительной конфигурации модули программ могут быть расположены и в местных, и в удаленных компьютерных носителях данных, которые включают в себя запоминающие устройства.
Фиг.1 таким образом показывает пример соответствующей конфигурации 100 вычислительной системы, в которой может быть реализовано данное изобретение, хотя, как пояснено выше, конфигурация 100 вычислительной системы является только одним из примеров подходящей вычислительной конфигурации, и она не вводит никаких ограничений относительно возможностей использования или функциональных возможностей изобретения. Вычислительная конфигурация 100 не должна интерпретироваться как имеющая какую-либо зависимость или требования, относящиеся к какому-то одному или к комбинации компонентов, показанных в примерной конфигурации 100.
Обращаясь к фиг.1, примерная система для реализации изобретения включает в себя универсальное вычислительное устройство в форме компьютера 110. Компоненты компьютера 110 могут включать в себя, но не в ограничительном смысле, процессор 120, системную память 130 и системную шину 121, которая связывает различные системные компоненты, включая системную память, с процессором 120. Системная шина 121 может относиться к любому из нескольких видов шинных структур, которые включают в себя шину памяти или контроллер памяти, периферийную шину и локальную шину, используя любую из разнообразия шинных архитектур. Для примера, а не в качестве ограничения, такая архитектура включает в себя шину архитектуры, соответствующей промышленному стандарту (ISA), шину микроканальной архитектуры (MCA), шину расширенной стандартной архитектуры для промышленного применения (EISA), локальную шину Ассоциации по стандартам в области видеоэлектроники (VESA) и шину межсоединения периферийных устройств (PCI) (также известную как шина расширения).
Компьютер 110 обычно включает в себя различные машиночитаемые носители. Машиночитаемые носители могут быть любыми доступными носителями, к которым может обратиться компьютер 110, и они включают в себя как энергозависимые, так и энергонезависимые, как съемные, так и несъемные носители. Для примера, а не в качестве ограничения, машиночитаемые носители могут содержать компьютерные носители данных и среды связи. Компьютерные носители данных включают в себя как энергозависимые, так и энергонезависимые, как съемные, так и несъемные носители, воплощенные с помощью любого способа или технологии для хранения информации, такой как машиночитаемые команды, структуры данных, модули программ или другие данные. Компьютерные носители данных включают в себя, но не в ограничительном смысле, оперативное запоминающее устройство (ОЗУ, RAM), постоянное запоминающее устройство (ПЗУ, ROM), электрически стираемое программируемое постоянное запоминающее устройство (EEPROM), флэш-память или память другой технологии, ПЗУ на компакт-диске (CD-ROM), цифровые универсальные диски (DVD) или другое запоминающее устройство на оптическом диске, магнитные кассеты, магнитную ленту, накопитель на магнитном диске или другие магнитные запоминающие устройства, или любой другой носитель, который может использоваться для хранения требуемой информации и к которому компьютер 110 может осуществлять доступ. Среды связи обычно воплощают машиночитаемые команды, структуры данных, модули программ или другие данные в модулированном информационном сигнале, таком как несущая, или используют другой механизм транспортировки данных, и включают в себя любые среды доставки информации. Термин «модулированный информационный сигнал» означает сигнал, одна или большее количество характеристик которого установлены или изменены таким образом, чтобы кодировать информацию в этом сигнале. Для примера, а не в качестве ограничения, среды связи включают в себя проводные среды, такие как проводная сеть или прямое проводное соединение, и беспроводные среды, такие как акустические, радиочастотные, инфракрасные и другие беспроводные среды. Понятие «машиночитаемый носитель» также включать в себя комбинации любых из приведенных выше носителей и сред.
Системная память 130 включает в себя компьютерные носители данных в форме энергозависимой и/или энергонезависимой памяти, такой как ПЗУ 131 и ОЗУ 132. Базовая система ввода-вывода (BIOS) 133, которая содержит основные процедуры, которые помогают перемещать информацию между элементами в пределах компьютера 110, например, во время запуска, обычно хранится в ПЗУ 131. ОЗУ 132 обычно содержит данные и/или модули программ, которые непосредственно доступны для обработки и/или в данный момент обрабатываются процессором 120. Для примера, а не в качестве ограничения, фиг.1 показывает операционную систему 134, прикладные программы 135, другие модули 136 программ и данные 137 программ. ОЗУ 132 может содержать другие данные и/или модули программ.
Компьютер 110 может также включать в себя другие съемные/несъемные, энергозависимые/энергонезависимые компьютерные носители данных. Только для примера, фиг.1 показывает накопитель 141 на жестком диске, который считывает информацию или записывает информацию на несъемный энергонезависимый магнитный носитель, магнитный дисковод 151, который считывает информацию или записывает информацию на съемный энергонезависимый магнитный диск 152, и оптический дисковод 155, который считывает информацию или записывает информацию на съемный энергонезависимый оптический диск 156, такой как CD ROM или другие оптические носители. Другие съемные/несъемные, энергозависимые/энергонезависимые компьютерные носители данных, которые могут использоваться в примерной конфигурации, включают в себя, но не в ограничительном смысле, кассеты с магнитной лентой, платы флэш-памяти, цифровые универсальные диски, цифровую видеоленту, полупроводниковые ОЗУ, полупроводниковые ПЗУ и т.п. Накопитель 141 на жестком диске обычно подсоединен к системной шине 121 через интерфейс несъемной памяти, такой как интерфейс 140, и магнитный дисковод 151 и оптический дисковод 155 обычно подсоединены к системной шине 121 с помощью интерфейса съемной памяти, такого как интерфейс 150.
Дисководы и накопители и связанные с ними компьютерные носители данных, обсуждаемые выше и показанные на фиг.1, обеспечивают хранение машиночитаемых команд, структур данных, модулей программ и других данных для компьютера 110. На фиг.1, например, жесткий диск 141 показан в качестве хранилища операционной системы 144, прикладных программ 145, других модулей 146 программ и данных 147 программ. Следует отметить, что эти компоненты могут быть или теми же самыми, или могут отличаться от операционной системы 134, прикладных программ 135, других модулей 136 программ и данных 137 программ. Операционной системе 144, прикладным программам 145, другим модулям 146 программ и данным 147 программ присвоены другие обозначения для того, чтобы показать, что, как минимум, они являются отличающимися копиями. Пользователь может вводить команды и информацию в компьютер 110 через устройства ввода данных, такие как клавиатура 162 и координатно-указательное устройство 161, обычно называемое «мышь», шаровой манипулятор или сенсорная панель. Другие устройства ввода данных (не показаны) могут включать в себя микрофон, джойстик, игровую клавиатуру, спутниковую антенну, сканер или подобные им устройства. Эти и другие устройства ввода данных часто подсоединяются к процессору 120a-f через интерфейс 160 пользовательского ввода, который соединен с системной шиной 121, но могу быть подсоединены с помощью других структур интерфейсов и шин, таких как параллельный порт, игровой порт или универсальная последовательная шина (USB).
Монитор 191 или другой тип устройства отображения также соединен с системной шиной 121 через интерфейс, такой как видеоинтерфейс 190. Кроме монитора 191, компьютеры могут также включать в себя другие периферийные устройства вывода данных, такие как динамики 197 и принтер 196, которые могут быть подсоединены через интерфейс 195 периферийных устройств вывода данных.
Компьютер 110 может работать в сетевой среде, используя логические соединения с одним или большим количеством удаленных компьютеров, таких как удаленный компьютер 180. Удаленный компьютер 180 может быть персональным компьютером, сервером, маршрутизатором, сетевым ПК, одноранговым устройством сети или другим обычным сетевым узлом, и он обычно включает в себя многие или все из элементов, описанных выше относительно компьютера 110, хотя только запоминающее устройство 181 показано на фиг.1. Логические соединения, изображенные на фиг.1, включают в себя локальную сеть (ЛС) 171 и глобальную сеть (ГС) 173, но могут также включать в себя другие сети. Такие сетевые среды являются обычными в офисах, компьютерных сетях масштаба предприятия, корпоративных сетях (интранет) и Интернет.
При работе в сетевой среде ЛС компьютер 110 соединяется с ЛС 171 через сетевой интерфейс или адаптер 170. При работе в сетевой среде ГС компьютер 110 обычно включает в себя модем 172 или другое средство для установления связи через ГС 173, такую как Интернет. Модем 172, который может быть внутренним или внешним, может быть подсоединен к системной шине 121 через интерфейс 160 пользовательского ввода или другой соответствующий механизм. В сетевой среде модули программ, изображенные относительно компьютера 110 или его частей, могут храниться в удаленном запоминающем устройстве. Для примера, а не в качестве ограничения, фиг.1 показывает удаленные прикладные программы 185 как находящиеся в запоминающем устройстве 181. Следует признать, что показанные сетевые соединения являются примерными, и могут использоваться другие средства установления линии связи между компьютерами.
Специалисты должны признать, что компьютер 110 или другие клиентские устройства могут использоваться как часть компьютерной сети. В этом отношении настоящее изобретение принадлежит к любой компьютерной системе, имеющей любое количество запоминающих устройств или модулей памяти, и любое количество приложений и процессов, выполняющихся в любом количестве запоминающих устройств или томов. Вариант осуществления настоящего изобретения может применяться к конфигурации с компьютерами-серверами и компьютерами-клиентами, используемыми в сетевой среде, которая имеет удаленные или местные запоминающие устройства. Настоящее изобретение может также применяться к автономному вычислительному устройству, которое имеет функциональные возможности языка программирования, возможности интерпретации и выполнения.
Система и способ для тестирования приложения через извлечение режима выполнения
Фиг.2 изображает структурную схему системы 5 для выполнения тестового примера с извлечением режима выполнения в соответствии с одним из вариантов осуществления изобретения. Система 5 может включать в себя одно или большее количество из: средства 50 выполнения теста, тестового примера 20, менеджера 30 режимов, реестра 31 и библиотеки 40 автоматической обработки режимов.
Средство 50 выполнения теста может быть одним средством 50a выполнения теста или может быть множеством средств выполнения теста 50a-c и т.д. Каждое из средств выполнения теста может находиться на одном или множестве компьютеров, каждый из которых может быть компьютером 110, который описан относительно фиг.1. Средства 50a выполнения теста могут все выполнять один и тот же тестовый пример, такой как тестовый пример 20, или каждое средство может выполнять различные тестовые примеры. Дополнительно средства 50a-c выполнения теста могут осуществлять связь с одним менеджером 30 режимов, или каждое средство может осуществлять связь с соответствующим менеджером режимов (не показаны). Средства 50a-c выполнения теста могут выполнять тестовый пример 20 через пользователя (не показан), который нажимает кнопки, например, на средствах 50a-c выполнения теста. Альтернативно, средства 50a-c выполнения теста могут быть частью проекта автоматизации лабораторных тестирований, который активизирует начальное событие для выполнения тестового примера 20. Средства 50a-c выполнения теста могут выполнять тестовый пример 20 также с помощью других средств.
Тестовый пример 20 может тестировать один или большее количество компонентов или свойств приложения (не показано). Приложение может быть любым процессом, машиной, промышленным изделием, композицией, программой, программным обеспечением, аппаратными средствами, устройством, механизмом или материалом или любыми их модификациями. Например, приложение может быть программой, которая выполняется в любой вычислительной системе или среде. Также, например, приложение может быть компьютерными аппаратными средствами. Приложение может вместо этого быть механизмом тестирования двери, в котором кувалдой стучат по ручке двери для тестирования силы, упругости или удобства использования ручки двери и дверных петель, прикрепленных к двери. Приложение может находиться в процессе разработки первый раз, быть обновленной версией предыдущего приложения, ранее выпущенным приложением, которое конечный пользователь изменил некоторым образом, и т.п.
Тестовый пример 20 может выполнять функциональное, интеграционное или другое тестирование приложения. Функциональное тестирование может включать в себя тестирование конкретного функционального компонента приложения. На функциональном уровне компонент может содержать многочисленные режимы, для каждого из которых может требоваться тестирование. Дополнительно для каждой комбинации режимов выполнения для компонентов может требоваться, чтобы тестирование гарантировало тестирование по всем потенциальным комбинациям и охватывало все различные возможности. Интеграционное тестирование тестирует способ, с помощью которого объединяются два или большее количество взаимодействующих компонентов, их совместную работу и влияние друг на друга.
Тестовый пример 20 может выполнять или требовать выполнения одного или множества режимов выполнения. «Режим выполнения» является описанием действия, которое будет выполняться для или с помощью приложения. Режимом выполнения могут быть, например, «открыть новый документ», или «нарисовать синий прямоугольник», или «ударить по ручке двери кувалдой». Могут существовать различные виды режимов выполнения.
Один вид режима выполнения может иметь только один возможный способ выполнения. Например, такой режим выполнения может требовать, чтобы приложение активизировало кнопку на текстовом поле с помощью нажатия клавиши «пробел» на клавиатуре. Поскольку режим может выполняться только одним способом, этот режим выполнения может обозначаться как режим «выполнить». Режим «выполнить» может выполняться, не требуя никакой дополнительной информации или действия до выполнения. Система 5 включает в себя режим «выполнить» как режим «выполнить» тестового примера 20.
Режим выполнения может быть родительским режимом выполнения, который состоит из других, дочерних, режимов выполнения. Поскольку родительский режим выполнения может состоять из множества дочерних режимов выполнения, из которых надо выбирать, такие родительские режимы выполнения могут называть режимом «выбрать любой». Этот родительский режим выполнения может быть режимом «выбрать любой», и он может выполняться, используя альтернативные режимы выполнения.
Тестовый пример 20 может включать в себя запрос к режиму 21 «выбрать любой», который запрашивает менеджера режимов выполнения выбрать режим из библиотеки 40 автоматической обработки режимов. Тестовый пример 20 может также включать в себя запрос к режиму 22 «выполнить», который инициирует выполнение режима «выполнить», хранящегося в библиотеке 40 автоматической обработки режимов.
Фиг.3 - структурная схема 200, которая изображает несколько примерных режимов выполнения и показывает зависимость между примерными режимами выполнения. Режим 210 «выбрать любой» может быть предназначен для открытия нового документа. Режим «выбрать любой» открытия нового документа может достигаться с помощью любого из трех дочерних режимов выполнения. Один дочерний режим выполнения режима 210 «выбрать любой» может быть другим режимом 215 «выбрать любой» для открытия нового документа, используя мышь. Другой дочерний режим выполнения режима 210 «выбрать любой» может быть режимом 220 «выполнить», который может быть предназначен для открытия нового документа с помощью активизации кнопки на текстовом поле с помощью нажатия клавиши «пробел» на клавиатуре. Третий дочерний режим режима 210 «выбрать любой» может быть режимом 230 «выполнить в любой последовательности», который описан ниже. Как обсуждается ниже, менеджер 30 режимов выполнения может выбирать один из дочерних режимов выполнения 215, 220, 230 для выполнения режима 210 «выбрать любой».
Как уже упоминалось, первый дочерний режим выполнения режима 210 «выбрать любой» может сам быть режимом 215 «выбрать любой», который может быть предназначен для открытия нового документа, используя мышь. Режим 215 «выбрать любой» может состоять из двух дочерних режимов. Один дочерний режим может быть режимом 217 «выполнить» для открытия нового документа, используя мышь для щелчка по определенной кнопке. Если менеджер 30 режимов выполнения выбирает режим 217 «выполнить», то этот режим посылают назад к режиму 210 «выбрать любой» для выполнения. Альтернативно, менеджер 30 режимов выполнения может искать другой дочерний режим режима 215 «выбрать любой», который может быть режимом 216 «выбрать любой» для открытия нового документа, используя мышь для активизации меню.
Режим 216 «выбрать любой» может также содержать два дочерних режима. Один дочерний режим может быть режимом 218 «выполнить» для открытия нового документа, используя мышь для активизации меню и нажимая на кнопку «новый файл» в меню. Второй дочерний режим может быть режимом 219 «выполнить» для открытия нового документа, используя мышь для активизации меню и используя «горячие клавиши» клавиатуры или мнемонические ярлыки, которые непосредственно активизируют применяемый пункт меню. Горячие клавиши могут активизировать кнопку «новый файл» в меню. Поэтому режим 219 «выполнить» может быть «правнуком» режима 210 «выбрать любой», и может существовать режим «выполнить», выбранный для выполнения режима 210 «выбрать любой».
Также могут существовать другие режимы выполнения в дополнение к режимам «выполнить» и «выбрать любой». Может существовать режим 230 «выполнить в любой последовательности», который может требовать выбора всех дочерних режимов для выполнения в любой последовательности. Например, если режим «выполнить в любой последовательности» содержит три дочерних режима, режим 231 «выполнить», режим 232 «выполнить» и режим 233 «выполнить», то менеджер 30 режимов выполнения может посылать каждый дочерний режим «выполнить» 231, 232, 233 к режиму 210 «выбрать любой» в любом порядке для выполнения.
Дополнительно могут существовать другие режимы выполнения, не показанные на фиг.3. Может существовать режим «выполнять в последовательности», который может требовать выбора дочерних режимов для выполнения в необходимом порядке. Может существовать режим «выполнять до», который может требовать выполнения одного или большего количества режимов выполнения до тех пор, пока некоторое условие не будет выполнено. Например, режим «выполнять до» может требовать, чтобы дочерний режим выполнялся до тех пор, пока он не выполнится двадцать раз. Следует понимать, что описанные режимы выполнения являются примерами режимов выполнения, и специалисты должны признать, что могут существовать другие режимы выполнения, используемые в вариантах осуществления изобретения.
Каждый режим выполнения может содержать атрибуты или свойства. Эти атрибуты или свойства могут записываться, например, в атрибуты механизма C# или .NET. Механизм может применять различные свойства к режиму выполнения, включающие в себя способ выполнения для режима выполнения. Например, одно свойство может определять, что режим выполнения выполняется с использованием мыши, в то время как другое свойство может определять выполнение с использованием клавиатуры.
Режимы выполнения могут «не знать», что они - часть большего, родительского режима, такого как режим «выбрать любой». Режимы выполнения, однако, могут «знать» их дочерние режимы. Это также может определяться, например, с помощью атрибутов C# или .NET. Таким образом, атрибут может назначаться режиму выполнения, который маркирует его как, например, режим «выбрать любой». Атрибут может также обеспечивать режиму «выбрать любой» информацию о его дочерних режимах.
Обращаясь назад к фиг.2, которая описана выше, тестовый пример 20 может содержать множество режимов выполнения. Например, тестовый пример 20 для прикладной программы работы с графикой может запрашивать рисование синего прямоугольника в конкретном местоположении на документе. Такой тестовый пример 20 может содержать этапы открытия нового документа, рисования прямоугольника в конкретном местоположении и окрашивания данного прямоугольника в синий цвет. Каждый этап тестового примера может быть режимом 21 «выбрать любой», режимом 22 «выполнить» или любым другим видом режима выполнения. Например, этап открытия нового документа может быть режимом 21 «выбрать любой», содержащим режимы «выполнить», такие как открытие нового документа, используя мышь для активизации меню, или открытие нового документа, используя мышь для активизации инструмента на инструментальной панели, или открытие нового документа, используя клавиатуру для активизации меню. Каждый из этапов рисования и окрашивания прямоугольника может быть режимом 21 «выбрать любой», запрашивая вызов панели проекта или меню с помощью различных дочерних режимов «выполнить». Меню можно активизировать, например, при использовании мыши, клавиатуры, объекта или интерфейса прикладного программирования для обеспечения доступа для пользователей, которые имеют проблемы, например не видят экран компьютера. Клавиатура может использоваться для обеспечения «горячих клавиш» или клавиш управления курсором (с изображением стрелок) для перемещения по меню.
При выполнении тестового примера 20, если этап содержит режим 22 «выполнить», то тестовый пример 20 может выполнять данный режим. Тестовый пример может содержать этап режима «выполнить», если, например, существует только один способ выполнения для завершения этапа. Например, этап может требовать активизации кнопки с помощью нажатия клавиши «ввод» на клавиатуре. Поскольку существует только один способ выполнения этого режима, тестовый пример 20 может выполнять этот режим «выполнить», не вызывая менеджер режимов выполнения.
Однако, если этап содержит, например, режим 21 «выбрать любой», то менеджер 30 режимов выполнения может выбирать дочерний режим выполнения режима 21 «выбрать любой» и посылать выбранный режим к родительскому режиму 21 «выбрать любой» для выполнения.
Менеджер 30 режимов выполнения может находиться в компьютере 110, который описан относительно фиг. 1. Менеджер 30 режимов выполнения может содержать реестр 31 режимов выполнения. Реестр 31 режимов выполнения может содержать список родительских режимов выполнения, таких как режим 21 «выбрать любой», и соотнесенные дочерние режимы. С помощью реестра 31 менеджер 30 режимов выполнения может определять, какой дочерний режим или режимы принадлежат, например, родительскому режиму 21 «выбрать любой».
Каждый режим выполнения или код для каждого режима выполнения может быть расположен в автоматизированной библиотеке 40 режимов, которая связана с менеджером 30 режимов выполнения. Менеджер 30 режимов выполнения может отвечать за обработку запросов от режима 21 «выбрать любой» из тестового примера 20 для выбора дочернего режима для выполнения.
Как отмечено, при выполнении тестового примера 20, содержащего режим 21 «выбрать любой», например режим 21 «выбрать любой» может вызывать менеджер 30 режимов выполнения для того, чтобы менеджер 30 режимов выполнения выбрал и послал назад к режиму 21 «выбрать любой» дочерний (или внучатый и т.д.) режим «выполнить». Менеджер режимов может просматривать список дочерних режимов, связанных с родительским режимом выполнения «выбрать любой», и выбирать один из дочерних режимов выполнения. В завершении этой операции менеджер 31 режимов выполнения может использовать, например, способ отражения. Способ отражения может включать в себя способ, допускающий динамическое программирование, и вовлекает программный поиск атрибутов объектов, таких как режимы выполнения. Через этот способ менеджер 30 режимов выполнения может просматривать объект, такой как режим выполнения, и определять его название, способы поддержки режима выполнения и его свойства или атрибуты. Менеджер 30 режимов выполнения может затем определять свойства или атрибуты дочерних режимов выполнения, например, режима 21 «выбрать любой» и выбирать дочерний режим выполнения (предполагая, что дочерним режимом является режим «выполнить»). С помощью способа отражения дочерний режим может быть реализован и возвращен к режиму 21 «выбрать любой» для выполнения. Если сам дочерний режим выполнения - также режим «выбрать любой», то последовательность повторяется до тех пор, пока не будет выбран режим «выполнить», относящийся к режиму 21 «выбрать любой». Альтернативно, если реестр - база данных или другое хранилище данных, то способ отражения, возможно, не является необходимым для выполнения режима выполнения, если реестр инициализируют с помощью набора указателей функции. Дополнительно, специалистам должно быть понятно, что реестр может быть полностью инициализирован до выполнения тестового примера, а не инициализироваться по запросу во время выполнения тестового примера.
Менеджер 30 режимов выполнения может выбирать дочерний режим выполнения, который должен выполняться следующим для режима 21 «выбрать любой». Например, в первый раз, когда выполняют тестовый пример 20, содержащий режим 21 «выбрать любой», менеджер 30 режимов выполнения может выбирать запрос режима «выполнить», например, используя мышь для активизации меню для открытия нового документа. Когда тестовый пример 20 повторно выполняют, менеджер 30 режимов выполнения может затем выбирать режим «выполнить», требующий открыть новый документ, используя горячие клавиши клавиатуры. Таким образом менеджер 30 режимов выполнения может автоматически изменять способ выполнения для родительского режима 21 «выбрать любой» без определения способа выполнения тестового примера 20. Это извлечение режима выполнения из тестового примера 20 предоставляет возможность тестировать каждый способ выполнения одинаковое количество раз, не требуя создания различных тестовых примеров 20 для учета различных способов выполнения тестового примера 20. Конечно, могут также быть придуманы различные другие алгоритмы выбора.
Следует отметить, что дочерние режимы выполнения могут быть не всегда допустимы и доступны для выбора менеджером 30 режимов выполнения, даже если родительский режим является режимом 21 «выбрать любой» в тестовом примере 20. Например, могут существовать пять различных дочерних режимов «выполнить» для режима 21 «выбрать любой» при рисовании прямоугольника. Один из дочерних режимов «выполнить» может быть предназначен для свободного рисования прямоугольника с помощью мыши. Если тестовый пример 20 требует рисования прямоугольника с точными размерами, то дочерний режим «выполнить» для свободного рисования прямоугольника может быть недопустимым, если менеджер 30 режимов выполнения, просматривая свойства или атрибуты режимов, определяет, что дочерний режим выполнения не предназначен для рисования прямоугольника с точными размерами. Поэтому менеджер режимов выполнения может определять, какие режимы «выполнить» являются недопустимыми, просматривая атрибуты или свойства режима выполнения. Альтернативно, менеджер 30 режимов выполнения может определять, какие режимы выполнения являются недопустимыми, с помощью создания экземпляра режима «выполнить» и затем определения того, способен ли дочерний режим выполнения, продолжая данный пример, рисовать прямоугольник с точными размерами. Альтернативно, менеджер режимов выполнения может контролировать атрибуты, прикрепленные к дочернему режиму, или искать в другом месте способ использования для определения того, допускается ли данный режим.
Отдельно глобальные весовые коэффициенты могут предоставляться менеджеру 30 режимов выполнения так, чтобы менеджер 30 режимов выполнения мог выбирать один дочерний режим «выполнить» чаще, чем другие дочерние режимы «выполнить». Менеджер 30 режимов выполнения может определять, которые из режимов следует посылать к режиму 21 «выбрать любой» из тестового примера 20, основываясь на весах, ассоциированных с каждым режимом. Менеджер режимов выполнения может создавать всю матрицу из действий, которые будут выполняться, основываясь на рассмотрениях этих весов. Таким образом, испытатель может тестировать определенные режимы выполнения чаще, чем другие режимы выполнения для всех тестовых примеров, при желании. Это присвоение весовых коэффициентов может быть полезным, например, если операции с клавиатурой были изменены в приложении. Хотя режим «выбрать любой» может направлять дочерние режимы «выполнить» к вводу информации с помощью мыши и вводу информации с помощью клавиатуры, глобальное присвоение весовых коэффициентов может применяться так, чтобы менеджер режимов выполнения выбирал дочерние режимы, которые запрашивают ввод информации с помощью клавиатуры 80% времени, 100% времени или 96,3% времени, например. Таким образом, ввод информации с помощью клавиатуры может проверяться более тщательно, чем в случае, если бы никакие присвоения весовых коэффициентов не применялись. Дополнительно, если горячие клавиши, например, не работают в приложении, то глобальное присвоение весовых коэффициентов может применяться, сообщая менеджеру 30 режимов выполнения, чтобы он никогда не использовал горячие клавиши для любого тестового примера. Таким образом, тестовые примеры могут выполняться, не приводя к отказам, вызванным более не существующими горячими клавишами.
Местные присвоения весовых коэффициентов могут использоваться для того, чтобы отменить глобальные присвоения весовых коэффициентов. Тестовый пример 20 может включать в себя местные присвоения весовых коэффициентов, и они могут применяться к определенным режимам, а не ко всем режимам в библиотеке 40 автоматической обработки режимов. Например, если глобальное присвоение весовых коэффициентов препятствует использованию горячих клавиш, и испытатель хочет использовать горячие клавиши в течение одного этапа тестового примера, то местное присвоение весовых коэффициентов может использоваться в пределах тестового примера 20, сообщая менеджеру 30 режимов выполнения, чтобы он выбрал дочерний режим «выполнить», который включает в себя использование горячих клавиш. Таким образом, местное присвоение весовых коэффициентов отменяет любое применяемое глобальное присвоение весовых коэффициентов.
В альтернативном варианте осуществления изобретения менеджер 30 режимов выполнения может разрешать «повторное выполнение» для выполнения тестового примера 20. Таким образом может выполняться регрессивное тестирование - тестирование приложения таким же образом, который раньше приводил к отказу или к ошибке для определения того, была ли проблема решена. Менеджер 30 режимов выполнения может запоминать или записывать режимы выполнения, которые выполнялись в течение тестового примера 20. Таким образом, при вызове менеджер 30 режимов выполнения может повторно выполнять тестовый пример 20 точно также, как он выполнялся раньше. Если тестовый пример привел к отказу, и изменение было сделано для решения проблемы, то испытатель может захотеть выполнить регрессивное тестирование, чтобы гарантировать, что проблема решена. Для гарантирования того, что проблема решена, режим 21 «выбрать любой» тестового примера 20, возможно, должен выполняться, используя те же самые дочерние режимы «выполнить», посланные менеджером 30 режимов выполнения в течение выполнения тестового примера, который привел к отказу. Менеджер 30 режимов выполнения поэтому может записывать каждый режим «выполнить», который он посылал для выполнения в течение более раннего выполнения тестового примера, и также записывать порядок, в котором выполнялись режимы «выполнить».
Дополнительно следует отметить, что менеджер 30 режимов выполнения может работать с множеством тестовых примеров, выполняющихся на множестве машин-клиентов. Например, при тестировании приложения могут существовать в один момент времени двадцать компьютеров, каждый из которых выполняет 5000 тестовых примеров для приложения. В одном из вариантов осуществления изобретения может существовать один менеджер режимов выполнения, который осуществляет связь со всеми машинами-клиентами, которые выполняют тестовые примеры. В альтернативном варианте осуществления каждая машина-клиент может включать в себя менеджер 30 режимов выполнения.
Фиг.4 изображает последовательность операций способа 250 выполнения тестового примера с извлечением режима выполнения из тестового примера в соответствии с одним из вариантов осуществления изобретения. На этапе 251 режим 21 «выбрать любой» из тестового примера 20 может передавать информацию менеджеру 30 режимов выполнения. Он может запрашивать, чтобы менеджер режимов выполнения выбрал дочерний режим выполнения, режим «выполнить», и послал дочерний режим выполнения к режиму 21 «выбрать любой». На этапе 252 менеджер 30 режимов выполнения может делать обзор дочерних режимов режима 21 «выбрать любой». На этапе 253 менеджер 30 режимов выполнения может выбирать дочерний режим и посылать выбранный дочерний режим к родительскому режиму «выбрать любой» для выполнения.
Фиг.5A-5B изображают последовательность операций способа 300 выполнения тестового примера с извлечением режима выполнения из тестового примера в соответствии с альтернативным вариантом осуществления изобретения. Способ 300 может начинаться на этапе 305 с события запуска тестового примера. Событие запуска может быть нажатием испытателем кнопки на компьютере-клиенте, таком как средство 50a выполнения теста по фиг.2, что может давать сигнал средству 50a выполнения теста на выполнение тестового примера 20. Альтернативно начальное событие может быть, например, запуском лабораторного процесса автоматизации, который следит за одним или большим количеством компьютеров-клиентов, таких как средства 50a-c выполнения теста, которые выполняют тестовый пример 20 или множество тестовых примеров. Лабораторный проект автоматизации может также создавать или инициализировать менеджер 30 режимов выполнения так, чтобы менеджер 30 режимов выполнения был готов действовать в отношении запросов от тестового примера 20 или множества тестовых примеров.
После события запуска тестовый пример 20 может выполняться на этапе 310. Тестовый пример 20 может быть, например, направлен на прикладную программу работы с графикой и может включать в себя, например, этапы для открытия нового документа, рисования прямоугольника на новом документе и окрашивания данного прямоугольник в синий цвет. Способ 300, применяемый к каждому этапу тестового примера 20 (т.е. открытие нового документа, рисование прямоугольника, окраска данного прямоугольника в синий цвет), является тем же самым. На этапе 315 выполняют этап тестового примера.
Если этап тестового примера 20 является режимом 22 «выполнить», то на этапе 320 тестовый пример 20 может выполнять режим выполнения, не вовлекая менеджер 30 режимов выполнения. Если этап, например, является режимом 21 «выбрать любой», то на этапе 325 режим 21 «выбрать любой» может запрашивать менеджера 30 режимов выполнения выбрать дочерний режим «выполнить» для выполнения. Например, этап тестового примера 20 для создания нового документа может быть режимом «выбрать любой» с двумя дочерними режимами «выполнить», один для создания нового документа, используя мышь для активизации меню, и другой - для создания нового документа, используя клавиатуру для активизации меню.
На этапе 330 менеджер 30 режимов выполнения может искать режим «выбрать любой» в своем реестре 31 режимов. В альтернативном варианте осуществления, менеджер 31 режимов выполнения может определять дочерние режимы режима 21 «выбрать любой» с помощью просмотра атрибутов или свойств режимов выполнения.
Затем на этапах 335-350 менеджер 30 режимов выполнения может определять, какой дочерний режим нужно посылать к режиму 21 «выбрать любой» для выполнения. Менеджер режимов выполнения может рассматривать множество факторов при выполнении определения. На этапе 335 менеджер режимов выполнения может определять, является ли какой-либо из дочерних режимов недопустимым. Таким образом, если этап тестового примера является таким, что режим «выбрать любой» не может быть удовлетворен через выполнение одного из дочерних режимов режима «выбрать любой», тогда менеджер режимов выполнения может определять, что данный дочерний режим является недопустимым. Как объяснено выше, примером такой ситуации может быть режим 21 «выбрать любой» для рисования прямоугольника, содержащий пять дочерних режимов «выполнить». Один из дочерних режимов «выполнить» может существовать для свободного рисования прямоугольника с помощью мыши. Если тестовый пример 20 требует рисования прямоугольника с точными размерами, то дочерний режим «выполнить» для свободного рисования прямоугольника не может быть разрешен, если менеджер 30 режимов выполнения определяет, что дочерний режим выполнения не предназначен для рисования прямоугольника с точными размерами.
Затем, на этапе 340, менеджер 30 режимов выполнения может определять, ввел ли тестовый пример 20 или любой другой механизм местное присвоение весовых коэффициентов для выбора дочернего режима «выполнить». Если существует местное присвоение весовых коэффициентов, то менеджер режимов выполнения может применять это присвоение весовых коэффициентов. На этапе 345 менеджер 30 режимов выполнения может определять, должно ли применяться какое-нибудь глобальное присвоение весовых коэффициентов перед выбором дочернего режима. Когда местное и глобальное присвоение весовых коэффициентов обращаются к одному и тому же свойству режима выполнения, тогда менеджер 30 режимов выполнения может учитывать оба присвоения весовых коэффициентов при выборе дочернего режима. Например, глобальное присвоение весовых коэффициентов может требовать использования мыши 20% времени. Местное присвоение весовых коэффициентов одновременно может требовать использования мыши 50% времени. Менеджер 30 режимов выполнения может объединять или рассматривать оба из этих присвоений весовых коэффициентов при выборе дочернего режима. Дополнительно следует признать, что глобальные и местные присвоения весовых коэффициентов могут быть независимыми. Таким образом, глобальное присвоение весовых коэффициентов может требовать, чтобы мышь не использовалась, а местное присвоение весовых коэффициентов может требовать, чтобы клавиатура не использовалась. Менеджер 30 режимов выполнения может учитывать независимое присвоение весовых коэффициентов при выборе дочернего режима.
После применения соответствующего присвоения(й) весовых коэффициентов или если не применяются никакие глобальные присвоения весовых коэффициентов, менеджер режимов выполнения на этапе 350 может выбирать дочерний режим. Этот выбор может основываться на предыдущих выборах. Например, если ранее выбранный дочерний режим был предназначен для открытия нового файла, активизируя меню с помощью мыши, то менеджер 30 режимов выполнения может выбрать другой дочерний режим для открытия нового файла, активизируя меню с помощью клавиатуры. Таким образом, менеджер 30 режимов выполнения может обеспечивать тестирование всех режимов выполнения без записи режимов выполнения в каждом тестовом примере. Кроме того, тестовый пример может даже не знать, какой способ выполнения использовался для открытия нового файла, и он может знать только то, что новый файл был открыт.
Однако если глобальное присвоение весовых коэффициентов применяют к выбору менеджера 30 режимов выполнения дочернего режима, то менеджер 30 режимов выполнения может применять присвоения весовых коэффициентов при своем выборе соответствующего дочернего режима. Например, если глобальное присвоение весовых коэффициентов обеспечивает, что режимы выполнения с использованием мыши должны выбираться 80% времени, и режимы выполнения с использованием клавиатуры должны выбираться 20% времени, то менеджер 30 режимов выполнения должен делать свой выбор в соответствии с этим глобальным присвоением весовых коэффициентов.
После определения на этапе 350 того, какой дочерний режим должен быть выбран, менеджер 30 режимов выполнения может затем на этапе 355 просматривать библиотеку 40 автоматической обработки режимов для определения того, был ли выбранный дочерний режим предварительно создан. Альтернативно, менеджер 30 режимов выполнения может искать в библиотеке 40 автоматической обработки режимов указатель функции, которая при компиляции может создавать дочерний режим. Если дочерний режим выполнения не был создан или если нет никакого указателя функции, то на этапе 360 менеджер режимов выполнения может создавать выбранный дочерний режим выполнения. Например, если на этапе 350 менеджер режимов выполнения выбирает дочерний режим для открытия нового документа с использованием мыши для активизации меню и на этапе 355 менеджер режимов выполнения определяет, что дочерний режим выполнения для открытия нового документа с использованием мыши для активизации меню не существует, то на этапе 360 менеджер 30 режимов выполнения может создавать дочерний режим. Как объяснено выше, менеджер 30 режимов выполнения может создавать режимы выполнения «выполнить» через использование конфигураций или атрибутов режимов выполнения и реализации кода, хранящегося в библиотеке автоматической обработки режимов. Если на этапе 355 менеджер 30 режимов выполнения определяет, что дочерний режим существует, то менеджер режимов выполнения может пропустить этап 360. Альтернативно, следует признать, что этап 355 может не являться необходимым. Если реестр 31 заполняют из внешнего хранилища данных, то этап 355 может быть необходимым. Если, однако, реестр 31 заполняют динамически до или во время выполнения тестового примера, то менеджер 30 режимов выполнения может предположить, что реестр 31 не включает в себя никаких режимов, которые не существуют.
После выбора существующего или недавно созданного дочернего режима, на этапе 365 менеджер 30 режимов выполнения затем может записывать выбор дочернего режима. Как объясняется выше, таким образом, при желании, менеджер 30 режимов выполнения может быть в состоянии повторно выполнить тестовый пример 20 точно также, как он выполнялся ранее. При тестировании приложения может быть важным определить, была ли ошибка устранена.
На этапе 370 менеджер режимов выполнения может посылать выбранный дочерний режим «выполнить» назад к родительскому режиму 21 «выбрать любой» из тестового примера 20 для выполнения. На этапе 375 режим 21 «выбрать любой» или тестовый пример 20 может выполнять режим, посланный менеджером 30 режимов выполнения. Дополнительно остающиеся этапы тестового примера 20 могут также выполниться подобным образом, как показано в способе 300, этапы 315-375.
Различные описанные методики могут быть реализованы в связи с аппаратными средствами или программным обеспечением или, когда это целесообразно, с их комбинацией. Таким образом, способы и устройство настоящего изобретения или их определенные аспекты или части могут принимать форму кода программы (то есть команд), воплощенных в материальных носителях, таких как гибкие дискеты, CD-ROM, жесткие диски или любой другой машиночитаемый носитель данных, причем когда код программы загружен и выполняется машиной, такой как компьютер, данная машина становится устройством для осуществления изобретения. В случае выполнения кода программы на программируемых компьютерах вычислительное устройство будет в общем случае включать в себя процессор, носитель данных, считываемый процессором (который включает в себя энергозависимые и энергонезависимые элементы памяти и/или запоминающие устройства), по меньшей мере одно устройство ввода данных и по меньшей мере одно устройство вывода данных. Одна или большее количество программ, которые могут использовать создание и/или реализацию проблемных аспектов моделей программирования настоящего изобретения, например, с помощью API обработки данных или подобного ему, предпочтительно реализуются на высокоуровневом процедурном или объектно-ориентированном языке программирования для осуществления связи с компьютерной системой. Однако программа(ы) может быть реализована на языке ассемблера или на машинном языке, при желании. В любом случае язык может быть транслируемым или интерпретируемым языком, объединенным с аппаратными реализациями.
Хотя настоящее изобретение было описано в связи с предпочтительными вариантами осуществления различных чертежей, следует понимать, что могут использоваться другие варианты осуществления, или модификации и добавления могут быть сделаны к описанным вариантам осуществления для выполнения той же самой функции настоящего изобретения без отклонения от него. Всюду по описанию первичный предоставленный пример имеет дело с рисованием синего прямоугольника. Этот и любой другой пример были обеспечены для лучшего понимания. Никаким образом настоящее изобретение не ограничено обеспеченными примерами. Кроме того, любой тест, задействующий любое приложение, вовлекающее любой процесс, машину, производство, композицию, программу, программное обеспечение, аппаратные средства, устройство, механизм или материал или любые их модификации, может включать в себя вариант осуществления настоящего изобретения. Поэтому настоящее изобретение не должно ограничиваться никаким одним вариантом осуществления, а вместо этого должно рассматриваться во всей широте объема в соответствии с прилагаемой формулой изобретения.