CodeceptJS – interaktywny shell – Jak może pomóc w testach?

CodeceptJS – interaktywny shell – W jaki sposób może pomóc w testach?

Witajcie.

W poprzednim poście rozpoczynającym serię wpisów na temat CodeceptJS nauczyliśmy się jak stworzyć pierwszy test oraz w jaki sposób zainicjować projekt. Dziś zajmiemy się dalszymi aspektami poznawania CodeceptJS , którego używam do projektu testów w konkursie DajSiePoznać (link). Z dzisiejszego wpisu nauczymy się jak uruchomić CodeceptJS  w trybie interaktywnym (shell), dzięki czemu nasze testy będziemy mogli tworzyć szybciej. Tryb interaktywny pozwala bowiem szybko sprawdzić, czy nasz krok (czyli zapisana metoda po „I” np. I.click(‚element’)) uruchomia się oraz równocześnie zobaczyć efekt działania kodu. Rezultat działania testu widzimy szybciej niż przez codeceptjs run. Testy możemy pisać w taki sposób:

  • Wpisujemy metodę po metodzie w shellu
  • Jeżeli dany krok po „I.”  jest dobry to kopiujemy daną linijkę do testu w naszym IDE
  • Dzięki temu gdy jest błąd od razu wiemy w której linijce / kroku

Czego potrzebujemy?

  • Przygotowanego projektu tak jak w pierwszej części serii o codeceptjs (link)
  • Strony, na której będziemy pisać testy. (Ja wykorzystam stronę aplikacji, którą wystawił mi Bartek (link))
  1. Włączamy terminal.
  2. Przechodzimy do katalogu, w którym mamy testy.

codeceptjs      3. Następnie w terminalu używamy komendy:

codeceptjs shell

      4. Dalej wpisujemy metodę I.amOnPage(‚/) specjalnie z błędem, by zobaczyć jak framework się zachowa. Jak widzimy występuję błąd.

      5. Kolejnym krokiem jest wpisanie I.amOnPage(‚/’) metody, która przeniesie nas do do strony testowanej.

      6. Następnie używamy metody I.see(”), która pozwala sprawdzić, czy dany element jest widoczny na stronie.

      7. Po innych użyciach metody I.see(”). Używam metody I.click(‚.red’) dzięki temu, zostaje kliknięty przycisk MORE. Klikamy w selector „.red”, który ma przycisk MORE.

Zrzut ekranu 2017-03-26 o 21.08.59
Zrzut ekranu 2017-03-26 o 21.01.01

 

Zrzut ekranu 2017-03-26 o 21.03.14

 

 

Podsumowanie

Zatem w tym poście dowiedzieliśmy się, w jaki sposób możemy używać powłoki shell w naszych testach. Dzięki niej możemy krok po kroku sprawdzać rezultat z uruchomienia danego testu. Jest to szybki sposób, jeżeli chcemy „na szybko” sprawdzić, czy krok, który chcemy wykonać, przejdzie. W następnych częściach dowiemy się m.in. w jaki sposób używać wzorca Page Object Pattern oraz innych przełączników podczas uruchamiania testów.

 

PTaQ XL – zaproszenie na 40 spotkanie – Czym jest ptaq?

PTaQ XL – zaproszenie + Czym jest ptaq?

