Archiwum kategorii: Testowanie

Sprawdzanie czy checkbox jest zaznaczony w Selenium (C#)

Każdy z obiektów znalezionych przez Selenium jest standardowym obiektem typu WebElement. Udostępnia on następujące metody (których wartość zwracana jest typu bool):

  • displayed – element jest widoczny.
  • enabled – element jest aktywny – można go kliknąć, wpisać mu wartość itd. W praktyce każdy element dostępny na stronie ma stan enabled, gdyż jest to stan domyślny. „Wyłączyć” można go jedynie poprzez celowe dodanie do HTML atrybutu disabled. Element z takim atrybutem będzie „wyszarzony”.
  • checked – element jest zaznaczony. Dotyczy pól typu input – zarówno typu radio jak i checkbox.

Kawałek kodu HTML-owego, do którego zastosuję Selenium:


<html>
<body>
<form>
<input type="checkbox" />
</form>
</body>
</html>

Oraz fragment kodu C# z wykorzystaniem Selenium:


[Test]
public void CheckboxIsChecked()
{
  driver.url="file:///C:/DOCUMENTS/test.html";
  var el = driver.FindElement(By.TagName("input"));
  var before = el.Selected;//false
  el.Click();
  var after = el.Selected;//true
}

TERYT czyli polskie dane terytorialne

TERYT baza danych, z którą powinien zapoznać się każdy, kto zajmuje się zagadnieniami związanymi z danymi geograficzno-administracyjnymi. Jest to Krajowy Rejestr Urzędowego Podziału Terytorialnego Kraju.

Baza zawiera hierarchiczny podział na województwa, powiaty, gminy i ulice. Aktualnie format danych to spakowany ZIPem zbiór plików XML. Dane można przeglądać za pomocą przeglądarki – dochodząc do najniższego poziomu, finalnie i tak ściągamy plik XML:

ulica_okrezna_mielec

Można także pobrać kompletną bazę wszystkich ulic w Polsce (sekcja plików predefiniowanych). Plik jest spory – 77 MB, 3 miliony linii. Średnio radzi sobie z nim notatnik;) Dane najlepiej sparsować (swoim) programem.

Do czego to się może przydać?

  • Do projektowania bazy danych adresów użytkowników. Czy 25 znaków wystarczy na pole zawierające tylko nazwę ulicy? Okazuje się, że niekoniecznie. Wg wpisu na temat najdłuższych i najkrótszych nazw ulic i miejscowości: http://alcik-blog.nemezis.eu/nazwy_ulic_i_miejscowosci_w_Polsce (bazowanego właśnie na danych z TERYT-u), nazwa ulicy może zawierać nawet 74 znaki.
  • Do testowania oczywiście. Po co wymyślać niestworzone dane testowe, skoro można posłużyć się autentycznymi i przy okazji sprawdzić testowany system np. pod kątem dozwolonych znaków czy długości adresów. Okazuje się, że dane adresowe mogą zawierać takie znaki, jak cudzysłów, apostrof i tak dalej.

 

Selenium: Exception „Compound class names are not supported”

Today something about one of exceptions that can occure in Selenium PageFactory.

IllegalLocatorException was unhadled by user code.
An exception of type „OpenQA.Selenium.IllegalLocatorException” occured in WebDriver.dll but was not handled in user code.
Additional information: Compound class names are not supported. Consider searching for one class name and filtering the results.

In my case, this exception was thrown in line:

PageFactory.InitElements(webDriver, pageElement);

This is probably a bug in Selenium. Solution is easy: just do not use:

