2009-04-13 16 views
9

Pracuję nad aplikacją serwera klienckiego przy użyciu podejścia Tracer Bullet, zalecanego w The Pragmatic Programmer i potrzebuję porady. Pracuję od każdego przypadku użycia od inicjacji na kliencie do serwera i ponownie do klienta, aby wyświetlić wynik.Tracer Bullet Development

widzę dwa sposoby postępować:

  1. pokryć podstawowe przypadki użycia, po prostu pisanie kodu na tyle, aby zaspokoić sprawę użytkowania pracuję nad, a następnie wrócić i ucieleśnić wszystko obsługa błędów później.
  2. Rozwiń wszystkie przypadki użycia aż do , wychwytuj wszystkie wyjątki i poleruj interfejs, zanim przejdziesz do następnego przypadku użycia.

Pochylam się w stronę pierwszej opcji, ale obawiam się, że zapomnę poradzić sobie z jakimś wyjątkiem i mam problem z ugryzieniem mnie, gdy aplikacja jest w produkcji. Lub pozostawienia w niejasnych komunikatach o błędach "stub". Jednak jeśli wezmę drugą opcję, myślę, że później wprowadzę więcej zmian.

Pytania:
Podczas korzystania z opracowywania punktora śledzącego, które z tych dwóch podejść bierzesz i dlaczego?
Czy istnieje inne podejście, którego mi brakuje?

Odpowiedz

10

Jak rozumiem, metoda Bullet Tracer ma dwa główne cele

  1. adresowych podstawowe problemy jak najszybciej
  2. udzielenia użytecznej wynik klientowi jak najszybciej

Twój motywacja nie "polerowania" każdego przypadku użycia prawdopodobnie przyspieszy 2. dalej. Pytanie brzmi, czy w ten sposób zagrażasz 1. i czy klient jest rzeczywiście zainteresowany "nieoszlifowanymi" rezultatami. Nawet jeśli nie, w bengzie jest pewna przewaga, która pozwala szybko uzyskać informację zwrotną od klienta.

Powiedziałbym, Twój pomysł jest OK tak długo, jak

  • upewnić się, że nie ma żadnych podstawowych problemów ukrywanie w „nieszlifowane” części - może to na pewno stanie z obsługi błędów
  • Śledzisz wszystko, co musisz "wypolerować" później w narzędziu do śledzenia problemów lub pozostawiając TODO w kodzie źródłowym - i ostrożnie przeglądasz te, gdy tylko przypadki użycia działają.
  • Przypadki użycia nie są tak "nieoszlifowane", że klient może "t/nie dostarczy Ci przydatnych informacji zwrotnych na temat
4

Jeśli podejmiesz próbę nr 1, 90% funkcjonalności będzie działać dość szybko. Jednak Twój klient będzie również myślał, że jesteś w 90% zrobiony i zastanawia się, dlaczego wykonanie zadania zajmuje ci aż 9 razy więcej czasu.

Jeśli wybierzesz podejście nr 1, nazwałbym to tylko prototypem i potraktuj to w ten sposób. Przedstawienie tego jako czegoś więcej nie doprowadzi tylko do problemów. Scenariusze happy day to tylko 10% pracy. Pozostałe 90% sprawdza, czy inne scenariusze działają, a scenariusz "happy day" działa niezawodnie. Bardzo trudno jest skłonić twórców, aby w to wierzyli.Zwykle robię coś pomiędzy # 1 & # 2. Próbuję wykonać dość dobrą robotę, identyfikując przypadki użycia i wszystkie scenariusze. Następnie próbuję zidentyfikować najbardziej architektonicznie wpływające scenariusze i pracować nad nimi.

0

Proponuję dla Tracer kul można użyć kombinacji pozytywnych + negatywnych przypadków testowych

  1. Pozytywne przypadki testowe (zostaną one wymienione w swoich historiach użytkowników/Dokumenty/właściwością specyfikacji funkcjonalnej)
  2. negatywne przypadki testowe (wspólne negatywne scenariusze, które mogą być spodziewane w scenariuszu BAU) (Rzadkie scenariusze biznesowe mogą być pominięte po starannym rozważeniu.)

Te przypadki testowe zostały uruchomione przy użyciu przepływu specflow w celu zautomatyzowania testowania.

Włączenie typowych scenariuszy negatywnych do przypadków testowych zapewnia wystarczającą pewność, że kolejne zmiany mogą zostać wykonane przy użyciu kodu źródłowego.

Dzielenie się doświadczeniem tutaj http://softwarecookie.wordpress.com/2013/12/26/tracer-bullet/