Jakiś czas temu zaangażowałem się w rozwój testerskiej społeczności w Poznaniu. Czy znacie PTaQ? (Poznan Quality Assurance Group). Jeśli nie to jest to najstarsza grupa testerska w Polsce, skupiająca pasjonatów testowania oprogramowania. Polecam śledzić ją za pośrednictwem fanpage’u (https://web.facebook.com/PTaQGroup/) lub poprzez stronę – www (link.)

Jak wyglądają spotkania PTaQ?

Każde ze spotkań ma podobną formułę:

  • Prezentowane są dwa wykłady/ dwie prezentację związane z temat testowania. Tematyka jest bardzo zróżnicowana – od filozoficznego podejścia do tej dziedziny po np. testowanie automatyczne. Uważam, że warto się pojawiać na takim spotkaniu nawet jeżeli wykład jest z innego obszaru testowania niż ten, którym zajmujemy się na co dzień, pozwala to rozszerzyć nam pogląd na tematykę testowania.
  • Po każdym z wykładów jest czas na zadawanie pytań prelegentom, a w międzyczasie na poznawanie innych osób z testerskiej społeczności.

Dziś chcę zachęcić was do przyjścia na kolejne spotkanie naszej społeczności. Jeżeli będziecie mieli jakieś pytania związane z grupą (i nie tylko) zapraszam do kontaktu.

„Zapraszamy na XL już spotkanie PTaQ! Tym razem wracamy do STX Next, gdzie będziemy mogli porozmawiać o automatyzacji oraz trochę o rozwijającym się trendzie jakim jest DevOps i Continuous Delivery.

Kiedy? 21 marca (wtorek), start godz. 18:00

Gdzie? STX Next, ul. Morawskiego 12/5″

źródło: ptaq.org

Podsumowanie

Jeżeli mieszkasz w Poznaniu lub masz do niego niedaleko to zachęcam do przyjścia. Dla osób spoza z Poznania polecam sprawdzić inne grupy/wydarzenia (http://testerzy.pl/wiesci-ze-swiata-testerow). W tekście (link) na temat kariery wspominałem jak grupy mogą wspierać rozwój umiejętności, karierę, więc polecam.

 

CodeceptJS testy akceptacyjne w przyjemny frameworku js.

CodeceptJS testy akceptacyjne w przyjemny frameworku js.

Witajcie,

Dziś chcę przedstawić przykład użycia framework’a w którym zdecydowałem się tworzyć swój projekt konkursowy. Testy do aplikacji typu mikroblog. Aplikację piszę Bartek (http://feree.net/) – również biorący udział w DajSięPoznać. Przy okazji czytania wiadomości na testerskim Slacku trafiłem na ten framework i właśnie w tym projekcie chcę go przetestować (Chyba, że z jakiegoś powodu jego możliwości będą mnie ograniczać to wówczas przejdę na Protractor’a). Aplikacja korzysta na fronendzie z Angulara, więc potrzebowałem frameworka radzącego sobie z nim lepiej niż czysty Selenium WebDriver.

Korzyści

  • Framework dostosowany jest do tzw. DSP (eng. Domain Specific Language) – czyli nasz kod testu posiada warstwę abstrakcji zrozumiałą w danym języku.  Przez to skupiamy się bardziej na scenariuszu dzięki czemu łatwiej analizuje się kod.
  • Testy piszemy jako użytkownik, każdy krok zaczynamy od „I.”-  pozwala to osobom postronnym lepiej zrozumieć scenariusz, który brzmi jak akcje, których dokonywalibyśmy na stronie a „pod spodem” danego kroku  „I.sth” znajduje się zaimplementowana akcja.
  • BDD – kładziemy nacisk na to jak ma się zachowywać system.

Wady

  • Jest to dość nowy framework więc mogą pojawić się czasami sytuacje nie wspierania danej funkcji.

Jak zacząć?

CodeceptJS posiada przyjemny konfigurator, który pozwala szybko stworzyć szkielet projektu. Zaczynamy od wejścia na stronę framework http://codecept.io/ . Polecam zapoznać się z jasno przedstawioną dokumentacją.

Do instalacji codeceptJS potrzebować będziemy node.js.

Po  instalacji node.js przechodzimy do terminala.

[sudo] npm install -g codeceptjs

instaluje globalnie codeceptJS

lub lokalnie

npm install –save-dev codeceptjs

Następnie po instalacji pakietu npm przechodzimy do terminala

codecepjs init  

Ta komenda utworzy nam szkielet projektu w ścieżce w której znajdujemy się aktualnie w terminalu. Aby dowiedzieć gdzie się aktualnie znajdujemy używamy polecenia pwd (w mac’u, powershell’u).

codeceptjs pyta się o folder w którym będziemy przechowywać nasze testy.

Następnie wybieramy  to jakiego helpera będziemy używać :

Ja wybieram Protractora

Wybieramy ścieżkę gdzie będziemy przechowywać output (logi, screenshoty)

Czy chcemy by utworzył folder ze stepami

Wybieram język angielski

Po skończonej konfiguracji również z terminala możemy dodać pierwszy test.

codeceptjs gt

Po wygenerowaniu testu możemy przejść do pisania kodu.CodeceptJS testy

Do pisania kodu w CodeceptJS wykorzystywał będę webStorm’a lub Visual Studio Code.

Przechodzimy w VSC – > Open -> folder exampleCodeceptJS

CodeceptJS testy

Do konfiguracji dodajemy helper Protractora. W czasie gdy czekałem na aplikacje do testów, którą tworzył Bartek, doszedłem do wniosku, że mogę zacząć pisać testy już do przykładowej strony aby zaznajomić się z frameworkiem. Jako przykład posłużył mi todomvc example, który posiada angulara na frontendzie. Url:

http://todomvc.com/examples/angularjs/

Polecam próbę na tej stronie.

Przechodzę do first_test.js

CodeceptJS testy

Metoda amOnPage(‚/’); przenosi do wybranej strony. CodeceptJS wie gdzie ma się udać, ponieważ url docelowy wzięty jest z pliku codecept.json

Przechodzimy do próby uruchomienia testów w terminalu, w folderze gdzie tworzyliśmy codeceptjs init:

codeceptjs run 

CodeceptJS testy

Naszym oczom ukazuje się błąd. I dobrze ;- ). Nasz WebDriver nie jest jeszcze uruchomiony. Aby to zrobić (musimy mieć go zainstalowanego) wpisujemy

webdriver-manager update

webdriver-manager start

update – po to by nasz server WebDriver’a był aktualny.

start – uruchamia server WebDriver’a.

Wracamy do polecenia :

codeceptjs run CodeceptJS testy

Nasze test uruchamia się. ; -)

Podsumowanie

Dziś dowiedzieliśmy się jak zainstalować codeceptJS, jak rozpocząć tworzenie testów tym frameworku. W kolejnych częściach będziemy pisać kolejne testy.

 

R# za darmo? Dla studentów i uczniów oraz inne oprogramowanie

R# za darmo? Dla studentów i uczniów

Czy znacie może firmę JetBrains? Jeśli nie, to jest to firma tworząca jedne z najlepszych środowisk do wytwarzania oprogramowania (IDE) oraz wtyczki do tych środowisk takie jak m.in. R#. Są to narzędzia dla najbardziej popularnych języków programowania m.in. C#, Java, Python, CSS, JS, Ruby.

Każdy kto rozpoczął już swoją przygodę z testowaniem automatycznym lub programowaniem mógł już słyszeć o JetBrains oraz ich produktach. Jeżeli nie to tym bardziej zachęcam do przeczytania wpisu, by móc się zapoznać z owymi narzędziami. Jeżeli tak jak ja chcecie tworzyć/tworzycie testy w C# to zachęcam do zapoznania się z wpisem Maćka Aniserowicza:

http://devstyle.pl/2008/04/27/c-via-r-czyli-11-powodow-do-uzywania-resharpera-part-i/

W skrócie R# pomaga m.in. w :

  • Refaktoryzacji kodu, robi się to szybciej i przyjemniej
  • Korzystania z testów (korzystających z popularnych runnerów np. NUnit)

Dziś chce przedstawić w jaki sposób zdobyć licencję firmy JetBrains za darmo do celów edukacyjnych.

Zaczynamy?

Przechodzimy do https://www.jetbrains.com/student/ następnie klikamy w „Apply Now”

Ukazuję się taka strona:

R# za darmo

Gdy dołączymy przez ten formularz możemy korzystać z R# oraz innych środowisk/pluginów:

chrome_2017-03-10_21-01-52

3 sposoby do uzyskania dostępu dla studenta/ucznia:

  • Jako student możemy zgłosić się za pomocą adresu mail z domeną .edu
  • Jako uczeń możemy załączyć skan naszej legitymacji z krótkim opisem
  • Za pomocą karty ISIC

 

Co jeżeli nie jesteś studentem?

Możliwości uzyskania R#/InteliJ są przynajmniej trzy:

  • https://confluence.jetbrains.com/display/ReSharper/ReSharper+Early+Access+Program
  • Okres testowy 30 dni
  • Często na różnego rodzaju user grupach np. .NETowych lub Javowych można otrzymać licencję typu personal. JetBrains bardzo mocna stara się wspierać również społeczności.

Oczywiście pamiętajcie, że owe licencje służyć mogą tylko i wyłącznie do celów edukacyjnych.

Podsumowanie

Dziś podzieliłem się z wami możliwością pozyskania narzędzi, których środowiska komercyjne stosują na co dzień.  Jest to drugi wpis na temat zdobywania wiedzy, oprogramowania za darmo. Tymi wpisami chce pokazać wam, że większość ograniczeń możemy pokonywać.

 

Page Object Model – Wzorzec, który ułatwi Wam implementowanie testów w Selenium WebDriver.

Page Object Model – Wzorzec, który jest nieodzowny w testowaniu automatycznym stron www.

Dzisiaj chcę przedstawić wam jeden z najbardziej podstawowych wzorców projektowych używany przy implementowaniu testów automatycznych. Pokażę jak w prosty sposób możecie go zastosować przy użyciu C# + Selenium WebDriver. Jeżeli ktoś z Was nie słyszał o tym wzorcu, dowie się jakie korzyści płyną z korzystania z niego w swoich testach. Przykład będzie prosty na tyle, na ile to jest możliwe.

Z tekstu dowiesz się m.in:

  • Jak budować testy, które będą łatwiejsze w utrzymaniu i implementowaniu ?
  • Jak zmniejszyć ilość duplikowanego kodu?

Czym jest Page Object Model?

 

 

folwer

 

Martin Folwer

źródło „ http://martinfowler.com/bliki/PageObject.html

Jest to sposób pisania testów polegający na tym, że każdą ze stron danej aplikacji webowej przedstawiamy jako tzw. Page object. Każdy z elementów na stronie, którą testujemy możemy przedstawić w naszej implementacji jako obiekt typu IWebElement (Może != Musi, jeżeli danego elementu znajdującego się na stronie, którą testujemy nie potrzebujemy w teście, to nie implementujemy go, by nie zaciemniać kodu).

Czego będziemy potrzebować do zdeklarowania naszego elementu w teście?

Do zdeklarowania elementu w teście potrzebujemy użyć tak jak przy deklaracji IWebElement – jakiegoś selectora. Do wyboru mamy:

  • XPath,
  • CssSelector,
  • Id,
  • Name,
  • Class,
  • PartialLinkText,
  • LinkText,

Pozwala to w jednym miejscu posiadać deklaracje obiektu IWebElement, który odpowiada elementowi na stronie. Jeżeli na stronie będzie dokonana jakaś zmiana np. selector Id przycisku zmieni się z „buttonId” na „buttonNewId” dzięki używaniu page object model – zmiany selectora dokonujemy w jednym miejscu.

Przykładowy obiekt:

[FindsBy(How=How.Id,Using = „user_login”)]

public IWebElement LoginField { get; set; }

Programista wprowadza zmianę  w html, od teraz element, który na stronie to selector user_login po zmianie to user_login_foo.  Gdy zamienimy user_login na user_login_foo to w testach w których wszędzie używaliśmy tego elementu zachodzą takie zmiany. Jeżeli nie używalibyśmy Page Object Model to w każdym teście gdzie używalibyśmy IWebElement z selectorem „user_login” trzeba byłoby zmienić na „user_login_cos”.

Po co stosować Page Object Model?

– Pozwala oddzielić logikę metod robiących akcje na stronie od reprezentacji elementów na stronie w postaci obiektów IWebElement

-Pozwala w łatwiejszy sposób zrozumieć abstrakcje związaną z pisaniem testów

-Pozwala łatwiej utrzymywać testy, jeżeli zmienia się selector na stronie np. poprzez zmianę układu strony to selector do elementu zmieniamy tylko w jednym miejscu. Jeżeli nie stosujemy Page Object Model to należy we wszystkich testach zmienić dany selector.

Przechodzimy do części napisania dwóch prostych testów, które będą korzystały ze wzorca page object model.

Co będzie Ci potrzebne?

  • Postawiona testowa strona wordpress.com.  -Ja użyję w tym celu swojego bloga, którego stworzyłem do pisania testów.(https://studytestingblog.wordpress.com/). Możesz również lokalnie postawić sobie takiego wordpressa.
  • Visual Studio

Dodane do projektu

  • ChromeDriver (przykładów nie testuje na innych driverach, więc może się zdarzyć, że kod z wpisów może inaczej się zachowywać na innych driverach).
  • Dodane przez NuGet’a:

page object model

Do projektu z testami dodaję folder Pages – Miejsce gdzie będziemy umieszczać nasze klasy z reprezentacją danego widoku na stronie.

pom3

Tworzymy plik klasy HomePage.cs

page object model

Sama klasa, którą użyje do testu wygląda tak:

  • Zaczynamy od definicji Driver, który jest/może być potrzebny do metod w Page’ach.
  • Następnie definiuje kilka elementów, które znajdują się na stronie.

https://studytestingblog.wordpress.com/wp-login.php

page object model

Aby stworzyć properites, który będzie odzwierciedlał element na stronie używamy:

[FindsBy(How= Tutaj wpisujemy jakiego selectora używamy  np. How.Id,Using = „tutaj wartość tego selectora np. user_login”)]

 LoginField  – properties, który reprezentuje pole służące do wpisywania loginu;

Selectory „zdobywamy” tak jak pokazywałem to w jednym ze wcześniejszych wpisów (link).

PasswordField – properties, który reprezentuje pole służące do wpisywania hasła;

SubmitButton – properties, który reprezentuje przycisk do wysłania formularza;

ErrorBox – propeties, który reprezentuje div’a zawierającego komunikaty o błędach (jeżeli jest na stronie np. gdy próbujemy zalogować się złym hasłem);

Po dodaniu propertiesów tworzymy konstruktor z parametrem.

Parametr jest typu IWebDriver. Powoduje to, że możemy przekazać każdy Driver, który implementuje interfejs IWebDriver. Gdybyśmy wpisali jako parametr ChromeDriver driver, zamiast IWebDriver driver to nie moglibyśmy w teście przekazać np. FirefoxDriver’a

this.Driver=driver;

Powoduje to, że nasz properties Driver będzie miał przypisaną referencje przekazanego driver’a, gdy stworzymy nowy obiekt typu HomePage.

PageFactory.InitElements(driver, this); <- Powoduje, że w konstruktorze inicjalizowane są elementy z tego Page’a. Gdybyśmy tego nie zrobili to test w miejscu gdzie używany byłby element z klasy HomePage rzuciłby błędem NullReferenceException dlatego, że element nie miałyby referencji.

pom5

Kolejnym elementem, który zaimplementujemy jest stworzenie metody odpowiadającej za logowanie do strony. Zmniejsza to ilość kodu w teście, łatwiej się go analizuje oraz nie trzeba w każdym teście pisać mechanizmu logowania.

Raz napisana metoda jest reużywalna w innych testach.

Metoda, którą napiszemy będzie zawierać:

Dwie właściwości, które są typu IWebElement (więc posiadają „po kropce” dostęp do metody SendKeys(„”);, odpowiadającej za wpisywanie znaków).

W parametrze będziemy przekazywać login i hasło.

Następnie po wpisaniu klikniemy w przycisk „Log In”  czyli w naszym przykładzie SubmitButton.Click();

Metoda jest typu DashboardPage i zwracamy return new DashboardPage(Driver);

logujemy się i test przenosi nas do Dashboard’u (Tak działa zalogowanie się do panelu admina w wordpressie).

pom6
devenv_2017-04-02_12-59-33

Po stworzeniu metody logującej tworzymy w folderze Tests folder Login. Dobre ułożenie testów po folderach pozwala zachować porządek w solucji. W folderze Login tworzymy klasę CheckLoginFunctionality.cs.  Stworzymy dwa testy, które sprawdzą w różnej konfiguracji:

  • Czy po zalogowaniu URL jest prawidłowy.
  • Czy gdy podamy złe hasło wyświetlany jest prawidłowy komunikat walidacyjny.

page object model

Testy zaczynamy od deklaracji zmiennej driver typu IWebDriver.

W setupie definiujemy zmienną driver typu ChromeDriver. Następnie przechodzimy do stworzenia w teście obiektu typu HomePage w parametrze przekazujemy obiekt driver.

CommonHelper.cs  – to klasa, która zawiera dwa properties’y. Jeden z loginem, drugi z hasłem do panelu administracyjnego.

Na końcu pierwszego testu znajduję się asercja sprawdzająca czy adres URL Driver’a jest taki jak oczekujemy po zalogowaniu. W drugim teście dodałem więcej asercji, żeby pokazać Wam jakie inne rzeczy możemy sprawdzać.

Assert.IsTrue(home.ErrorBox.Displayed) – sprawdza czy ErrorBox wyświetlił się.

Ostatnia asercja sprawdza czy komunikat walidacyjny jest prawidłowy znak po znaku.

W [TeardDown]

znajduję się metoda Close(), która zamyka po każdym teście przeglądarkę za pomocą driver.Dispose();

Próbujemy uruchomić nasz test. Testy wyświetlają się na zielono. Jednak gdy uruchamiam je drugi raz. Pojawia się błąd przy jednym z testów. Widać, że Selenium WebDriver zbyt szybko wpisuje tekst. Dodamy klasę WaitHelper.cs, która będzie zawierał metodę, która czeka na wpisanie przez selenium tekstu w pole.

Klasa WaitHelper.cs

page object model

Następnie tworzymy metodę statyczną WaitUntilElementValueEquals, która zawiera trzy parametry:

this IWebDriver driver – każdy obiekt, który implementuje IWebDriver ma dostęp do tej metody „po kropce”,

IWebElement element – element, który będziemy przekazywać i w nim sprawdzać czy wartość zdążyła się wpisać,

valueToCheck – przekazujemy tu tekst na, który będziemy czekać, aż się pojawi jako wartości w elemencie,

W pierwszej linii metody tworzymy obiekt typu WebDriverWait, który pozwala czekać za pomocą Selenium. Jako parametr potrzebuje jakiegoś driver’a, oraz TimeSpan.

Ostatnim krokiem jest wywołanie metody Unitl, która czeka w zadanym czasie na to by wartość atrybtu naszego elementu przekazengo w metodzie była równa z valueToCheck

Po stworzeniu metody dodajemy ją do klasy HomePage i metody LoginOnPage

pom8

Dodajemy naszą metodę. Uruchamiamy testy.

pom9

Podsumowanie

Dzisiaj dowiedzieliśmy się czym jest wzorzec Page Object Model. Zachęcam do wypróbowania tego u siebie.

MS.

 

Stało się… Start w konkursie „Daj się poznać”

Witajcie,

Wielu z Was prawdopodobnie słyszało o konkursie „Daj Się Poznać” (http://dajsiepoznac.pl)

Chcę spróbować w nim swoich sił i użyć również innych technologii niż te, których używam na co dzień.

Projekt będzie dotyczył testów UI :

Technologie, których zamierzam użyć to:

CodeceptJS,

Protractor,

Docker

Zachęcam do śledzenia bloga.

 

 

 

Kariera w IT? – Jak zacząć? Dla kogo? Cenne rady

Kariera w IT?

Kariera w IT? – Postaram się odpowiedzieć na to pytanie.

Jak rozpocząć pracę w IT?

 

Ostatnio w grupie „Testowanie Oprogramowania” oraz na innych grupach związanych w większy lub mniejszy sposób z branżą IT widzę sporo pytań typu: „Jak rozpocząć pracę w IT?”/ „Jak zostać testerem?”. Także niektórzy znajomi pytają się, co mógłbym im poradzić, aby mogli rozpocząć pracę we wszelako pojętej branży IT.

Wiele ludzi dzieliło się już swoimi przemyśleniami. Dziś ja chcę przedstawić wam swój punkt widzenia na ten temat. Dzisiejszym tekstem chcę pokazać, jakie są możliwości pokierowania swoją karierą w branży IT. Będzie to moje subiektywne zdanie wynikające bezpośrednio z moich doświadczeń. Mnie osobiście te działania, które będę opisywał, bardzo pomogły. Model ten był/jest powtarzany w podobny sposób przez wielu znajomych z pozytywnym skutkiem.

Czego dowiesz się z tekstu?

  • Jak rozwijać się mając 16,18,20,…,50 lat?
  • Co ze studiami?
  • Kariera w IT? Z czym to się je?

Dla 16-50 latków

Swoją przygodę z branżą IT rozpocząłem w wieku 16 lat.

W rozpoczynaniu kariery kluczową sprawą jest świadomość tego, co się lubi, co sprawia nam przyjemność, w czym bez trudu możemy się rozwijać.

Oczywiście rzadko jest tak, że świadomość przychodzi sama. Ja mając 16 lat, nie wiedziałem, że testowanie oprogramowania będzie moją drogą zawodową, bo w tym czasie  interesowałem się inną częścią IT.  Było to głównie programowanie i technologie Microsoftu’u. Nie miałem pojęcia o aktualnych metodykach pracy oraz miałem niewielką wiedzę o procesie wytwarzania oprogramowania. Wiedziałem, że jest ktoś taki jak tester, ale nie wiedziałem, że testowanie oprogramowania to tak rozległa i ciekawa dziedzina. W szkole średniej nauczyłem się podstaw programowania. Szukałem w internecie różnych informacji, w jaki sposób można się dalej rozwijać w tej dziedzinie. Przez znajomego trafiłem na informacje o grupie .NET. Zachęcił mnie, abym przyszedł na spotkanie studenckie i dalej zaczął w nich regularnie uczestniczyć. Mimo tego, że wówczas byłem w drugiej klasie technikum, poszedłem na pierwsze spotkanie, nie wiedząc, czego mam się spodziewać. Okazało się, że uczestnicy to bardzo otwarte i pełne pasji osoby.

Ciekawą sprawą jest to, że wiele osób działających w grupach .NET stworzyło swoje firmy, pracują w Microsoft lub są świetnymi programistami w wielu firmach. Czyli jak widać, rozwijają się.

Przygoda z grupami .NET

W spotkaniach uczestniczyłem cały rok. Żadnego z nich nie opuściłem. Uczyłem się tam wraz z innymi podstaw programowania na platformie Windows phone, C#, Windows 8. Każde ze spotkań to była dawka pozytywnej energii, wiedzy oraz satysfakcja z uczestnictwa w studenckich spotkaniach mimo młodego wieku. Następnie dostałem propozycję prowadzenia własnej grupy „junior .NET Twarde Pierniki”. Przez rok uczyłem się jak zachęcać ludzi do przychodzenia na moje prelekcje, jak pozyskiwać wsparcie od firm w branży oraz jak prezentować treści. Równolegle chodziłem na spotkania grupy zawodowej TGD.NET. Po pewnym czasie zostałem jej jednym z wiceliderów.

Wspominam o tym, żeby zachęcić was do spróbowania z różnego rodzaju grupami/kołami, niezależnie od wieku. Jeżeli do tego IT mieści się w waszych zainteresowaniach, to tym bardziej myślę, że warto próbować. Umiejętności oraz znajomości, które możecie wynieść, są bardzo przydatne w dalszej karierze. 

Oczywiście, jeżeli Wam nie po drodze z technologiami Microsoft’u i programowaniem, tylko już teraz wiecie, że wasza wymarzona grupa to np. grupa związana z testowaniem lub programowaniem, ale np.: w pythonie, to znajdziecie taką grupę/koło, która to właśnie wam będzie odpowiadać. Najlepiej szukać ich przez Meetup’a lub facebook’a. Na stronie meetup’a można znaleźć informacje o wielu grupach zrzeszających się w Polsce.

Dodatkowo od jakiegoś czasu Microsoft organizuje spotkania grup junior .NET. Odbywają się one w niektórych miastach w Polsce np. Poznań, Warszawa, Gdańsk polecam link (wszystkie grupy .NET) w Polsce, które kierowane są do młodszego odbiorcy w wieku licealnym, lub początkujących studentów. 

Aktualnie jestem aktywnym uczestnikiem spotkań PTaQu oraz Girls Who Tests. PTaQu oferuje świetne wykłady na temat wszelako pojętego testowania (każdy, na którym byłem, był świetny), a spotkania Girls Who Tests mają świetną formę panelu dyskusyjnego, która według mnie jest bardzo ciekawa i rozwojowa. Pozwala ona zobaczyć jak w innych firmach, układane są procesy związane z testowaniem oraz w jaki sposób poszczególne osoby, podchodzą do testowania. 

P.S

Wiek do 50 lat uwzględniłem dlatego, że znam kilka osób, które zbliżają się do niego, a kariera w IT może być dla nich dobrą zmianą. Pamiętajcie, że praca w IT to nie tylko programowanie i testowanie. Jest także wiele innych specjalizacji, w których każda zdeterminowana osoba powinna się odnaleźć. W tym wieku potrzeba prawdopodobnie większej siły samozaparcia, ale jeżeli komuś bardzo zależy? Warto spróbować.

Praktyki/Staże/Darmowe/Płatne…

Kolejnym dobrym pomysłem na rozpoczęcie kariery w branży IT jest pójście na praktyki. Wiem, że w Polsce darmowe praktyki są deprecjonowane. Osobiście dziwie się temu, bo uważam, że osoba po liceum/technikum, a nawet student, zazwyczaj nie ma jeszcze praktycznych umiejętności, których potrzebuje pracodawca. Dodatkowo trzeba pamiętać o tym, że nawet tzw. „darmowe praktyki” stanowią dla pracodawcy koszt (najczęściej).

Koszty pracodawcy to np.:

  • Stanowisko pracy
  • Licencja
  • Koszt czasu pracownika, który będzie się opiekował tą osobą.

(Mam na myśli oczywiście praktyki merytoryczne. Słyszałem, że zdarzają się jakieś „parzenia kawy”, „drukowanie dokumentów”, ale osobiście nigdy nie spotkałem się z tego typu modelem praktyk).

Uważam, że dla osób, które nie mają doświadczenia praktyki to świetna sprawa. Samemu owszem można uczyć się programować, napisać coś ciekawego, jednak większości osób praktyki pokażą jak fajna, może być praca w zespole, nauka technologii wykorzystywanych komercyjnie, dobrych praktyk i wzorców projektowych. Sam zrobiłem wiele tego typu praktyk. Bardzo się z tego cieszę, mimo że były one często bezpłatne. Pozwoliło mi to nabrać pierwszych szlifów, wyróżnić moje CV oraz nauczyć się wielu przydatnych rzeczy. 

Praktyk najlepiej szukać poprzez sprawdzenie firm związanych z IT w naszej okolicy oraz w internecie (np. w grupach „Testowanie Oprogramowania” pojawią się czasami informacje o tym, gdzie bez doświadczenia można pójść na praktyki). Dobrym pomysłem jest też pytanie się osób poznanych na wyżej wspomnianych grupach. Często ktoś może nas polecić. Są też firmy, które bez problemu zgodzą się na praktyki zdalne, wtedy możemy pracować z domu.

Uważam, że możliwości jest wiele. Czasem potrzeba być po prostu bardziej zdeterminowanym i pokazać, że zależy nam na rozwoju. Pamiętajcie, że umieszczenie w CV swojego uczestnictwa w jakiejś grupie, może was wyróżnić od np. innych studentów, którzy są na tym samym roku,  co wy.

Inne pomysły?

W tym punkcie chce przedstawić moje pomysły, jeżeli ktoś zastanawia się nad drogą programisty czy testera.

Posiadanie swojego portfolio jako programista.

Oto kilka pomysłów jak można zacząć je budować:

  • Jeżeli myślicie o karierze programisty, to polecam zacząć od prostych do bardziej zaawansowanych aplikacji, którymi będziecie mogli pochwalić się w CV, umieszczonych np. na GitHubie. (Jeden z kolegów nie miał wcześniej doświadczenia komercyjnego, ale zrobił kilka fajnych i ciekawych aplikacji w domowym zaciszu. To spowodowało, że dostał pracę w dużej korporacji. Studia rozpoczął dopiero po rozpoczęciu pracy w tej firmie).
  • Uczestnictwo w projektach opensource również jest możliwością rozwinięcia się oraz posiadania ciekawego doświadczenia do CV. 
  • Stworzenie ze znajomymi jakiejś aplikacji pozwala nauczyć się współpracy, a jeżeli aplikacja będzie ciekawa to również może dać nam rozpoznawalność i cenne doświadczenie (również czasem i zarobek).

Jak zacząć być testerem?

  • Polecam rozpocząć od zaopatrzenia się w książkę Radosława Smilgina pt. „Zawód Tester”. W bardzo przystępny sposób pokazuje i wyjaśnia podstawowe pojęcia i zadania testera. Uważam, że rozpoczęcie od tej lektury jest najsensowniejszym pomysłem. Polecam ją jako ‚must-have’ na początek.
  • Jak wcześniej wspominałem, jestem aktywnym uczestnikiem spotkań dwóch poznańskich grup testerskich. Sam zachęcam do uczestnictwa w nich. Niesie to ze sobą szansę dowiedzenia się czegoś ciekawego oraz zakolegowania się z bardziej doświadczonym osobami co daje nam możliwość zapytania ich o rady.
  • Bardzo dobrym pomysłem jest popatrzenie krytycznym okiem na aplikacje, których używamy na co dzień. Wzięcie kilku różnych aplikacji i na własną rękę spróbowanie znaleźć jakiegokolwiek defektu. Pozwala to potraktować testowanie jako swego rodzaju zagadkę, a znalezienie błędu jako nagrodę. 
  • Kolejnym dobry sposobem na rozwijanie się w testerskim rzemiośle jest Mr.Buggy. Są to aplikacje (wraz ze specyfikacją) ze specjalnie wprowadzonymi defektami po to, by rozwijać się jako tester i mieć na czym ćwiczyć. (napisane na potrzeby Ogólnopolskich Mistrzostw W Testowaniu Oprogramowania).

Cytując ze strony

„Wszystkie wersje Mr Buggy były testowane przez ponad 500 testerów. Są to jedne z najlepiej przetestowanych dokumentów i aplikacji na świecie.”  – mrbuggy.pl

Jest to świetny sposób, aby nauczyć się znajdywania defektów. Aplikacja posiada kilka wersji, razem wszystkie dają kilkadziesiąt zdań testerskich.

Tester automatyczny

Moim zdaniem tester automatyczny powinien umieć również testować manualnie i rozwijać także ten obszar swoich umiejętności. Pozwala to w lepszy sposób dobierać przypadki testowe, a funkcjonalności, które muszą być przetestowane manualnie, można przetestować w sprawniejszy sposób.

Jeżeli chcesz iść drogą testera automatycznego, to zdecydowanie należy nauczyć się podstaw języku programowania (z doświadczeniem nabywać coraz to większych umiejętności). Języki, które polecam na początek:

C# – ten, którego używam najczęściej w pracy. Bardzo przyjazna składnia, garbage collector, wyrażenia lambda i dobry support Microsoft’u. Polecam spróbować, jest naprawdę przyjaznym językiem. Oczywiście przez powiązania z Microsoftem mogą wam się pojawić w głowie jakieś negatywne skojarzenia, że jedna platforma etc… Od dłuższego czasu Microsoft silnie stawia na technologie open source i wspiera również rozwój Linuxa. Na potwierdzenie mojej tezy, polecam zapoznać się z tym artykułem http://thenextweb.com/microsoft/2016/09/15/in-your-face-google/ .

Jest wiele innych języków godnych uwagi: Java (dobre wsparcie community), Ruby (dobrze rozwijane frameworki np. capybara), czy python. Każdy z nich jest stosunkowo łatwy do nauczenia. Pamiętajcie o tym, że język programowania to narzędzie. Jeżeli nauczycie się jednego („nauczyć” – chodzi mi również o sposób abstrakcyjnego myślenia, w sposób programistyczny), to przejście na inny język programowania to szybka sprawa (W zamyślę, chodzi mi o to, że gdy przechodzimy  np. z C# -> Jave, lub Pythona -> Ruby,  to sprawa jest relatywnie prosta, jeżeli przechodzimy z jakiegoś języka niższego poziomu np. C++ na C# to zmiany są większe, ale również zajmuję to dużej mniej czasu niż nauka pierwszego).

Co ze studiami w IT?

Bardzo ciekawy i merytoryczny post napisał na ten temat Gynvael Coldwind kilka lat temu (link).

Ja uważam podobnie.

Praca komercyjna oraz studia, które pomagają w rozwoju, uważam za bardzo dobry pomysł, jeżeli ma się już plan na siebie. Mnie ten model podoba się najbardziej. Oczywiście wyboru dokonujemy sami. Wielu znajomych studiujących na uczelniach dziennych poszło do pracy na trzecim czy czwartym roku studiów. Każdy z nich mówi, że szybciej zacząłby karierę w IT, jeżeli to teraz miałby dokonywać wyboru. O swój rozwój trzeba dbać samemu. Niektórym wydaje się, że szkoła, nauczyciele zadbają o nich. Niestety jest to złudne myślenie. Nawet najlepsi nauczyciele nie przejdą za nas drogi, którą trzeba podjąć samemu i przejść, aby nauczyć się danej tematyki. Różne są teorie ile godzin trzeba, poświęcić nad danymi zagadnieniami. Jednak na pewno są to tysiące godzin, aby osiągnąć poziom eksperta w swojej dziedzinie. Trzeba pamiętać, że studia są po to, by dany temat studiować, często tylko poznać podstawy danego zagadnienia, z którym więcej w życiu się nie spotka. Jednak pozwala to rozszerzyć swoje horyzonty myślowe i kreatywność.

Podsumowując

Jest wiele możliwości, aby rozpocząć przygodę w IT. Istnieje sporo grup pasjonatów, które pozwolą nam poczuć tę pozytywną energię do robienia rzeczy ciekawych i nadadzą chęci do znalezienia pracy, która pozwoli nam się spełniać i cieszyć z tego, co robimy.

Zachęcam Was do poznawania tego, co lubicie, a czego nie. To pozwala zobaczyć, gdzie jest nam dobrze. I rozwijać się w tym obszarze.

 

Klikanie w Selenium WebDriver + C# oraz inne interakcje część 3

Podczas testowania aplikacji internetowych symulujemy zachowanie użytkownika. Do podstawowych interakcji ze stroną www można zaliczyć:

  • Klikanie w elementy takie jak przyciski, linki, check-boxy;
  • Wypełnianie elementów treścią jak inputs, drop-downs;
  • Przewijanie strony

W dzisiejszym wpisie postaram się zautomatyzować niektóre z wymienionych interakcji przy pomocy Selenium.

Czego potrzebujemy? 

Po czym możemy klikać?

W Selenium każdy obiekt IWebElement  posiada metodę Click(), która symuluje kliknięcie elementu.

Zdarza się, że podstawowe metody nie wystarczają. Innym sposobem jest klikanie za pomocą akcji. W Selenium akcje pozwalają m.in.:

  • Klikać – prawy/lewy klawisz, podwójne kliknięcia;

Wpisywać tekst, w tym znaki sterujące takie jak TAB, ESCAPE, ENTER

  • Przewijać do danego elementu
  • DragAndDrop – MouseDown + MouseMove + MouseUp

Plus inne…

Może się zdarzyć, że akcje również są niewystarczające do prawidłowego zasymulowania akcji użytkowania. W ostateczności można do źródła strony wstrzyknąć kod JavaScript.

var elem = driver.FindElement(By.ClassName(„something”));

((IJavaScriptExecutor)driver).ExecuteScript(„arguments[0].scrollIntoView(true);”, elem);

Powyższa metoda wykracza jednak poza ramy niniejszego posta. Zachęcam jednak do samodzielnego zgłębienia tematu.

Czego nauczysz się z tego wpisu?

  • Jak kliknąć w tytuł pierwszego posta?
  • Jak kliknąć w przycisk?
  • Jak klikać za pomocą Actions?
  • Jak wpisać tekst w element na stronie za pomocą Selenium?
  • Jak przewijać stronę do określonego elementu?

Celem testu będzie:

  • Kliknięcie w pierwszy element.
  • Powrócenie do głównego ekranu.
  • Kliknięcie w drugi wpis
  • Scrollowanie do sekcji „Comment”
  • Wypełnienie pola tekstem (mail, name, treść posta, website).

Żeby to zrobić musimy stworzyć obiekt drivera wraz z wejściem na stronę www.
var driver=new ChromeDriver();

var pageUrl = „https://studytestingblog.wordpress.com/”;

driver.Navigate().GoToUrl(pageUrl);

driver.Manage().Window.Maximize();

Assert.AreEqual(driver.Url, pageUrl);

 

Tworzymy obiekt zawierający kolekcje wszystkich tytułów postów

var listOfTitles = driver.FindElements(By.CssSelector(„.entry-title a”));

listOfTitles[0].Click();

driver.Navigate().Back();

Gdy uruchomimy test, WebDriver kliknie w tytuł pierwszego postu.

Za pomocą driver.Navigate().Back();

Wracamy do poprzedniej strony.

Drugi tytuł klikniemy z wykorzystaniem akcji w Selenium. Akcji możemy użyć na dwa sposoby:

  1. new Actions(driver).Click(listOfTitles[1]).Perform();

testingplus.me

Tworzymy nową akcję. Jako parametr w metodzie Click() podajemy IWebElement. Istnieje szansa, iż wykonanie kodu w powyższej postaci wyrzuci StaleElementReferenceException. W dokumentacji Selenium odnośnie wyjątku stale_element_reference możemy znaleźć dwa powszechne powody jego wystąpienia:

  • Element został całkowicie usunięty (dynamiczne strony www, single page applications)
  • Element nie jest już powiązany z drzewem DOM

W naszym przypadku ma miejsca druga sytuacja. Wyjątek ten spowodowany jest przeładowaniem strony (kliknięcie pierwszego posta i powrót). Selenium straciło referencję do obiektu.

Rozwiązaniem problemu może być ponowne wyszukanie elementu:

new Actions(driver).Click(driver.FindElementsByCssSelector(„.entry-title a”)[1]).Perform();

Gdy używamy Actions, to musimy pamiętać, aby na końcu każdej komendy dopisać Perform(). Jest to metoda, która odpowiada za wykonanie „akcji” i jest niejako wyzwalaczem. Actions zgodnie z nazwą, może posiadać kilka różnych, powiązanych ze sobą operacji. Wykonanie powyższego kodu powoduje klikniecie w „Drugi post”.

Kolejnym krokiem jest przewijanie strony do zadanego elementu. W poniższym przykładzie będziemy scrollować do sekcji „Comment”. Stworzymy do tego celu obiekt typu Actions.

 

Actions actions = new Actions(driver);

// Tworzę zmienną, która będzie odzwierciedleniem elementu „comment” na stronie

var comment = driver.FindElementById(„comment”);

// Przewinięcie strony do zadanego elementu

actions.MoveToElement(comment).Perform();

// Przypisanie wartości atrybutu elementu do zmiennej

var text = comment.GetAttribute(„placeholder”);

// Weryfikacja poprawności

Assert.AreEqual(text, „Enter your comment here…”);

Poniższy kod dodaje wpis na stronie i zamyka przeglądarkę.

comment.SendKeys(„ciekawy wpis”);

var mail = driver.FindElementById(„email”);

mail.SendKeys(„example@example.com”);

var author = driver.FindElementById(„author”);

author.SendKeys(„Michal”);

var websiteUrl = driver.FindElementById(„url”);

websiteUrl.SendKeys(„www.testingplus.me”);

var submitComment = driver.FindElementById(„comment-submit”);

submitComment.Click();

driver.Close();

Podsumowanie

Dziś nauczyliśmy się m.in. jak scrollować, wpisywać tekst do elementu oraz jak klikać. Pozwala to nam na pisanie coraz bardziej zaawansowanych testów. W następnej części chcę pokazać Wam podstawowe sposoby czekania w Selenium WebDriver.

Serdeczne podziękowania dla Przemka Secha, który pomaga mi merytorycznie korygować wpisy.  Jeszcze raz dzięki !

 

Jak zdobyć pluralsighta za darmo? – Visual Studio Dev Essentials

Pluralsighta za darmo? Jak zdobyć? – Visual Studio Dev Essentials

Znacie pluralsight.com?
Ja przy każdej nadarzającej się okazji polecam kursy, znajdujące się tam. Jest to obecnie największy portal z profesjonalnymi szkoleniami obejmującymi tematy z obszaru IT oraz z innych dziedzin pozostawiających w bliższym lub dalszym w związku z branżą IT. Wiele znanych osobistości m.in: ze świata programowania i testowania właśnie tam prezentuje swoje kursy. Osobiście polecam je wszystkim.
Dla osób zaczynających z programowaniem lub automatyzacją polecam np.:
C# fundumentals
https://www.pluralsight.com/courses/csharp-fundamentals-csharp5
Selenium
https://www.pluralsight.com/courses/selenium
Koszt subskrypcji to 29.99$/ month. W tej cenie otrzymujemy dostęp do ponad 4000 kursów. Uważam to za uczciwą cenę, tym bardziej że udostępnione materiały są na najwyższym poziomie. Autorami ich są uznani profesjonaliści programowania tacy jak m.in.: Jon Skeet, Hanselman czy Scott Allen.
Wielu pracodawców oferuje swoim pracownikom dostęp do tej platformy, jednak jeżeli u Was w pracy nie ma takiej
możliwości, studiujecie lub chcecie mieć go na własność, to specjalnie dla Was pokażę pewien sposób, otrzymania dostępu za darmo.

Co zrobić, aby otrzymać pluralsight za darmo?

pluralsight za darmo

Wchodzimy na stronę:
https://www.visualstudio.com/en-us/products/visual-studio-dev-essentials-vs.aspx
Klikamy „Join Now”.
W następnym kroku zakładamy konto Microsoft /logujemy się, jeżeli już je posiadamy.
Po zalogowaniu oprócz pluralsighta otrzymujemy inne korzyści, które również polecam sprawdzić.

Aby uzyskać pluralsighta, należy kliknąć „Get Code”, wówczas dostaniemy kod dostępu.
Dostęp do plurasight za pomocą tego kodu aktywny jest przez 3 miesiące, dodatkowo jest to wersja plus, od zwykłej subskrypcji (również płatnej) różni się ona tym, że przykłady z video możemy bez problemu pobrać. W wersji podstawowej mamy dostęp tylko do nagrań video, a jedynym możliwym pozyskaniem przykładów jest ich ręczne przepisanie.

pluralsight za darmo

 

Podsumowanie

W ten prosty i darmowy sposób otrzymaliśmy dostęp do pokaźnego źródła informacji. Przez te trzy miesiące można na spokojnie poznać podstawy programowania i sprawdzić, czy w późniejszym czasie warto wykupić dostęp na stałe. Dodatkowo w Visual Studio Dev Essentials jest m.in. kod do Azure na 25$ (działa on przez okres jednego roku), na którym możemy postawić sobie testową stronę np. z WordPressem czy ghostem do implementowania naszych scenariuszy testowych lub własnym blogiem.

MS.

 

Debugowanie – testów automatycznych w C#

Debugowanie — podstawy

W programowaniu (również scenariuszy testów automatycznych) niezbędną umiejętnością jest debugowanie. Pozwala nam wykrywać miejsce, gdzie popełniliśmy błąd, czego nie przewidzieliśmy. Jest również nieodzowne w pisaniu testów automatycznych. Dzięki pomocy Visual Studio możemy to zrobić.

Czego potrzebujemy?

  • Kod z poprzednich części wraz z pakietami NuGet
  • Visual Studio
  • ChromeDriver (przykładów nie testuje na innych driverach, więc może się zdarzyć, że kod ze wpisów może inaczej się zachowywać na innych driverach).
  • R#

Czym jest debugowanie?

Debugowanie jest procesem systematycznego redukowanie liczby błędów w oprogramowaniu polegającym na kontrolowanym wykonaniu programu pod nadzorem debuggera [1]. W uproszczeniu debugger pozwala na wykonywanie kodu programu linia po linii, podglądanie wartości zmiennych i wiele innych. W efekcie możemy w dość łatwy sposób wykryć defekty oprogramowania, w tym również testów automatycznych.

Dla platformy .NET najbardziej rozpowszechnionym debuggerem jest narzędzie dostarczone wraz z platformą Visual Studio i z niego będziemy korzystali na potrzeby dzisiejszego wpisu.

Debugger

Podsumowując, debugger umożliwia:

  • Wykonywanie programu w trybie pracy krokowej lub z zastawianiem tzw. pułapek (ang. breakpoints)
  • podglądanie i ewentualną zmianę zawartości rejestrów, pamięci

Proces debugowania może wyglądać tak:

  1. Uruchomienie krokowe oprogramowania.
  2. Znalezienie źródła błędu.
  3. Poprawienie błędu.
  4. Weryfikacja czy poprawka pomogła.

Dla osób, które nie miały do czynienia z debuggerem może wydawać się to trudne, ale na przykładzie Selenium WebDriver w połączeniu z  C# pokażę, że jest to dość proste.

Przechodzimy do naszego ostatniego przykładu z kodem (drugi wpis). Zmieńmy wartość zmiennej amountOfPosts na 1 (Na blogu mamy 2 posty, więc zmiana na jeden będzie powodować błąd w teście).

Breakpoint (czerwona kropka widoczna na grafice poniżej) dodajemy poprzez kliknięcie na szarym obszarze obok kodu. Po uruchomieniu programu jego wykonanie zostanie wstrzymane w tym właśnie miejscu.

debug1

debug2

Żeby uruchomić debugowanie, klikamy PPM na kulkę – > Debug

Gdy uruchomimy nasz test w trybie „Debug”, program zatrzymuje się przy  wspomnianej kropce.

Zatrzymaliśmy się i co dalej?

  • F10 – step over – przenosi do następnego kroku bieżącego pliku
  • F11 – step into – pozwala wejść w metodę, przenosi do źródła wywoływanej metody
    Dla prostych operacji działanie step over i step into jest identyczne.

debug3

Gdy najedziemy na zmienną pageUrl to Visual Studio, pokaże nam, jaką ma wartość. Możemy również najechać na zmienną  driver. W podglądzie otrzymamy informację o wszystkich własnościach instancji WebDrivera.

W zakładce „Watch” możemy dodawać i obserwować zmienne. Ich wartości są odświeżane w czasie rzeczywistym.

debugowanie w VS

Teraz gdy klikniemy F10 driver.Url zmieni się z ”data;” na http://testowaniebloga.ghost.io/ 

 

debugowanie w VS

 

Visual Studio wyróżnia tę zmianę kolorem czerwonym.

Jak widzimy, jest to bardzo przydatne i gdy tylko pojawi się błąd w naszych testach z wartością lub przypisaniem, to szybko zlokalizujemy problem. Zależnie od ustawień VS może się zatrzymać lub nie przy danym błędzie.

Kolejnym krokiem będzie dodanie zmiennej „pageDescription” do „Watch”, która zawiera tekstowy opis strony.

debugowanie w VS

Dodatkowo dodałem do watch zmienną postDates, która zawiera elementy z datą w postaci kolekcji elementów.

debugowanie w VS

Dzięki debugowaniu widzimy wszystko, co każdy element zawiera.

F10 przechodzimy kolejno po krokach, aż do listOfPosts.

Uruchomienie testów w trybie debug bez zaznaczonych breakpointów spowoduje wstrzymanie wykonanie dopiero w momencie wystąpienia błędu.

Visual Studio w trybie Debug pokazuje dokładnie, która linijka spowodowała wstrzymanie.

Podsumowanie

Dzisiaj poznaliśmy jedną z najważniejszy metod znajdowania błędów w kodzie. Jest to podstawowa technika, która jest częścią codziennej pracy programisty / programisty testów.

P.S

Podziękowania dla Przemka Secha za pomoc przy edycji.

Bibliografia

[1] Debugowanie – https://pl.wikipedia.org/wiki/Debugowanie

 

MS.