Niedawno zostałem zatrudniony do projektu obejmującego pracę z kilkoma systemami „korporacyjnymi” innych firm i wokół nich. Ze względu na to, co według mnie byłoby astronomicznym kosztem i wysiłkiem wymaganym do zbudowania wystarczająco wiernej repliki środowiska produkcyjnego, perspektywa posiadania prawdziwego środowiska programistycznego wydaje się znikoma.
To oczywiście nie jest idealne. Z drugiej strony, wyobrażam sobie, że muszą istnieć ludzie, którzy bezpiecznie testują i wdrażają oprogramowanie w takich niewiarygodnych środowiskach, i prawdopodobnie mogę pójść w ich ślady.
Jak robią to ci, którzy skutecznie radzą sobie z tego rodzaju sytuacjami?
testing
development-process
Jason Swett
źródło
źródło
Odpowiedzi:
Tak dzieje się cały czas w prawdziwym świecie. Znam faceta, który pisze aplikacje, które kontrolują gigantyczne szklarnie rolnicze - wentylacja, ogrzewanie, kontrola wilgoci. Nie ma „testowej szklarni”, ale ma program symulacyjny dostarczony przez firmę, który buduje rzeczywiste systemy sprzętowe. Jeśli kod działa poprawnie z symulatorem, zakłada się, że działa poprawnie z prawdziwym sprzętem. W rzadkich przypadkach symulator okazuje się błędny, ale jest to problem firmy szklarniowo-sprzętowej do rozwiązania, ponieważ nie symuluje poprawnie.
źródło
Są to sytuacje, w których najważniejsza jest dokumentacja API, dokumenty kontrolne interfejsu i emulatory. W firmie, w której wcześniej pracowałem, tak się często zdarzało, że zdarzało się to często w ramach projektu podczas niektórych faz integracji, w których jeden segment był gotowy, ale inne były opóźnione, pracują nad inną funkcją lub z innego powodu, którego nie udało się wdrożyć najnowsza wersja ich segmentu do naszego systemu testowego. Tak, tak naprawdę mieliśmy wierną replikę naszego środowiska produkcyjnego, na którym testowaliśmy; jednak w praktyce wszystkie segmenty nigdy nie były gotowe zgodnie z harmonogramem, ale interfejsy zostały uzgodnione i zablokowane przed rozpoczęciem rozwoju, a także stworzono emulatory, które w większości mogą naśladować zachowanie innych segmentów.
Jak wynika z innej odpowiedzi, emulator umożliwi testowanie przed wdrożeniem. Dobry emulator; zależy jednak od dobrze zdefiniowanych interfejsów i dokumentacji.
źródło
Cały czas jestem w takich sytuacjach.
Na pewno nie musisz wchodzić w interakcje z całą aplikacją, ale prawdopodobnie kilka interfejsów. Upewnij się, że masz potwierdzoną i szczegółową dokumentację interfejsów, a następnie skonfiguruj symulacje tych interfejsów tylko w celu sprawdzenia, czy dodany / zmieniony kod działa zgodnie z zamierzeniem.
Możesz także zrobić hybrydę. Spróbuj powielić części, które możesz dość łatwo zrobić, a następnie „połącz” się z prawdziwymi systemami (jeśli jest to możliwe w twojej sytuacji). Zrobiłem to z pewnym sukcesem - w niektórych przypadkach, gdy moja logika i oprogramowanie serwera były uruchamiane lokalnie, ale nadal miałem połączenia z prawdziwym systemem ERP w celu weryfikacji wywołań itp. Nie jest to idealne, ale rzadko tak jest.
Biorąc pod uwagę, że masz tylko system produkcyjny do pracy - pamiętaj, że nie możesz liczyć tylko czasu programistycznego zaoszczędzonego na konfigurowaniu repliki, ale musisz wziąć pod uwagę ryzyko biznesowe związane z użyciem w dużej mierze nieprzetestowanego kodu z aktywnymi danymi biznesowymi. Twój kod będzie mniej niezawodny niż kod przetestowany na replice. Czy systemy mogą być wyłączone przez jakiś czas? Czy można je przywrócić w przypadku uszkodzenia danych? Ile to kosztuje?
Najlepszą praktyką w przedsiębiorstwach jest umieszczanie repliki (lub więcej niż jednej) produkcji w momencie skonfigurowania środowiska produkcyjnego. W tym momencie dodatkowy koszt nie będzie tak duży.
źródło
Nasz system współpracuje z wieloma dużymi systemami zewnętrznymi. Łączymy następujące podejścia podczas ich testowania, jeśli nie mamy kompletnej konfiguracji od końca do końca:
źródło