W ciągu ostatnich kilku tygodni zastanawiałem się, jak wypełnić lukę w naszej metodologii testowania. Upraszczając, testy jednostkowe są zbyt małe, a tradycyjne testy integracyjne są zbyt duże.
Częstym scenariusz pojawia się gdzie Ai Bstosowania zarówno komponent C. Jednak Ai Bmają nieco inne wymagania dotyczące i zrobić nieco inne założenia dotyczące C. Jeśli jestem programistą tego, Ajak i gdzie mam przetestować moje założenia C?
Oczywiście testowanie jednostkowe Aprzy wyśmiewanych założeniach Cjest odpowiednie do testowania Aw izolacji, ale nie testuje samych założeń.
Inną możliwością jest dodanie testów jednostkowych C. Nie jest to jednak idealne, ponieważ w trakcie Aopracowywania zmiana testów Cprzy zmieniających się założeniach Abędzie nadmiernie niezręczna. Rzeczywiście Aprogramista może nawet nie mieć odpowiedniego dostępu do testów jednostkowych C(np. Biblioteki zewnętrznej).
Aby przedstawić to w bardziej konkretny przykład: Załóżmy, że jest to aplikacja węzłowa. Ai Bzależy od Codczytu pliku (między innymi) i przechowywania zawartości pliku w przekazanym obiekcie C. Początkowo wszystkie Cobsługiwane pliki są małe i można je odczytywać synchronicznie bez znaczącego blokowania. Jednak twórca Bzdaje sobie sprawę, że jego pliki stają się ogromne i musi przejść Cna odczyt asynchroniczny. Powoduje to sporadyczny błąd synchronizacji A, który nadal zakłada Csynchroniczne czytanie plików.
Jest to rodzaj błędu, który jest niezwykle trudny do wyśledzenia z pełnych testów integracyjnych i może w ogóle nie zostać złapany w testach integracyjnych. Nie jest również wychwytywany przez Atesty jednostkowe, ponieważ Azałożenia są kpione. Można go jednak łatwo złapać przez „mini” test integracyjny, który ćwiczy tylko Ai C.
Znalazłem tylko kilka odniesień do tego typu testów. Integracja w małej , Komponent testy integracyjne , Dział Integracji Badań. Odnosi się również w pewnym stopniu do kierunku testowania BDD, a nie do formalnego testowania jednostki TDD.
Jak wypełnić tę lukę testową? W szczególności - gdzie mam umieścić takie testy? Jak wyśmiewać dane wejściowe Ai Ctesty integracji „mini”? A ile wysiłku należy włożyć w rozdzielenie problemów związanych z testowaniem między tymi testami a testami jednostkowymi? Czy jest lepszy sposób na wypełnienie luki w testowaniu?