W skrócie
W opisywanym wdrożeniu nowe transakcje terminala sprawdzano w tej samej bazie, w której pracują magazynierzy, ale przez osobną rolę testową z własnymi kaflami. Testy szły na kontrahencie testowym, a dane testowe i zmiany formularzy wprowadzały skrypty z transakcją i kontrolą bazy. Na kafle magazynierów transakcje mają trafić dopiero po akceptacji.
Testowanie nowych transakcji terminala na produkcji ma w opisywanym wdrożeniu jedną cechę widoczną od razu: nie ma osobnej bazy. Konsultant sprawdza nową transakcję w tej samej bazie, w której pracują magazynierzy, więc musi rozdzielić to, co widać na terminalu, od danych, na których testuje. Zmiany formularzy i menu wydruku wprowadzały skrypty. Dane testowe zakładały również skrypty. Skrypty mają kontrolę bazy i transakcję, a część z nich także tryb próbny i samoweryfikację.
Strona opisuje organizację takiego testu, a nie jego wyniki. Przeniesienie nowych transakcji na kafle magazynierów przewidziano dopiero po akceptacji i podajemy je wyłącznie jako plan, bez daty i bez opisu efektów.
Ogólny przebieg projektu opisuje strona o wdrożeniu systemu WMS, a osobne środowisko demonstracyjne strona o demo systemu WMS. Tutaj chodzi o inny przypadek: test w bazie produkcyjnej, który prowadzi osobna rola z własnymi kaflami. Dane testowe są oddzielone od produkcyjnych.
Test składa się z sześciu kroków, a każdy ma własne narzędzie
Tabela zestawia sześć kroków w kolejności, w jakiej opisuje je dokumentacja wdrożenia. Trzecia kolumna podaje, co dany krok sprawdza albo przed czym chroni. Część tych ustaleń pochodzi z dokumentacji, a nie z pomiarów na terminalu, i tak je oznaczamy w dalszych sekcjach.
| Krok | Narzędzie | Co sprawdza lub chroni |
|---|---|---|
| 1. Rejestracja transakcji testowych | osobny kod i opis z dopiskiem TEST; rola testowa | rola ogranicza widoczność kafli w menu (według dokumentacji) |
| 2. Wersja pliku | znacznik wersji w adresie transakcji | terminal pobiera nowy plik |
| 3. Dane testowe | kontrahent testowy i login testowy; numery z przedrostkiem | dokumenty testowe łatwo odróżnić od produkcyjnych |
| 4. Skrypt zmiany | kontrola bazy i transakcja; samoweryfikacja w części skryptów | zła baza zatrzymuje skrypt, błąd cofa zmiany |
| 5. Tryb próbny | przełącznik zero lub jeden | kontrole bez zapisu |
| 6. Wycofanie danych testowych | znacznik usunięcia i liczenie wierszy | miękkie wycofanie i kontrola, czy nie zostały aktywne wiersze testowe |
Pętla na schemacie jest prosta. Odmowa akceptacji wraca do skryptu w trybie próbnym, a dopiero akceptacja otwiera dolny pas z przeniesieniem na kafle magazynierów.
Osobna rola testowa dostaje własne kafle z opisem TEST
W opisywanym wdrożeniu każda nowa transakcja terminala ma w rejestrze transakcji własny wpis. Wpis ma osobny kod i identyfikator, a jego opis zawiera dopisek „TEST”. Wpisy transakcji, których używają magazynierzy, pozostają bez zmian.
Wpisy testowe wskazują pliki testowe terminala. Dla istniejących transakcji obok dotychczasowego pliku leży plik testowy z przyrostkiem w nazwie. Trzy transakcje są nowe i dotychczasowego pliku nie mają.
Według dokumentacji wdrożeniowej transakcje testowe przypisano do osobnej roli terminala, czyli roli testowej. Rola ogranicza widoczność kafli w menu i nie jest zabezpieczeniem technicznym. To ustalenie z dokumentacji, a nie z pomiaru na terminalu. Ogólny podział uprawnień wyjaśnia strona o rolach i użytkownikach w systemie WMS, a samą aplikację terminala opisuje strona o aplikacji magazynowej na Androidzie.
Znacznik wersji w adresie pliku decyduje, który plik pobierze terminal
Adres pliku transakcji niesie znacznik wersji. Platforma traktuje go na dwa sposoby, opisane w liście poniżej.
- Znacznik ze znakiem „@” na początku: platforma zamienia go na parametr wersji w adresie pliku.
- Brak znacznika: platforma dokleja do adresu numer wersji aplikacji.
Znaczniki transakcji testowych mają postać daty, z dwucyfrowym numerem kolejnym przy kolejnych podmianach pliku. Przykład (fikcyjny): plik testowej transakcji podmieniono tego samego dnia po raz drugi. Znacznik dostaje wtedy numer kolejny, a adres pliku różni się od adresu po pierwszej podmianie.
Zmiana znacznika sprawia, że przeglądarka terminala pobiera nowy plik. Znacznik dotyczy więc pliku transakcji. Konfiguracji zapisanej w bazie dotyczy inna czynność: po jej zmianie wykonuje się reset pamięci podręcznej aplikacji, a użytkownik terminala loguje się ponownie (według dokumentacji skryptów wdrożeniowych). To dwie osobne czynności, które wykonuje się obok siebie: pierwsza przy podmianie pliku, druga po zmianie konfiguracji.
Kontrahent testowy i dane testowe da się odróżnić od produkcyjnych i wycofać miękko
Testy wykonywano na kontrahencie testowym i z loginem testowym. Palety, dokumenty, zlecenia i partie testowe mają w numerze wyróżniający przedrostek, więc dokumenty testowe łatwo odróżnić od produkcyjnych.
Stan i dokumenty testowe zakładają skrypty, a nie ręczny wpis w programie. Zakres danych testowych jest więc zapisany w skrypcie, a nie w pamięci osoby, która je wpisywała.
Dane testowe wycofuje się miękko. Skrypt wycofujący ustawia znacznik usunięcia na stanie testowym, a ten sam znacznik dostają dokumenty i zlecenia testowe. Po wycofaniu skrypt liczy, czy nie zostały aktywne wiersze testowe. Kopie testowe formularzy usunięto osobnym skryptem po kontroli liczb wierszy.
Odróżnienie danych testowych od produkcyjnych jest warunkiem bezpiecznego sprzątania. W opisywanym wdrożeniu służą do tego kontrahent testowy i przedrostek w numerach, a o sposób takiego rozróżnienia pytamy w drugim pytaniu do analizy.
Skrypt wdrożeniowy ma nagłówek i najpierw sprawdza, na jakiej jest bazie
Każdy skrypt wdrożeniowy ma nagłówek z siedmioma polami. W polu statusu zapisuje się, gdzie skrypt wykonano. Dopisuje się tam też termin i wynik wykonania.
| Pole nagłówka | Czego dotyczy |
|---|---|
| baza | baza, dla której skrypt jest przeznaczony |
| kontekst | powód, dla którego skrypt powstał |
| co zmienia | zakres zmiany |
| czego nie zmienia | granica zmiany |
| idempotencja | czy skrypt wolno wykonać ponownie |
| wycofanie | sposób cofnięcia zmiany |
| status | uzupełniany po wykonaniu skryptu |
Skrypt zaczyna od kontroli nazwy bazy. Przy innej bazie przerywa pracę: zgłasza błąd i wyłącza wykonywanie dalszych instrukcji, a na końcu przywraca normalny tryb. Skrypt zmieniający dane lub formularze wykonuje zmiany w jednej transakcji, a błąd w trakcie cofa całość.
Skrypt zmieniający formularz ma jeszcze dwa zabezpieczenia. Gdy punkt zaczepienia w treści zapytania formularza nie występuje dokładnie raz, kończy się błędem i niczego nie zapisuje. Jest też idempotentny: kolumny dopisuje tylko wtedy, gdy ich brakuje.
Samoweryfikację ma część skryptów, nie wszystkie, i opisujemy tu tylko te, które ją mają. Samoweryfikacja skryptu zmiany formularzy wypisuje do przeglądu cztery kontrole, opisane w liście poniżej. Same kontrole po zapisie niczego nie przerywają.
- Zapytania formularzy: opisują się bez błędu.
- Nowe pola: są w wyniku zapytania.
- Definicje kolumn: nie ma zdublowanych.
- Rewizje zmian: tabele objęte rejestrem rewizji są aktywne.
Tryb próbny wykonuje zmiany i cofa je, a sprzątanie po teście liczy wiersze
W skryptach, które go mają, tryb próbny to przełącznik na początku skryptu. Zero oznacza wykonanie zmian i kontroli, a potem cofnięcie transakcji, jeden oznacza zapis. Taki skrypt jest domyślnie w trybie próbnym i wypisuje kontrole przed cofnięciem. Tryb próbny z wycofaniem dla zapytań zapisanych w bazie opisuje osobny artykuł o zmianie zapytań zapisanych w bazie z trybem próbnym.
W trybie próbnym skrypt wykonuje zmiany i kontrole, a potem cofa całą transakcję.
Pierwsze uruchomienie niczego więc nie zapisuje, a wdrażający dostaje wynik kontroli do przeglądu, zanim przestawi przełącznik na jeden. Makieta poniżej pokazuje przykładowy wynik takiego przebiegu: dwie siatki z liczbami i przykładowy komunikat o wycofaniu. Liczby i komunikat na makiecie są wymyślone i nie pochodzą z żadnej bazy.
Tryb próbny stosowano też przy sprzątaniu. Kopie testowe formularzy kartotek usunięto osobnym skryptem w trybie próbnym. Skrypt porównuje liczbę usuniętych wierszy z oczekiwaną i przy niezgodności przerywa oraz cofa zmiany.
Definicje pól przeniesiono z kopii testowych do formularzy docelowych (według dokumentacji), a formularze docelowe mają dodatkowo podpowiedzi przy polach. Test ręczny na terminalu obejmował przebieg od początku do zatwierdzenia dokumentu na danych testowych, także według dokumentacji.
Przeniesienie na kafle magazynierów jest planem po akceptacji
Przeniesienie nowych transakcji na kafle magazynierów przewidziano po akceptacji. Według planu wdrożenia obejmie ono cztery czynności: podmianę pliku w istniejących transakcjach, nowe kafle dla nowych transakcji, podbicie znacznika wersji i reset pamięci podręcznej.
Do czasu akceptacji ten etap pozostaje planem. Nie podajemy daty przeniesienia ani tego, czy magazynierzy pracują już na nowych transakcjach, bo opis wdrożenia tego nie rozstrzyga. Kto akceptuje test i w jakiej formie, to osobne pytanie projektowe, do którego wracamy w pytaniach do analizy.
Przykład jednego testu od zarejestrowania transakcji do akceptacji
Przykład (dane wymyślone). Konsultant dostaje od operatora gotową nową transakcję terminala. Rejestruje ją jako osobną transakcję z opisem „TEST: Nowa transakcja (przykład)” i dodaje jej kafel w roli testowej. Po rejestracji transakcji i kafla resetuje pamięć podręczną, a według dokumentacji rola magazynierów nowego kafla nie widzi.
Skryptem zakłada stan testowy dla Klienta Testowego: palety i dokumenty z przedrostkiem „TEST-” w numerze. Skrypt najpierw uruchamia w trybie próbnym, żeby zobaczyć kontrole i cofnięcie. Gdy wynik się zgadza, przestawia przełącznik na jeden i zapisuje.
Po zapisie loguje się ponownie na terminalu i prowadzi przebieg na dokumencie wydania ze zlecenia dla Klienta Testowego. Typy dokumentów, o których mowa, zestawia strona o dokumentach magazynowych. Po akceptacji dane testowe wycofuje się znacznikiem usunięcia, a przeniesienie na kafle magazynierów planuje osobnym skryptem.
Pytania do zadania na etapie analizy
Poniższe pytania nie są faktami o kliencie. To lista rzeczy, które zadajemy w analizie przedwdrożeniowej, zanim ktoś zacznie testować nowe transakcje w bazie, w której pracują magazynierzy. Cztery pytania stoją w liście poniżej.
- Rola testowa: czy w bazie, w której pracują magazynierzy, istnieje rola lub grupa kont, której kafle są niewidoczne dla pozostałych, i kto zarządza jej menu?
- Dane testowe: po czym odróżnicie dane testowe i kontrahenta testowego od produkcyjnych, żeby sprzątanie po teście nie dotknęło prawdziwych danych?
- Akceptacja: kto i w jakiej formie akceptuje test przed przeniesieniem nowej transakcji na kafle magazynierów?
- Skrypty zmian: czy wasze skrypty mają kontrolę nazwy bazy oraz tryb próbny z samoweryfikacją?
Odpowiedzi decydują o tym, czy opisany układ da się odtworzyć u was i ile przygotowania wymaga, zanim powstanie pierwsza transakcja testowa.
Czego ten opis nie rozstrzyga
Test w tej samej bazie wymaga osobnej roli, osobnych kafli, danych testowych i skryptów z kontrolami. Opis pokazuje, co oddzielono. Zmiany formularzy i menu wydruku wprowadzały skrypty, a dane testowe zakładały również skrypty.
Rola ogranicza widoczność kafli w menu i nie jest zabezpieczeniem technicznym. Według dokumentacji wdrożeniowej transakcje testowe przypisano do osobnej roli, i na tym ustalenie się kończy.
Nie opisujemy skali testów ani wyników akceptacji. Ogólniejszy opis testowania systemu zawiera strona o testowaniu systemu w programie magazynowym.
Pytania i odpowiedzi o teście transakcji terminala na produkcji
Dlaczego nowa transakcja terminala nie zastępuje od razu transakcji używanej przez magazynierów?
W opisywanym wdrożeniu każda nowa transakcja ma w rejestrze własny wpis z osobnym kodem i opisem z dopiskiem TEST, a wpisy używane przez magazynierów pozostają bez zmian. Dla istniejących transakcji obok dotychczasowego pliku leży plik testowy, a trzy transakcje są nowe. Przeniesienie na kafle magazynierów przewidziano po akceptacji.
Po co znacznik wersji w adresie pliku transakcji?
Zmiana znacznika sprawia, że przeglądarka terminala pobiera nowy plik. Zapis ze znakiem „@” przed znacznikiem platforma zamienia na parametr wersji w adresie, a gdy znacznika nie ma, dokleja numer wersji aplikacji.
Jak odróżnić dane testowe od produkcyjnych w tej samej bazie?
Testy wykonywano na kontrahencie testowym i z loginem testowym. Palety, dokumenty, zlecenia i partie testowe mają wyróżniający przedrostek w numerze. Dane testowe wycofuje się miękko, znacznikiem usunięcia, a skrypt po wycofaniu liczy, czy nie zostały aktywne wiersze testowe.
Co robi skrypt w trybie próbnym?
W skryptach z tym przełącznikiem zero oznacza wykonanie zmian i kontroli, a potem cofnięcie transakcji. Skrypt wypisuje kontrole przed cofnięciem i domyślnie jest w trybie próbnym. Przełącznik ustawiony na jeden zapisuje zmiany.
Co trzeba zrobić po zmianie konfiguracji w bazie, żeby terminal ją zobaczył?
Według dokumentacji skryptów wdrożeniowych wykonuje się reset pamięci podręcznej aplikacji, a użytkownik terminala loguje się ponownie. Znacznik wersji dotyczy pliku transakcji, a nie konfiguracji zapisanej w bazie.
Słownik pojęć o teście nowych transakcji terminala
Terminy używane przez dział IT i kierownika projektu, gdy nowe transakcje terminala testuje się w bazie produkcyjnej.
- Rola testowa
- Rola terminala, do której według dokumentacji przypisano transakcje testowe. Ogranicza widoczność kafli w menu i nie jest zabezpieczeniem technicznym.
- Kafel
- Pozycja menu terminala, która uruchamia transakcję. W opisywanym wdrożeniu każda nowa transakcja ma własny wpis testowy z dopiskiem TEST w opisie.
- Znacznik wersji
- Część adresu pliku transakcji. Jego zmiana sprawia, że przeglądarka terminala pobiera nowy plik. Znaczniki transakcji testowych mają postać daty z dwucyfrowym numerem kolejnym.
- Kontrahent testowy
- Kontrahent, na którym wykonuje się testy z loginem testowym. Palety, dokumenty, zlecenia i partie testowe mają wyróżniający przedrostek w numerze.
- Tryb próbny
- Przełącznik na początku skryptu: zero wykonuje zmiany i kontrole, a potem cofa transakcję, jeden zapisuje zmiany. Skrypt jest domyślnie w trybie próbnym.
- Samoweryfikacja skryptu
- Zestaw kontroli skryptu zmiany formularzy: czy zapytania formularzy opisują się bez błędu, czy nowe pola są w wyniku, czy nie ma zdublowanych kolumn i czy rewizje zmian są aktywne.
Opisz nam, jak testujecie zmiany w bazie produkcyjnej
Podaj, jak wygląda wasz układ ról i kafli na terminalu, a wskażemy, co trzeba rozdzielić przed pierwszym testem.
