вторник, 30 апреля 2013 г.

Coded UI Test. Работа с глубоко вложенными контролами в WPF.

        Хочу поделиться с вами ссылкой о том, как тестировать окно WPF-приложения в случае, когда присутствует глубокая иерархия контролов. Мне эта статья в свое время очень помогла. Благодаря ей получается красивая UIMap окна, соответствующая реальной структуре его контролов.
       Всех с наступающими праздниками :)

суббота, 20 апреля 2013 г.

Coded UI Test. Увеличение скорости работы с контролами.

      В одной из статей своего блога я писала про то, как увеличить работу с текстовым полем. И хотя определенное решение было найдено, меня не оставлял в покое вопрос, почему же в текстовое поле так долго вводится текст. Даже бесплатный фреймворк White вводит текст очень быстро. А тут платный, крутой Coded UI, от самих Microsoft, чьей преданной поклонницей я являюсь)) Я гуглила не один раз, и в различных блогах натыкалась на такие же жалобы и различные варианты решения этой проблемы.
     И все-таки решение нашлось. А всего-то надо было внимательнее читать msdn. Еще раз убедилась, что там можно найти практически все, что  надо для успешной работы. Все оказалось так просто и очевидно, что я удивилась, как это решение не нашлось раньше.
    В CodedUI есть специальный класс Playback, который отвечает за различные настройки проигрывателя ваших тестов. Все, что требуется, это установить одно его свойство:

          Playback.PlaybackSettings.WaitForReadyTimeout = 100;

где 100 - это количество мс, тут уже играйтесь с настройками так, как вам нужно.

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

пятница, 19 апреля 2013 г.

Расширения для Coded UI Test

     Данная статья будет полезна тем, кто разрабатывает C# тесты для автоматизации UI приложения. При разработке тестов часто бывает так, что средств, предоставляемых выбранным фреймворком для тестирования (в нашем случае UI) недостаточно для решения конкретной задачи, и приходится подпиливать его под свои нужды. Раньше я уже описывала несколько способов решения таких проблем касательно Coded UI. Хочу рассказать еще об одном, самом универсальном способе - создании методов расширения для работы с контролами.
     Рассмотрим самый простой пример.
     Я сталкивалась с такой ситуацией, когда UI приложения был сформирован таким образом, что реальный пользователь мог кликнуть мышкой по кнопке, но при использовании стандартного метода Mouse.Click(control) выходило исключение, говорящее о том, что это контрол заблокирован (хотя на самом деле он не был заблокирован). Эту проблему можно решить, создав метод расширения для класса Mouse фреймворка Coded UI, который позволит сделать клик на таком контроле:


    /// <summary>
    /// Класс расширений для работы с мышью.
    /// </summary>
    public static class MouseExtension
    {
        /// <summary>
        /// Осуществляет Click() левой кнопкой мыши, служит для заблокированых контролов.
        /// </summary>
        /// <param name="mouse">Мышь.</param>
        /// <param name="controlBoundingRect">BoundingRect контрола.</param>
        public static void ClickOnBlockingControl(this Mouse mouse, Rectangle controlBoundingRect)
        {
            Point clickablePoint = Point.Add(controlBoundingRect.Location,
                new Size(controlBoundingRect.Width / 2, controlBoundingRect.Height / 2));
            Mouse.Click(clickablePoint);
        }
    }

Тогда в коде какого-то метода, осуществляющего клик по контролу, этот метод расширения можно использовать следующим образом:

Mouse.Instance.ClickOnBlockingControl(UIMyButton.BoundingRectangle);
           
Аналогично можно делать методы расширения для любых контролов. По такому принципу построены библиотеки утилит для работы с CodedUI тестами, о которых я писала ранее.


среда, 10 апреля 2013 г.

Про тестировщиков в картинках

Вот и прошла очередная конференция FunConfeT&QA. Она была очень интересной. Я принимала в ней участие благодаря победе в конкурсе, который проводился на сайте software-testing.ru.


А вот и моя работа, благодаря которой я в этом конкурсе выиграла, надеюсь, она заставит вас улыбнуться :)

четверг, 4 апреля 2013 г.

Краткое описание использования White для автоматизации тестирования Windows приложений

Как и обещала в предыдущем посте, расскажу самые основные моменты в использовании White для тестирования Windows приложений. Фактически, все рассказанное является кратким содержанием документации.

Работа с приложением и окном.

Запуск приложения и нахождение его окна

   Application application = Application.Launch("MyApp.exe");
   Window window = application.GetWindow("MyWindowTitle", InitializeOption.NoCache);

Нахождение модальных окон для главного окна:
Window childWindow = mainWindow.ModalWindow("СhildWindowTitle");

Закрытие окна

window.Close(); 

Закрытие приложения

application.Kill();