W pracy mamy dość skomplikowany system. Nazwijmy ten system System_A. Nasz zespół ds. Kontroli jakości stworzył inny system o nazwie System_B, aby przetestować System_A.
Sposób użycia System_B jest następujący. Generujemy dane wejściowe (przy użyciu samego System_B), IN, przetwarzamy je z powrotem przez System_B i generujemy dane wyjściowe, O_B. Proces przebiega więc następująco:
System_B(IN) -> O_B
.
Następnie robimy to samo dla System_A, aby wygenerować własne dane wyjściowe, O_A:
System_A(IN) -> O_A
.
W dowolnym momencie zakłada się, że O_B to oczekiwany wynik, a O_A to wynik obserwowany / rzeczywisty. Sugeruje się, że O_B jest źródłem „złota” (prawda). Jednak natrafiliśmy na kombinacje problemów.
- O_A jest źle, O_B ma rację
- O_A ma rację, O_B ma rację
- O_A jest źle, O_B jest źle
- O_A ma rację, O_B ma rację
Kto decyduje, co jest słuszne, jeśli zakłada się, że O_B ma zawsze rację (lub czego się oczekuje)? Okazuje się, że O_B jest czasem (lub często) błędny w kontroli i analizie przeprowadzanej przez ludzi. Sprawy przejdą kontrolę jakości przy użyciu tego procesu, a prawdziwi użytkownicy będą narzekać, a my wrócimy do stwierdzenia, że O_B był w błędzie.
Pytanie brzmi: czy złą praktyką jest tworzenie „systemu testowego” w celu przetestowania prawdziwego systemu?
- A co ze śliskim stokiem? Czy nie możemy zatem argumentować, że potrzebujemy jeszcze jednego systemu do przetestowania „systemu testowego”?
- Koszt jest zdecydowanie wygórowany, ponieważ programiści muszą teraz nauczyć się co najmniej 2 podstaw kodu, z być może złożonością System_B większą niż System_A. Jak ocenilibyśmy, jak dobrze lub źle jest mieć System_B w organizacji?
- Jednym z oryginalnych „przekonujących” powodów do stworzenia System_B była „automatyzacja” testowania. Teraz jesteśmy bardzo dumni z tego, że jesteśmy w pełni zautomatyzowani (ponieważ System_B generuje dane wejściowe, aby rozpocząć proces wykorzystywania samego siebie do generowania danych wyjściowych). Ale myślę, że wyrządziliśmy więcej szkody i wprowadziliśmy większą złożoność w sposób niewymierny. Czy zadanie kontroli jakości jest w pełni zautomatyzowane? Czy to wystarczający powód, aby uzasadnić utworzenie systemu równoległego?
- Moją prawdziwą troską jest to, chociaż wszyscy wiemy, że System_B jest zły (dość często). Jeśli System_B jest tak dobry w przetwarzaniu danych wejściowych, a jego wyjściem jest źródło złota, dlaczego nie zastąpić System_A przez System_B? Na to nikt w pracy nie jest w stanie zapewnić satysfakcjonującej odpowiedzi.
Wszelkie wskazówki na ten temat są mile widziane.