Witam
Chciałbym testować stronę losowymi danymi testowymi. Niewiem jak to zrobić. Ktoś coś podpowie?
- Pobierasz z pliku.
- Randomizujesz
- Losowo wybierasz z pliku
ale w jaki sposób? masz jakiś przykład?
Jaki język? jakie konkretnie dane? String, dane liczbowe?
Jeżeli zaś chcesz przetestować kilka opcji, to jest wygenerować kilka testów dla różnych zestawów danych z tymi samymi krokami, pomyśl o jakimś frameworku do DDT, np easytest dla javy albo DDT dla pythona.
Mam narzucone selenium i dopiero się uczę. W web driverze w javie napisałem test/skrypt uzupełniający formularz. Działa, uzupełnia danymi na sztywno, ale to ma się testować automatycznie. Dlatego potrzebuję gdzieś umieścić sobie dane testowe i importować je do testu. Też nie wiem jak generować jakieś raporty, żeby widzieć które dane przeszły a na których się wysypało. Na razie chcę się skupić na tym jednym formularzu, żeby zrozumieć o co chodzi, a potem dołączać następne moduły albo osobne testy dla nich pisać.
Język to java a dane i stringi i liczby.
Przykład 1:
- Tworzysz lub ściągasz plik w którym masz listę różnych imion męskich.
- Tworzysz lub ściągasz plik w którym masz listę różnych nazwisk w męskiej formie.
- Wczytujesz przy pomocy IOUtils (apache commons) te pliki metodą readLines.
- Przy pomocy obiektu klasy Random losujesz jedną linię z listy imion i jedno imię z listy nazwisk oraz łączysz to 1 string.
- Wpisujesz otrzymany string do pola formularza przez webdriver.
Przykład 2:
- Losujesz liczbę od 0 do 40 przy pomocy obiektu klasy Random.
- Dodajesz do niej 18
- Tak otrzymaną liczbę możesz traktować jako wiek
Dzięki bibliotece easytest możesz dostać konkretną informacje który test się wywalił (z którymi danymi). Tworzy ona oddzielny test dla każdego zestawu danych
Po dodaniu easytest do mavena (radzę poczytać o mavenie, jeśli jeszcze nie używasz)
- Tworzysz plik csv (lub xml) z danymi testowymi
- Dane wczytujesz do klasy poprzez wbudowane adnotacje
@RunWith(DataDrivenTestRunner.class)
@DataLoader(filePaths={testData.csv})
public class TestClass{
@Test
public void simplTestMethod(@Param(name="name")String name , @Param(name="age")int age , @Param(name="expectedOutput")int expectedOutput){
...............//your test conditions here
}
}
gdzie nazwa parametru odpowiada kolumnie w CSV. I teraz test będzie powtarzany tyle razy, ile danych testowych znajdzie kod.
Rozwiązania zaproponowane przez przedmówców są ok, ale żeby mieć dużo mówiący trace błędów, musiałbyś nadpisać klasę runnera, a jeśli dopiero zaczynasz, może być to kłopotliwe. Za to biblioteka zrobi to za Ciebie.
Ok...teoretycznie może tak być. Gorzej z praktyką :/. Może jakiś przykład?
No właśnie dopiero zaczynam. Ogarnąłem IDE, web drivra trochę ale nie widzę sensu uczenia się go tworząc testy tylko za danymi na sztywno. Może podpowiedzcie mi w co jeszcze albo co w ogóle potrzebuję jako początkujący tester automatyczny?
Może macie jakiś przykład?