Szpiegowanie samego siebie
Jest sobie pewien problem. Polega on na tym, że wbrew temu co twierdzą niektórzy, nie mam pamięci absolutnej. Ponieważ to dość częsta przypadłość (brak pamięci absolutnej), podejrzewam, że problem również nie dotyczy tylko mnie. Ciekawy jestem jak sobie z nim radzicie?
Problem można sprowadzić do pytania “jak ja to zrobiłem?” Chodzi po prostu o to, że nie każdy element testu aplikacji jest starannie przemyślany, zaplanowany, wykonywany według rozpisanego scenariusza. Czasami aplikacja jest dopiero eksplorowana, rozpoznawana jej funkcjonalność, sposób interakcji z użytkownikiem, reakcja na modyfikację parametrów, (...). Innym razem robi się coś zupełnie innego (zupełnie inny test), aż tu nagle dzieje się COŚ. To COŚ może stać się natychmiast po wykonanej akcji, czasami to COŚ ujawnia się w zupełnie innym miejscu aplikacji. W skrajnych przypadkach to COŚ ujawnia się w zupełnie innej aplikacji, która z tą pierwszą wymienia dane. Gdy już zauważy się to COŚ interesującego, dobrze jest to odtworzyć. I tu właśnie pojawia się wspomniane już pytanie “jak ja to zrobiłem”.
Pierwszym krokiem może być sięgnięcie w odmęty swojej (nie)pamięci. Często to jednak nie działa, zwłaszcza jeśli w obrębie jednej funkcji/formatki wykonanych zostało wiele działań/testów. Swoją pamięć można wspomóc logami z localproxy. W przypadku części aplikacji to działa. Niestety – coraz częściej działa coraz słabiej. Wynika to głównie ze zmian w aplikacjach, intensywnego wykorzystania AJAX (i podobnych). W rezultacie odnalezienie konkretnego miejsca zajmuje coraz więcej czasu, a samo jego poszukiwanie to istny pain in the ass , jak mawiali starożytni Słowianie.
Zastanawiałem się jak sobie pomóc w takich sytuacjach. Jednym z pomysłów, który przyszedł mi do głowy, jest rejestrowanie obrazu w trakcie testów. Nawet dwa warianty tego pomysłu.
W wariancie pierwszym można nagrywać film i nawet dodać do niego komentarz odnośnie wykonywanych akcji. Pomysł ten ma jednak dwie trzy istotne wady:
- rozmiar generowanego pliku wideo - nawet mimo drastycznego ograniczenia liczby klatek,
- gadanie “do siebie” - ja nie mam z tym problemu, gorzej z otoczeniem :)
- dodatkowe obciążenie systemu - temat rzeka...
Drugi wariant to same zrzuty obrazu wykonywane automatycznie w odpowiedzi na akcje użytkownika. Myślałem o wyzwalaniu akcji przez kliknięcie myszką. Ważne, by każdy screen był opatrzony timestampem, dzięki czemu możliwe byłoby łatwe korelowanie obrazu z zapisami w logach localproxy.
Wydawało mi się nawet, że jest narzędzie, które (mniej więcej) pozwoli osiągnąć pożądany rezultat: Wink. Mniej więcej, bo niestety nie udało mi się znaleźć możliwości określenia czasu, kiedy został zrobiony dany zrzut ekranu, oczywiście poza odczytaniem tego czasu z samego obrazka. Dodatkowo okazuje się, że Wink gromadzi obrazy w pamięci i zapisuje je dopiero na żądanie użytkownika. To jest chyba najważniejszy mankament, bo nie potrzebuję kolejnego procesu pożerającego pamięć w absurdalnych ilościach... Pytałem, czy ktoś może zna jakieś inne narzędzie, które spełniałoby moje oczekiwania, jak na razie bez odzewu.
Czy też doświadczacie problemu z odtworzeniem pewnych scenariuszy, które przypadkiem się objawią w trakcie testów? A może z przypomnieniem sobie jakiegoś drobnego szczegółu, co do którego pojawia się wątpliwość kilka tygodni/miesięcy po zakończeniu projektu? Jak sobie z nim radzicie?
Oryginał tego wpisu dostępny jest pod adresem Szpiegowanie samego siebie
Autor: Paweł Goleń