VS2010 – Cecha dnia: Coded UI Test

Visual Studio 2010 zawiera wiele ciekawych, nowych cech. Dzisiaj zdecydowanie najbardziej urzekł mnie zaprogramowany test UI. Oto krótka prezentacja jego możliwości.

Zacznijmy od nowego projektu testów od razu z wybraniem tego jednego:

image

Po wybraniu tego testu i zatwierdzeniu dostajemy od razu poniższą propozycję:

image

Skoro rozpoczęliśmy pracę nad pusty projektem tutaj nic nie zmieniam i wybieram nagranie akcji, operacji bezpośrednio na aplikacji (pierwsza opcja). Na dole ekranu powinno się pojawić okienko pomocne w nagraniu:

image

Wybieram nagranie i z menu start otwieram systemowy kalkulator:

image

Belka tytułowa upewnia, że nagrywam kroki w odpowiedniej aplikacji. Wybieram przycisk “2” potem “+” potem “2” i nastepnie “=”. Wynik jest oczywisty. Pauzuję nagranie. Drugi przycisk od lewej w oknie Coded UI Test Builder to podgląd nagranych kroków. Wynik poniżej:

image

Jak widać wszystko się poprawnie nagrało, włącznie z bonusowym PrintScreen, koniecznym, abyście i wy mogli zobaczyć powyższy obrazek. Następny krok to wybór ostatniego przycisku czyli generowanie kodu do powyższego testu:

image

Powstaje z tego kod, którego najistotniejszy (przynajmniej na początku) fragment przeklejam poniżej:

[CodedUITest]
public class TestIfCalcAddsWell
{
    public TestIfCalcAddsWell()
    {
    }

    [TestMethod]
    public void CodedUITestMethod1()
    {
        // To generate code for this test, select "Generate Code for Coded UI Test"
        // from the shortcut menu and select one of the menu items.
        this.UIMap.CalculatorIsAddingNumbers();
    }

    ……
}

Metoda z UIMap.CalculatorIsAddingNumbers() wygląda następująco:

public void CalculatorIsAddingNumbers()
{
    #region Variable Declarations
    WinText item0Text = this.CalculatorWindow.Item0Window.Item0Text;
    WinButton item2Button = this.CalculatorWindow.Item2Window.Item2Button;
    WinButton addButton = this.CalculatorWindow.AddWindow.AddButton;
    WinButton equalsButton = this.CalculatorWindow.EqualsWindow.EqualsButton;
    #endregion

    // Launch '%SystemRoot%\System32\calc.exe'
    ApplicationUnderTest calculatorWindow = ApplicationUnderTest.Launch(this.CalculatorIsAddingNumbersParams.CalculatorWindowExePath, this.CalculatorIsAddingNumbersParams.CalculatorWindowAlternateExePath);

    // Type '{PrintScreen}' in '0' label
    Keyboard.SendKeys(item0Text, this.CalculatorIsAddingNumbersParams.Item0TextSendKeys, ModifierKeys.None);

    // Click '2' button
    Mouse.Click(item2Button, new Point(18, 18));

    // Click 'Add' button
    Mouse.Click(addButton, new Point(23, 14));

    // Click '2' button
    Mouse.Click(item2Button, new Point(18, 11));

    // Click 'Equals' button
    Mouse.Click(equalsButton, new Point(17, 37));

}

Fajne prawda? Teraz taki test możecie wykonać i Visual Studio uruchomi calc.exe i zasymuluje wszystkie kroki. Możecie ten test wykorzystać w Load Testach i sprawdzić jak system się zachowa gdy 10 kalkulatorów na raz spróbuje dodać 2+2 (albo wykonać bardziej poważny test waszej aplikacji via Citrix, itd.). Możecie dodać “Asserty” i sprawdzić czy faktycznie pole wynikowe zawiera “4”.

Visual Studio 2008 miało podobny test, ale do zastosowania tylko i wyłącznie dla aplikacji WWW. Ten test wspiera projekty Web, Win Forms oraz WPF.