Jak oszukać system, czyli kulejące części systemów, aplikacji i sklepów internetowych.

W ciągu ostatniego roku bardzo duża część sklepów przeniosła się do internetu, a koronawirus przyczynił się do tego, że wiele osób zaczęło korzystać z dobrodziejstw, jakie przynosi nam rozwijająca się technologia. Wśród klientów różnorakich sklepów, znaczna część zaczęła korzystać z aplikacji internetowych do zamawiania zakupów, taxi czy też kas samoobsługowych. Nietrudno się domyślić, że systemy, aplikacje czy nawet sklepy internetowe nie są przystosowane do takiego wzrostu użytkowników. Bardzo wiele różnorakich elementów w takich systemach nie zostało właściwie przemyślane i spora część błędów, która występuję w takich aplikacjach, może doprowadzić do utraty pieniędzy nie tylko i wyłącznie przez klienta, ale również przez właścicieli danego oprogramowania czy sklepu.

Na rynku IT coraz częściej szuka się testerów automatyzujących, ponieważ ich praca przynosi bardzo duże korzyści. Raz napisane testy automatyczne o ile są napisane w sposób przemyślany i fachowy, ograniczają pracę manualną i pozwalają w każdym momencie sprawdzić, czy oprogramowanie działa prawidłowo. Jednak testy automatyczne mają też swoją bolączkę. Jest nią skupienie się w nich na najczęstszych i najbardziej krytycznych ścieżkach, jakie wyklikuje klient. Jest to oczywiście spowodowane tym, że bardzo często automatyzowanie skomplikowanych casów jest nieopłacalne. Napisanie bardzo dużej ilości testów automatycznych mogło pochłonąć zbyt wiele czasu, który można znacznie lepiej wykorzystać. Dodatkowo automatyzacja bardzo skomplikowanych test casów jest niemożliwa bądź bardzo utrudniona przez aspekty techniczne. Utrzymywanie automatycznych testów zabiera sporo czasu i jeśli coś przestanie działać w mocno skomplikowanym teście, to nie każdy szybko i bez problemów go naprawi. Wielu z Was pewnie powie, że edge cases zdarzają się rzadko, że można je szybko naprawić, ale czy myślicie czasami o kosztach, które ponosi firma przez brak uwagi na testy skupione na pełną eksplorację?

Absolutnie chciałabym od razu wyjaśnić, że uważam testy automatyczne za ogromnie przydatne i wartościowe. Chcę jednak Wam zwrócić uwagę na to, że ich pozytywny wynik nie oznacza tego, że wprowadzana lub istniejąca funkcjonalność Waszego systemu jest bez błędów. Na etapie analizy wprowadzania nowych funkcjonalności warto brać czynny udział i zastanowić się, czy dane rozwiązania są sensowne a na etapie ich implementacji wymagać od deweloperów tego, aby także oni sprawdzali to, co tworzą i nie chodzi mi tutaj o napisanie przez nich testów jednostkowych, ale również o ile jest to możliwe, szybkie sprawdzenie danej funkcjonalności na realnym środowisku. Proszę Was, nie mówcie mi, że zadaniem programistów jest tylko pisanie kodu i nic więcej. W pełni dojrzałym zespole dobry programista, jeśli oddaje coś do testów, ma pewność, że napisał i sprawdził daną rzecz, jak umiał najlepiej.

Wracając jednak do głównego tematu wpisu, chciałabym Wam opisać kilka realnych problemów, z jakimi borykają się niektóre systemy internetowe. Kilka tygodni temu kupowałam prezent w bardzo popularnej sieci sklepów z książkami, grami oraz przyborami szkolnymi. Po wybraniu interesującej mnie książki zobaczyłam kolejkę przy tradycyjnej kasie i postanowiłam skorzystać z kasy samoobsługowej. Podeszłam do kasy, kliknęłam przycisk rozpoczynający zakupy, skasowałam książkę i zaraz po jej zeskanowaniu dostałam informację, żebym odkodowała zeskanowaną przeze mnie książkę poprzez przybliżenie jej do urządzenia obok kasy. Po wykonaniu tego kroku przeszłam do finalizacji zamówienia, wybrałam typ płatności, przybliżyłam telefon do terminala i odeszłam, nie czekając na paragon, ponieważ nie ukrywam, że trochę mi się spieszyło. Wyszłam zadowolona ze sklepu i poszłam w kierunku samochodu, wsiadając do niego, przypadkowo zauważyłam notyfikacje z banku, że płatność w sklepie się nie powiodła. Zdziwiłam się bardzo, jakim cudem w takim razie wyszłam ze sklepu z zakupem i nikt nie zwrócił na tę sytuację najmniejszej uwagi. Natychmiastowo postanowiłam wrócić do sklepu i zapłacić za książkę. Wchodząc do niego, zauważyłam na kasie samoobsługowej, z której wcześniej korzystałam, że płatność się nie powiodła. Podeszłam, ponowiłam płatność i odeszłam. Nie zauważona przez nikogo, tak jakby nigdy nic się nie wydarzyło. Od razu po zaistniałej sytuacji zaczęłam się zastanawiać, gdzie został popełniony błąd w systemie, z którego korzystał dany sklep. Oczywiście szybko doszłam do wniosku, że skąd pomysł na odkodowanie książki zaraz po jej zeskanowaniu, zamiast po pozytywnym przejściu płatności, co wydaje się znacznie bardziej przemyślane i pozwala uchronić sklep przed tego typu sytuacjami. Ja wróciłam i zapłaciłam za książkę, ale ile osób tego nie zrobiło, wykorzystując możliwość, jaką daje system kas samoobsługowych? Możecie powiedzieć, na pewno odnajdą tych ludzi i zgłoszą na policję, ale czy na pewno? A jeśli nawet to ile pochłonie to czasu, problemów nie tylko związanych ze sprawą kradzieży, ale również z naprawą nieszczęsnego błędu. Ile stracił pieniędzy sklep, na tym błędzie pewnie się nie dowiemy 🙂 Interesującym pytaniem jest jednak czy ma świadomość występującego błędu i czy już go naprawił?