[FindsBy(How=How.ClassName, Using="name_of_class"]

Instead of ClassName, try to use Css Selectors:

[FindsBy(How=How.CssSelector, Using=".name_of_class"]

Remember about a dot!

Asert w NUnit

Jednym z bardziej elementarnych składników testów są asercje, umożliwiające sprawdzenie, czy spełnione są warunki testu.

W NUnicie dostępnych jest wiele różnych asercji. Najprostsza to:

Assert.AreEqual

To jednak nie wszystko. NUnit oferuje cały wachlarz asercji – warto spojrzeć w dokumentację [equalConstraint][assertions].

Bardzo fajną opcją jest na przykład sprawdzenie, czy kolekcja jest posortowana:

var notSorted = new List<decimal>();

notSorted.Add(12.3);

notSorted.Add(5.5);

notSorted.Add(100);

Assert.That(notSorted, Is.Ordered);//Fail

Poza klasycznymi asercjami NUnit oferuje też np. StringAsert, CollectionAsert itd.

Testowanie – notatki

Pod rękę nawinęła mi się kartka z notatkami – bodajże do egzaminu ISTQB.

Negative testing scenarios – przykładowe:

  • testowanie błędnymi wartościami
  • niewypełnienie pól wymaganych
  • niepoprawny typ danych
  • więcej/mniej znaków niż wymagane
  • większy/mniejszy zakres danych, niż spodziewa się program
  • testy z manipulowaniem sesją w przeglądarce
  • zduplikowanie wartości, pól, brak pól (np. w webservisie)

Testowanie mutacyjne – sprawdzanie, na ile testy jednostkowe rzeczywiście sprawdzają kod. Automatyczne wprowadzanie losowych błędów w programie (posiewanie błędów) i uruchamianie testów jednostkowych, by sprawdzić, czy wykryły one wprowadzone błędy. Wymaga dużej mocy obliczeniowej.

Fuzz testing – wprowadzenie niepoprawnych, nieoczekiwanych, losowych danych, obserwacja i czekanie na awarię. Ma dwa rodzaje: fuzzing mutacyjny lub generacyjny. Tego typu testy mogą być wykonane na wielu poziomach, np. niskopoziomowe – na etapie np. mieszania w pamięci dzielonej lub nieco wyższe – na etapie danych wejściowych do komponentów programu.

Testowanie strony w różnych wersjach IE

Każdy, kto zajmował się aplikacjami webowymi pamięta problemy z kompatybilnością i różnym wyświetlaniem stron w przeglądarkach Internet Explorer. Wynika to z odmiennej interpretacji HTML, CSS czy JavaScript przez te przeglądarki. W jeszcze nie tak dawnych czasach, stanowiło to nie lada wyzwanie. Trudno było wówczas dysponować farmą komputerów z różnymi wersjami IE, zwłaszcza że pociągało to za sobą także posiadanie różnych systemów operacyjnych (Windows XP i różne service packi, Windows 7 itd.). Pamiętam programy, które miały emulować zachowanie różnych wersji IE, nie były one jednak wystarczająco miarodajne.

Od pewnego czasu, za pośrednictwem serwisu http://modern.ie Microsoft oferuje zestaw narzędzi ułatwiających owe zadanie. Jest to m.in. możliwość zalogowania się do zdalnych maszyn z różnymi wersjami przeglądarki, zrobienia screenshotów, jak strona wygląda pod rożnymi przeglądarkami:

screen-microsoft-ie-scan

Oraz, co najciekawsze, pakiet maszyn wirtualnych, dostępnych do ściągnięcia z adresu: Czytaj dalej

Recenzja – Dane testowe. Teoria i praktyka

Tytuł książki „Dane testowe. Teoria i praktyka” autorstwa Radosława Smilgina i Anny Piaskowy (wydawnictwo Helion), bardzo dokładnie mówi, czego możemy się spodziewać po lekturze. Tak – w dużej mierze – danych testowych.

dane_testowe

W pierwszej części książki autorzy wprowadzają kilka znanych z egzaminu ISTQB technik testowania (klasy równoważności, wartości brzegowe itd.) oraz definiują, czym są dane testowe. Przydatna ściągawka dla osób początkujących. Czytaj dalej

Lista narzędzi testerskich

Jeżeli kiedykolwiek zastanawiałeś się, jakiego narzędzia lub podejścia użyć w celach testowania różnego rodzaju aplikacji, może natknąłeś się na listę narzędzi testowych sporządzoną przez The Minstry of Testing (powiedzmy, taki odpowiednik polskich Testerzy.pl).

Lista jest naprawdę imponująca – zawiera wiele narzędzi, pogrupowanych wg celu, np. testowanie aplikacji www, desktopowych, zarządzanie testami itd.

Link: http://www.ministryoftesting.com/resources/software-testing-tools/

Niektóre z narzędzi:

Czytaj dalej