AllureC#SelenoidTestowanie automatyczne
Trending

Allure report – czytelny raport z testów automatycznych

W dzisiejszym wpisie chce Wam przedstawić Allure.

Jest to darmowy framework (open source), który służy do tworzenia raportu z testów automatycznych. Stworzony został głównie przez pracowników firmy Yandex i wspierany jest przez dużą społeczność na GitHubie. Allure dobrze integruje się z Selenoidem (Możemy np. załączyć video z Selenoida do naszego raportu. Jest to również możliwe z Zalenium.)

Artykuły o Zalenium i Selenoidzie

Artykuł o Zalenium, które możemy zintegrować z Allure
Artykuł o Selenoidzie, którego możemy zintegrować z Allure

Jak wygląda Allure report?

Raport z większą ilością testów – dostępny pod https://demo.qameta.io/allure/

Jakie funkcje ma Allure?

  • Możliwość dodawania screenshotów z testów oraz innych załączników takich jak np. video, .json, plik logów
  • Przedstawienie w sposób czytelny stanu testów w danym momencie
  • Dodawanie własnych pluginów
  • Możliwość załączania numeru ticketu np. z Jiry

Jakie języki/frameworki wspiera?

Wspiera większość popularnych języków programowania:

  • Python
  • C#
  • Java
  • JS
  • Ruby

Jeżeli nawet nie używacie C# to polecam Wam zaznajomić się z tym frameworkiem.


Czego potrzebujemy?

W tym wpisie korzystam ze swojego kodu, który utworzyłem na potrzebę jednej z konferencji, na której wystąpiłem.

  • Umieściłem na GitHubie kod, którego będę używać w tekście:
https://github.com/testingplusme/WordpressTest
  • NUnit Console Runner – pozwala uruchamiać nasze testy, które korzystają z NUnita jako runnera. Wskazujemy ścieżkę do .dll z testami i wówczas NUnit Console Runner uruchamia nasze testy.
  • SpecFlow – w projekcie korzystam ze SpecFlow. Moim zdaniem testy BDD sprawdzają się dla Allure dobrze, ponieważ taki raport będzie jasny dla każdej osoby w teamie. Oczywiście podtrzymuje, że BDD ma sens,  jeżeli ktoś oprócz nas (mam tu na myśli nas – programistów testów) z nich korzysta.
  • Serwera lub osobistego komputera – ja korzystam akurat z serwera na OVH dzięki ich uprzejmości, ale również może być to osobisty komputer

Prezentacja z konferencji 

Informacje na temat Allure:

http://allure.qatools.ru/

Testy, które używać będziemy w tekście

testingplue.me
Testy w SpecFlow do automatyzacji

Omówienie kodu

Pierwszy z testów dodaje komentarz do pierwszego posta, który znajduje się na naszej testowej stronie.  Korzystam w tym przypadku ze SpecFlow, który pozwala tworzyć scenariusze BDD dla C#.

Drugi test różni się tym, że chcemy w nim sprawdzić, czy pokażę się walidacja o nie właściwym mailu.

Zapisywanie screenshotów i dodawanie do Allure

Utworzyłem metodę, która dodaję do Allure zdjęcie.  

Polecam również dodać kod, w którym będziemy decydować czy chcemy uzyskać screenshot z testów po każdym kroku, czy może tylko jak w danym kroku wystąpił błąd. Tworzenie screenshotów umieściłem w klasie SeleniumHooks w metodzie, która ma atrybut [AfterStep] – czyli jest uruchamiana po danym kroku.

Przydatne jest w również użycie w tym miejscu scenarioContext.TestError!=null  – pozwala nam to sprawdzić, czy dany krok zakończył się błędem. Jeżeli tak to wówczas możemy na to zareagować w sposób jaki chcemy.

Dodawanie NuGet packages

testingplue.me

Dodaję do projektu SpecFlow.Allure – bibliotekę, która instaluje również Allure.Commons, która jest bardziej generyczna i jest odpowiednikiem biblioteki głównej.

Wcześniej dodane zostały paczki do SpecFlow, Chrome Drivera, NUnita, Selenium WebDrivera.

Strona do automatyzacji 

https://testpagefor.home.blog

allure-results

Jest to folder, który jest tworzony po uruchomieniu testów w katalogu, w którym zostały one uruchomione. Czyli jeżeli np. korzystamy z NUnit Console Runnera to testy będą w ścieżce, w której znajduje się ten folder.

allure.config.json