Parę dni temu przydarzyła mi się kolejna sytuacja, która wzbudziła moje niezadowolenie i zrezygnowanie z wykonania transakcji. Na jednej stronie, za której pośrednictwem chciałam wysłać paczkę do mojej siostry i zaczęłam wypełniać wszystkie niezbędne do tego dane. Ten krok przeszedł w miarę sprawnie, formularz nie był skomplikowany czy zbyt długi. Po jego prawidłowym wypełnieniu przyszedł czas na przejście do strony płatności. Za każdym razem, kiedy próbowałam dokonać płatności, strona wywalała się na tym kroku. Oczywiście po odświeżeniu strony dane na formularzu nie zostały zapamiętane i musiałam kilkukrotnie wypełniać i ponawiać daną akcję. Błąd, który wyskakiwał na czarnej stronie, dla osoby niepracującej w IT nie mówił nic. Ja postanowiłam odpalić konsolę developerską i nie zauważyłam tam żadnych błędów. Nie zostały one zwrócone ani w Networku, ani w konsoli co jest dziwne, bo zazwyczaj dostaję tam informacje z kodem błędu i jego rodzajem. Po kilku nieudanych próbach zrezygnowałam i znalazłam inną stronę, na której wszystko działało, jak powinno. Tutaj z kolei nasuwa mi się pytanie, co powinna zrobić firma, aby uniknąć tego typu błędów na produkcji? Czy testowanie całego flow na produkcji od czasu do czasu miałoby w tym przypadku sens? Czy nie byłoby bardziej przyjazne dla użytkownika otrzymać informację na stronie, że w tej chwili dana funkcjonalność na stronie nie odpowiada, spróbują jak najszybciej temu zaradzić i żebym spróbowała później, zamiast dostawać kilka razy zwykłą czarną stronę? Co może być przyczyną tak słabego działania niektórych stron? Źle napisany kod, nieprzygotowanie strony na zbyt dużą liczbę użytkowników i jej słaba wydajność?

Ostatnią już w tym wpisie przytoczę sytuacje, która też przydarzyła mi się w ostatnich kilku dniach. Na jednej stronie z butami, po niedawnym zamówieniu, które nie przypadło mi do gustu, postanowiłam zwrócić zakupioną rzecz. Na zwrot pieniędzy czekałam zdecydowanie za długo. Oczywiście, kiedy napisałam do sklepu, przeproszono mnie za daną sytuację i przesłano mi voucher na 200 zł w ramach rekompensaty za bardzo długie oczekiwanie na zwrot środków. Ucieszyłam się i pomyślałam, skoro mam dodatkowe 200 zł to, czemu nie skorzystać i nie kupić w tym sklepie jeszcze raz. Znalazłam sobie produkt, który mi odpowiadał, wypełniłam wszystkie niezbędne informacje, wpisałam kod rabatowy i wszystko szło gładko. Wybrałam opcję płatności blikiem i musiałam przejść do banku, aby potwierdzić transakcję. Niestety w trakcie wchodzenia do aplikacji banku odpaliła się aktualizacja, której nie mogłam wyłączyć lub zignorować. Oczywiście czekając na zakończenie aktualizacji, wiedziałam, że nie zdążę potwierdzić transakcji blik. Tak rzeczywiście się stało. Nie obwiniałam za to strony, bo przecież to nie ich wina. Postanowiłam jeszcze raz dokonać zakupu i ku mojemu zdziwieniu otrzymany kod rabatowy, którego nie udało mi się wykorzystać, już nie zadziałał po raz kolejny. Myślę, no to niezła lipa, uznali pewnie ten voucher za wykorzystany. Wpadłam jednak na pomysł, żeby sprawdzić maila, na którego dostaje zazwyczaj wiadomości z ponowieniem nieudanej płatności, Jednak nie tym razem, nie dostałam żadnej informacji, szukałam w spamie i wszędzie gdzie się dało. No cóż, pozostało pisać do sklepu albo stracić ten voucher. Jednak nie to jest ważne. Według mnie oprogramowanie powinno przewidywać takie sytuacje, sklep powinien umożliwiać ponowienie płatności, a już na pewno wysłać maila z jakąkolwiek informacją, że można ponowić płatność. Jeśli nie wykorzystałam koniec końców vouchera to dlaczego straciłam do niego dostęp? Powiecie kwestia zabezpieczenia, ale jak dla mnie trochę dziurawa 🙂

Czy mieliście ostatnio jakieś sytuacje związane ze słabo działającym oprogramowaniem, które spowodowało waszą rezygnację z zakupów na danej stronie? Czym najbardziej jesteście zawiedzeni, korzystając z usług różnych sklepów działających online? Czy odstraszają Was może zbyt długie kroki do wypełnienia rejestracji w danych sklepie? Czekam na Wasze doświadczenia na ten temat 🙂 Pozdrawiam i do następnego wpisu!

Napisz komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Solve : *
30 + 16 =