2009-01-04 6 views
7

Zastanawiam się, czy ktoś tutaj ma doświadczenie w testowaniu aplikacji LOB (zazwyczaj CRUD).Testowanie aplikacji LOB w trybie Line-of-Business (LOB)?

Mam wbudowane narzędzia do testowania wbudowanych jednostek w Visual Studio, ale napotkałem na trudności w uruchamianiu testów, które trafiły do ​​bazy danych. Ponieważ dane zmieniają się i łączę z faktem, że nie mam wielkiego pojęcia, co robię, wydaje się bardzo trudne uzyskanie oczekiwanych rezultatów i twierdzenie przeciwko nim. Słyszałem nawet, że nie powinieneś uruchamiać testów jednostkowych przeciwko bazom danych ... ale w jaki sposób wszyscy inni wykonują testy jednostkowe na oprogramowaniu CRUD LOB?

Słyszę tyle o TDD i ciągłej integracji z testowaniem, ale wydaje się, że jeśli nie mogę nawet tworzyć testów jednostkowych na początek, nie mogę naprawdę skorzystać z tych metodologii. Dzięki temu produkt taki jak Notatnik byłby łatwy do stworzenia testów jednostkowych dla ... masz pewną liczbę funkcji i te funkcje powinny zawsze dawać taki sam rezultat. Ale w aplikacjach LOB masz takie zlecenia sprzedaży, które można tworzyć lub usuwać lub modyfikować w środowisku testowym.

Każdy wgląd byłby doceniony!

Odpowiedz

1

Zazwyczaj z CRUD będziesz musiał albo udawać, albo użyć kontenera IOC dla swojej warstwy dostępu do danych, więc nie zawsze trafiasz do bazy danych i "zmiennych danych".

W testach jednostkowych zawsze oczekuje się tych samych wartości, więc połączenie z bazą danych zwykle powoduje problemy.

Sprawdź RhinoMocks lub Inversion Of Control Containers.

+0

moq jest również fajne, http://code.google.com/p/moq/ – Chance

1

Tworzę podstawową bazę danych i używam dbUnit, aby wyeksportować ją do zbioru plików XML. Pierwsze przejście testu powoduje wymazanie i zapełnienie testowej bazy danych linią podstawową. Następnie powinieneś być w stanie potwierdzić testy jednostkowe w stosunku do oczekiwanych wartości.

1

Testowanie automatyczne to szeroka kategoria, która zawiera dwie mniejsze kategorie: Testowanie jednostkowe i Testowanie integracyjne.

Testowanie jednostek jest praktyką polegającą na identyfikowaniu najmniejszych jednostek w twoim programie oraz procedurach testowania, które testują je w oderwaniu od siebie. Gdy najmniejsze jednostki twojego programu są ściśle ze sobą połączone, może być trudno je przetestować w oderwaniu od siebie. W takim przypadku istnieją techniki i narzędzia, które mogą ci pomóc (kpiny i szydercze ramy). Aby skutecznie przeprowadzać testy jednostkowe, twoja baza kodów musi być napisana w określony sposób, w sposób, który wspiera testowanie jednostek - najmniejsze jednostki twojego programu nie mogą być ze sobą połączone. Większość programów nie jest tworzona z myślą o tej zasadzie, dlatego są trudne do testowania jednostkowego. Testuj jednostki tam, gdzie możesz i zachowaj tę zasadę dla każdego nowego kodu, który napiszesz, abyś zawsze mógł przetestować swój nowy kod.

Testowanie integracyjne to praktyka określania cech, które są dużymi jednostkami programu integrującymi wiele mniejszych jednostek, oraz procedur pisania, testujących je w izolacji od innych dużych jednostek twojego programu. Na przykład testowanie procedury, w której warstwa trwałości poprawnie zapisuje obiekty w trwałym magazynie i poprawnie pobiera obiekty z trwałej pamięci, jest testem integracyjnym, ponieważ testuje zarówno warstwę trwałości, jak i potok TCP/IP, konfigurację bazy danych, bazę danych schemat, dane już znajdujące się w bazie danych oraz interakcja między danymi już znajdującymi się w bazie danych i tym, co robi twój kod. Zdecydowanie wykonuj testy integracyjne, oprócz testów jednostkowych.

Utwórz również oddzielną bazę danych wyłącznie w celu zautomatyzowanych testów integracyjnych.Staraj się unikać uruchamiania automatycznych testów integracyjnych w produkcyjnej lub programistycznej bazie danych, ponieważ napotkasz problemy.

+0

bardzo ładne, dzięki! –

0

natknąłem się na ten sam problem, nie trzeba, że ​​wiele opcji ...

  • wycofywania po każdym teście (używając xtUnit dla NUnit lub atrybutu wycofania MbUnit). to działa dobrze dla typowych testów jednostkowych operacji CRUD.
  • użyć strategii przywracania kopii zapasowej przed wykonaniem testu. Spowoduje to długie wykonanie testu jednostkowego. Jest to jednak obsługiwane przez MbUnit (2.X atrybuty nie są obecne w pniu 3.x)
  • tworzenie/usuwanie db przy użyciu skryptów sql.

Największą zaletą dwóch ostatnich opcji jest to, że można z nich korzystać podczas wykonywania tzw. Testów integracyjnych (np. Podczas automatyzacji interfejsu użytkownika, w którym trzeba obsługiwać zmiany w bazie danych na innym poziomie (serwer fizyczny)).

Używam ostatniego w połączeniu z Watin dla aplikacji internetowych. Dla WPF i Win32 przyjrzyj się White, wygląda obiecująco.