testingplus.me - właściwości dla allure.config.json
allure.config.json – właściwości

W tym pliku możemy konfigurować np. dodanie urlu do danego issue lub określić inną nazwę dla katalogu wynikowego, którą domyślnie jest allure-results. Jeżeli korzystamy z Allure dla C#, ważne jest żebyśmy ustawili właściwość always copy w properties.

Tworzenie raportu z CommandLine

Do stworzenia raportu z CommandLine potrzebujemy zainstalować pakiet.

https://bintray.com/qameta/generic/allure2

Możemy zrobić to instalując Allure manualnie lub za pomocą Scoopa (jeden z managerów pakietów dla Windowsa).

https://scoop.sh/

Instalacja Scoop

iex (new-object net.webclient).downloadstring('https://get.scoop.sh')

Raport wygenerowany lokalnie

Gdy zainstalujemy Allure na naszym komputerze to przechodzimy do użycia go. Mamy przynajmniej dwa sposoby na to jako wygenerowac allure report lokalnie. Udajemy się do katalogu gdzie znajduję się nasz folder allure-results. Jeżeli korzystamy z Nunit Console Runnera to znajduje się on w tym folderze gdzie jest NUnit Console Runner. Przechodzimy tam poprzez PowerShella.

Uruchamianie testów poprzez NUnit Console Runner

Po testach, które przeszły pomyślnie stworzony został folder allure-results.

testingplus.me - Allure results
Stworzony folder allure-results po uruchomieniu testów 
allure generate

W tym miejscu w PowerShellu korzystamy z komendy allure generate, która generuje nam raport do folderu allure-report, który możemy uruchomić poprzez kliknięcie pliku .index.html

testingplus.me - Allure report
Allure report wygenerowany lokalnie

W naszym kodzie screenshoty oraz video dodawane są wtedy, gdy nasz test zakończy się błędem.

Kod, który dodaje video do raportu 

Do Allure możemy również załączyć plik html z linkiem do video, które zostało zrobione w Selenoidzie lub w np. w Zalenium.

W tym miejscu sprawdzamy, czy test ma jakiś błąd, jeżeli tak to dodajemy video do naszego testu.

Metoda, która tworzy HTML z video 

Dodajemy prostego HTML jako załącznik z URLem do naszego video. Potrzebujemy też tutaj dodać SessionID, który jest standardową nazwą na video dla Selenoida. Mamy ją dostępną, gdy korzystamy z RemoteWebDrivera.

Jakie mamy inne możliwości dodawania załączników?

Możliwości są, duże możemy np. załączyć plik .jsona z logami lub .txt czy .xml  do Allure.

Video nagrywać czy nie?

W naszym przykładowym kodzie video jest robione zawsze, bo mamy włączoną opcje enableVideo na true, ale załączane jest do raportu tylko wtedy gdy test zakończy się błędem.

Osobiście uważam, że nagrywanie video warto włączać sporadycznie i mieć opcje na żądanie. Możemy to zrobić za pomocą TestContext i pobierać dzięki niemu wartość true lub false i przekazywać ją  z jenkinsa, wtedy kiedy potrzebujemy nagrywania video, a nie zawsze. Czemu? Ponieważ do nagrywania video serwer potrzebuje większej mocy. Poza tym pojawiają się wtedy wyzywania z tym, gdzie te video np. przechowywać. Dla większości przypadków screenshot po teście, który zakończył się błędem jest wystarczającą informacją.

Oczywiście są rozwiązania, które pozwalają przechowywać video z testów.

Wywołujemy sytuacje, że nasz test nie działa

Dodam do testu umyślnie błąd.

Zmieniłem z RandomMail na fake – wcześniej był tworzony testowy mail

Uruchamiam testy. Pierwszy zakończony błędem, ponieważ wprowadziliśmy zły mail. Przechodzimy do wygenerowania raportu w Allure dla naszych testów.

Raport z testu, który się nie udał

testingplus.me - video oraz screenshoty w raporcie

Podsumowanie

W dzisiejszym wpisie poznaliśmy jeden z najbardziej czytelnych raportów w kontekście testów automatycznych. Zachęcam do jego wypróbowania bo jest darmowy i wspiera większość popularnych języków programowania.

Michał Ślęzak

Programista testów w whatclinic.com. Bierze aktywny udział w rozwoju poznańskiej społeczności testerskiej PTaQ przez bycie wiceliderem. Pasjonuje się wsparciem procesu testowania poprzez automatyzację.

Related Articles

Sprawdź Również

Close
Close
Close