Rozważam zastosowanie równoległych testów jednostkowych dla naszego projektu (ów) i zastanawiałem się nad najlepszymi praktykami w zakresie pisania takich równoległych testów jednostkowych.Najlepsze praktyki dotyczące pisania równoległych testów jednostkowych
Odpowiedz
Jeśli przez równoległe testy jednostkowe rozumie się testy, które mogą być wykonywane jednocześnie, najważniejszą radą, jaką mogę ci dać, jest uniknięcie tzw. Wspólnych urządzeń.
Książka xUnit Test Patterns opisać oprawy określony, które w zasadzie może być opisana jako cały kontekst, w którym każdy przypadek testowy wykonuje, w tym trwałych i przemijających danych.
Współużytkowane urządzenie wskazuje, że przypadki testowe mają jakiś kontekst podczas pracy. Jeśli ten kontekst jest zmienny, mogą wystąpić warunki rasowe.
Utrzymanie współużytkowanego urządzenia niezmiennym (tak zwane niezmienne wspólne urządzenie) umożliwi równoległe wykonywanie testów, ale jeszcze lepsze, tak zwane świeże urządzenia (gdzie każdy przypadek testowy ma własne urządzenie) są bezpieczne dla wątków z definicji, ponieważ tylko sam przypadek testowy ma dostęp do Urządzenia.
Przykłady współdzielonych urządzeń obejmują dowolny rodzaj testu korzystającego ze współużytkowanej bazy danych, ale obejmują również testy, w których masz statyczny stan pamięci w teście testowym systemu (SUT) lub samych testach, więc musisz unikać że.
Należy również pamiętać, że jeśli Twoja SUT uzyskuje dostęp do wspólnych (statycznych) danych, sam dostęp musi być bezpieczny dla wątków.
Niektóre interessting Odnośniki dla Ciebie:
Running Unit Tests in Parallel
Istnieje kilka odpowiedzi ciekawa w tym StackOverflow pytania. Mam nadzieję, że to pomoże.
- 1. Najlepsze praktyki dotyczące debugowania
- 2. Najlepsze praktyki/konwencje dotyczące pisania testów jednostek Erlanga przy użyciu eunit
- 3. Czy ogórek eliminuje potrzebę pisania testów jednostkowych?
- 4. Najlepsze praktyki dotyczące obsługi wyjątków w SailsJS
- 5. Najlepsze praktyki dotyczące testowania integracji funkcji Eclipse
- 6. Najlepsze praktyki dotyczące przechowywania JSON w DOM
- 7. Najlepsze praktyki dotyczące generowania tokenów OAuth?
- 8. Najlepsze praktyki dotyczące logowania do projektu django
- 9. Najlepsze praktyki dotyczące używania @ w C#
- 10. Najlepsze praktyki dotyczące schematu SQL Server
- 11. Najlepsze praktyki dotyczące lokalizacji aplikacji WWW ASP.NET
- 12. Najlepsze praktyki dotyczące wysyłania wiadomości e-mail?
- 13. Najlepsze praktyki dotyczące przechowywania kluczy tajnych
- 14. CSS3 - Jakie są najlepsze praktyki dotyczące wydajności?
- 15. C#: Najlepsze praktyki Debug.Print
- 16. Najlepsze praktyki testowania integracji
- 17. Najlepsze praktyki w testach jednostkowych, próbnych obiektach i ioc
- 18. Najlepsza praktyka organizowania testów selenu i testów jednostkowych
- 19. Shared NSDateFormatter - najlepsze praktyki?
- 20. Jakie są najlepsze praktyki dotyczące używania wymagania w Ruby?
- 21. Najlepsze praktyki dotyczące tworzenia klasy C++ "Showable" (string, ostream)
- 22. Najlepsze praktyki dotyczące mieszania Scala w trybie równoczesnym.Mapa
- 23. Najlepsze praktyki dotyczące przechowywania przesłanych plików w systemie plików
- 24. Najlepsze praktyki dotyczące zwracania i wyświetlania danych z wywołań AJAX
- 25. Najlepsze praktyki dotyczące przechowywania witryny sieci Web ASP.NET w Subversion?
- 26. Jakie są najlepsze praktyki dotyczące interakcji klient-serwer?
- 27. Najlepsze praktyki dotyczące obsługi błędów w serwisie WWW
- 28. Najlepsze praktyki dotyczące pakowania aplikacji internetowej na Androida
- 29. Najlepsze praktyki dotyczące rejestrowania się na najwyższych poziomach rejestrowania
- 30. Jakie są najlepsze praktyki i wskazówki dotyczące organizacji rozwiązania Xcode?
Czy mówisz o testowaniu wielowątkowego komponentu przy użyciu połączeń równoległych? – falstro
Czekam na uruchomienie wielu testów jednostkowych (jednocześnie) za pomocą MBUnit, który ma równoległy atrybut/dekorację dla testów jednostkowych - to będzie przebiegać tyle testów równolegle, ile jest rdzeni na maszynie. (widocznie!) –
Ach, świetnie! :) – falstro