5. Присоединяемые и Самотестируемые приложения

Назад: 4.4 Тестирование Flash, Flex и Silverlight приложений Содержание Дальше: 6 Keyword Driven Testing

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

Подключив к своему приложению определенные библиотеки, входящие в состав TestComplete, вы создадите Присоединяемое приложение (Connected Application), из которого можете обращаться к любым объектам TestComplete (Sys, Log, TestedApps, Runner и т.д.).

Если при этом приложение содержит код для тестирования себя самого, такое приложение называется Самотестируемым (Self-Testing Application).

Мы рассмотрим эти обе возможности в одной главе на примере простого C# приложения nUnitTestingApp. Для более детального ознакомления с Самотестируемыми и Присоединяемыми приложениями (например, Delphi, MS Visual C++ и т.д.) вам придется обратиться к справочной системе TestComplete.

Присоединяемое приложение

Итак, прежде всего нам надо подключить необходимые библиотеки. В случае .NET-приложения это файлы AutomatedQA.script.dll и AutomatedQA.TestComplete.CSConnectedApp.dll, которые находятся в папке <TestComplete>\Connected Apps\.NET. Чтобы подключить их, необходимо выполнить для C#-проекта команду Add Reference.

Теперь в модуле программы необходимо подключить пространства имен

using AutomatedQA.script;
using AutomatedQA.TestComplete;

Обращение к объектам TestComplete из кода программы производится с помощью объекта Connect. Например, Connect.Sys.

Теперь мы можем написать простой метод, который будет отображать имя комьютера (используя объект Sys) и запускать тестовое приложение из проекта TestComplete.

private void btnConnected_Click(object sender, EventArgs e)

        {

            MessageBox.Show(Connect.Sys[“HostName”]);

            Connect.RunTest(“Test Connected App”, “Project1″, @”C:\ProjectSuite1\ProjectSuite1.pjs”);

            var p = Connect.TestedApps[“Items”](0)[“Run”]();

            Connect.StopTest();

        }

Посмотреть на этот пример вы можете, взяв его в архиве с примерами.

Здесь следует обратить внимание на то, что объект Sys – это единственный объект TestComplete, с которым можно работать из присоединяемых приложений, не запустив сначала тест (с помощью метода RunTest). Если попытаться это сделать, возникнет исключение NullReferenceException.

Также учтите, что объект Connect предоставляет доступ только к стандартным объектам TestComplete, но не к объектам сторонних плагинов. Чтобы обращаться к таким объектам, необходимо использовать объект Integration:

var MyObject = Connect.Integration[“GetObjectByName”](“MyObjectName“);

Самотестируемое приложение

Теперь сделаем из нашего Присоединенного приложения Самотестируемое. Основное отличие Самотестируемого приложения от Присоединенного в том, что тесты должны запускаться в другом потоке (Thread), иначе TestComplete не сможет работать с экранными объектами (окна, кнопки и т.п.). Поэтому сам тест (который просто нажимает на кнопку запущенного приложения) мы вынесем в отдельный класс:

public class SelfTests:Connect

    {

        public void PlusTest()

        {

            Connect.RunTest(“Test Self-Testing App”, “Project1″, @”C:\ProjectSuite1\ProjectSuite1.pjs”);

            Connect.Sys[“Process”](“nUnitTestingApp”)[“WinFormsObject”](“Form1″)[“WinFormsObject”](“button1″)[“Click”]();

            Connect.StopTest();

        }

    }

А вот код запуска теста, который мы привязали к нажатию на кнопку:

private void btnSelf_Click(object sender, EventArgs e)

        {

            SelfTests slf = new SelfTests();

            ThreadStart ths = new ThreadStart(slf.PlusTest);

            Thread thrd = new Thread(ths);

            thrd.Start();

        }

Также следует сказать, что есть два способа создания тестов для самотестирующихся приложений: написание их вручную и конвертация записанных C#Script тестов. Во втором случае придется еще немного изменить код (например, ключевое слово function заменить возвращаемым значением и т.п.).

 

Назад: 4.4 Тестирование Flash, Flex и Silverlight приложений Содержание Дальше: 6 Keyword Driven Testing