2009-10-27 21 views
9

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

+0

Czy mówisz o testowaniu wielowątkowego komponentu przy użyciu połączeń równoległych? – falstro

+0

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!) –

+0

Ach, świetnie! :) – falstro

Odpowiedz

5

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.

Powiązane problemy