5

Występuję z pewnym rozdrojem. Mamy przestarzały system, dla którego piszę Behat. Działa świetnie w większości przypadków. Ale zauważyłem problem, w którym testy Behat zakończyły się niepowodzeniem, jeśli dane, które testuję w stosunku do bieżącego środowiska, były przeznaczone do/wyciągnięte z innego środowiska.Czy w Behat można używać różnych danych kroku w zależności od aktualnego środowiska?

Na przykład, jeśli przetestuję funkcję wyszukiwania przez telefon w ramach kontroli jakości i oczekuję, że zwróci ona określony identyfikator podmiotu, nie mogę użyć tego samego numeru telefonu i identyfikatora jednostki do przetestowania w wersji RC lub Live. Dlatego chciałbym zarządzać sposobem na utrzymanie danych testowych dla każdego środowiska w Behat.

Wprowadzono tu kilka myśli, takich jak umieszczenie danych w profilu (wysoce niepożądane) lub tworzenie plików CSV dla każdej funkcji. Zastanawiam się również nad budowaniem wszystkich scenariuszy dotyczących danych przy użyciu tabel lub scenariuszy i mając kolumnę środowiska, która będzie używana do sprawdzania w stosunku do bieżącego środowiska i pomijania, gdy wiersz nie jest dla bieżącego środowiska. Może za pomocą tła lub innego haka, aby pomóc w tym.

Czy ktoś wie o dobrej drodze lub najlepszej praktyce radzenia sobie z wieloma środowiskami z różnymi zestawami danych w każdym z Behat?

Odpowiedz

5

Według ludzi w KNP Labs podczas jednego z ich treningów, najlepszą praktyką jest stworzenie niezbędnych danych do scenariusza, aby odnieść sukces jako część Given lub Background, co kończy się krokiem, który brzmi "Given I have have 7 numerów telefonów "i definicja kroku wstawia siedem numerów telefonów, na których można polegać w pozostałej części tego scenariusza.

Oczywiście często nie jest to możliwe, jeśli chce się przeprowadzić testy w zakładzie produkcyjnym, a strategie, które widziałem, różnią się w zależności od ilości konkretnych danych i niestabilności danych dotyczących produkcji.

Ponieważ najlepsza praktyka nakazuje również, że pliki elementów powinny opisywać zachowanie aplikacji w kategoriach, których beneficjent może w uzasadniony sposób oczekiwać, zrozumienie, jest mało prawdopodobne, aby cokolwiek wystawiającego dane warunkowe dla środowiska w pliku opcji było optymalnym podejściem. Użytkownik docelowy prawdopodobnie nie jest świadomy różnych środowisk.

Jeśli dane dotyczące produkcji są wystarczająco stabilne, aby pisać testy przeciwko, rozważabym ustawienie parametru lub profilu w pliku behat.yml, który mógłby być użyty do wskazania środowiska w czasie wykonywania i napisania niestandardowej definicji kroku. Definicja niestandardowego kroku może dostarczyć znane wartości produkcji w jednym przypadku i wstawić te wartości do pozostałych. Korniszon nadal wyglądałby tak: "Biorąc pod uwagę, że mam 7 numerów telefonicznych", to funkcja skupiałaby się na wartości biznesowej i korzyści dla użytkownika, a nie środowiska testowego.

+0

Ta sytuacja jest zdecydowanie trudna. Podoba mi się pomysł znalezienia innego sposobu dostarczania danych dla środowiska poprzez wyciąganie z niektórych niestandardowych funkcji i określanie, ile połączeń ma wykonać. – pthurmond

+1

Podejście, że tak jest, teraz jednak zaczęliśmy podważać użyteczność Behat dla ludzi QA, którzy nie są programistami. Najpierw jestem programistą, a druga osoba QA w tym przypadku (jako inżynier ds. Oprogramowania w testowaniu). Ale w przypadku dwóch innych osób zajmujących się QA w moim zespole, nie mogę oczekiwać, że będą znać SQL w tym momencie ani PHP. Chodzi o to, aby jak najprościej wprowadzić kroki i dane, a następnie móc zautomatyzować przeprowadzanie testów na serwerze bez GUI w tle. – pthurmond

+0

Powiem to, zaczynamy od nowego projektu, który zastąpi obecny system. W trakcie tego staram się, aby dostarczyli nam metody, których potrzebujemy, aby wprowadzić dane do systemu w locie, a następnie przetestować i ostatecznie wycofać. Niestety minie rok lub więcej, zanim całkowicie przeniesiemy się do nowego systemu, który obecnie budujemy. – pthurmond

Powiązane problemy