Chciałbym spróbować wdrożyć TDD w naszych aplikacjach internetowych, aby zmniejszyć regresje i poprawić jakość wydania, ale nie jestem przekonany, jak dobrze zautomatyzowane testowanie może działać z czymś tak puszystym jak aplikacje internetowe.
Czytałem i testowałem TDD i testy jednostkowe, ale przykłady to „solidne” i raczej proste funkcje, takie jak przeliczniki walut i tak dalej.
Czy są jakieś zasoby, które mogą pomóc w testowaniu jednostkowym systemów zarządzania treścią i systemów publikacji? Co powiesz na testowanie jednostkowe koszyka / sklepu (produkty fizyczne i online)? AJAX?
Googling dla „Web Test Driven Development” po prostu dostarcza mi starych artykułów sprzed kilku lat, obejmujących te same przykłady funkcji podobnych do kalkulatora lub dyskusje na temat tego, dlaczego TDD jest lepszy niż cokolwiek innego (bez żadnych przykładów).
źródło
Odpowiedzi:
Duże zastrzeżenie: Nie zbudowałem żadnych aplikacji internetowych ani nie przetestowałem żadnych aplikacji internetowych. Oto tylko fragmenty informacji, które pochłonąłem podczas moich przypadkowych spacerów w sferze informacyjnej.
Skonstruuj swoją aplikację internetową w taki sposób, aby móc samodzielnie testować reguły biznesowe. Jeśli testujesz reguły biznesowe za pomocą interfejsu użytkownika, być może czas pomyśleć o przeprojektowaniu.
Jeśli chodzi o testowanie interfejsu użytkownika, zastąp swoje reguły biznesowe symulowanymi implementacjami, które reagują w przewidywalny sposób.
Powyższe dwie zasady pochodzą z przemówienia Boba Martina podczas RailsConf 2010 . Dyskusja nie dotyczy TDD, a sekcja, w której wspomina o testach, jest krótka i gdzieś pośrodku.
Istnieją narzędzia takie jak JsUnit , JSSpec , YUI Test do testowania JavaScript oraz Selenium i Watir do testowania interfejsu użytkownika.
Pragmatyczne Regał posiada kilka książek obejmujących testowanie aplikacji internetowych. Lista książek oznaczonych testowaniem znajduje się na stronie http://www.pragprog.com/categories/design . Testy aplikacji webowych Pragmatic Bookshelf koncentrują się głównie wokół Ruby i Rails, ale powinny mieć ogólne zastosowanie.
źródło
Test-Driven JavaScript Development to naprawdę fajna książka autorstwa Christiana Johansena, twórcy Sinon.js i Buster.js , która obejmuje takie tematy, jak (pobrane ze strony internetowej):
Obecnie używamy Sinon.js z Mocha, ale jesteśmy gotowi na przejście do Buster.js, ponieważ jego funkcje są naprawdę fajne!
źródło
Przy projekcie, nad którym ostatnio pracowałem, główny programista zdecydował się na korzystanie z Unity, dzięki czemu mocking i TDD zostały uproszczone w dużej aplikacji internetowej - sądzę, że często korzystaniu z Unity towarzyszy TDD.
Badanie jednostek testujących CMS może doprowadzić do ślepej uliczki, ponieważ po prostu nie ma racji, by kpić. Nie widzę, co można przetestować bez wyśmiewania ruchu http do stron - i w tym momencie test ma niewielką wartość.
Uważam, że użyteczną praktyczną zasadą dla aplikacji internetowych jest to, że jeśli można użyć makiety w celu zmniejszenia złożoności, prawdopodobnie można to przetestować jednostkowo.
Tak więc w aplikacji internetowej możesz wyśmiewać bazę danych, aby testować jednostkowo różne części warstwy lub modelu dostępu do danych; możesz kpić z danych wejściowych użytkownika, aby przetestować widok lub interfejs użytkownika i tak dalej.
źródło
Napisałem książkę o TDD do tworzenia stron internetowych w Python + Django. obejmuje TDD, zarówno z testami kompleksowymi / funkcjonalnymi (selen), jak i testami „jednostkowymi” niższego poziomu. Omówię także nowoczesne praktyki deweloperów, takie jak integracja git z przepływem pracy, wdrażanie na serwerze oraz automatyzowanie i testowanie tego, ciągła integracja, próby i izolacja testów oraz wiele innych:
http://www.obeythetestinggoat.com/
(lub http://shop.oreilly.com/product/0636920051091.do )
źródło