Testy uczące – ciekawa koncepcja, na którą natknąłem się w książce Roberta C. Martina Clean Code: A Handbook of Agile Software Craftsmanship, która polega na pisaniu testów jednostkowych do komponentów firm trzecich. Początkowo może to się wydać dziwne, aby pisać testy do elementów, które kupiliśmy od innej firmy. W końcu kupujemy element, który powinien być przetestowany i działać bezbłędnie, a my dodatkowo powinniśmy zaoszczędzić czas i pieniądze na takim zakupie, ze względu na to, że nie będziemy musieli napisać tego komponentu.

Z drugiej strony można spojrzeć na ten problem następująco. Z reguły jeśli kupujemy jakiś komponent to na początku musimy poświęcić trochę czasu na jego naukę oraz przetestowanie jak on działa. W takich przypadkach najczęściej powstają małe aplikacje. Potem z reguły trafiają one do kosza. I tym samym praca poświęcona na zdobycie tej wiedzy jest marnowana, choć na pewno nie całkowicie bo pozostaje przecież wiedza.

Ale można podejść do tego problemu w trochę inny sposób. Zamiast tworzyć aplikację można napisać testy jednostkowe sprawdzające jak działa dany komponent – symulujące wykorzystanie tego komponentu w naszej aplikacji. Nie zawsze jest to możliwe, w szczególności gdy komponent związany jest  z UI. Zaletą takiego podejścia jest to, że w momencie, gdy pojawi się nowa wersja komponentu będziemy mogli sprawdzić, czy dostarcza ona funkcjonalności, które dostarczała poprzednia wersja komponentu. Uruchomienie napisanych testów pozwoli momentalnie sprawdzić, czy nowy komponent zgodny jest z naszą aplikacją. Dodatkowo kod w postaci testów jednostkowych jest doskonałą dokumentacją sposobu użycia komponentu w naszej aplikacji.