Zasoby do testowania testowego w aplikacjach internetowych? [Zamknięte]

15

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).

HorusKol
źródło
1
dostępne narzędzia będą zależeć od języka. jakiego języka używasz?
Alb
Zdaję sobie z tego sprawę - ale szukałem raczej artykułów do dyskusji i esejów niż konkretnych narzędzi. Wiem, jakie narzędzia są dostępne, ale chciałbym dowiedzieć się, jak najlepiej korzystać z nich w aplikacjach napędzanych przez interfejs.
HorusKol

Odpowiedzi:

2

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.

Anthony Cramp
źródło
Jednym z głównych problemów z projektowaniem stron internetowych jest testowanie CSS - nowa reguła CSS może mieć niezamierzone konsekwencje, ale tylko na stronie o określonej treści ... Czy potrafisz to przetestować jednostkowo?
HorusKol
Dobre pytanie. Sugerowałbym, że jest to część testów interfejsu użytkownika. Opracowujesz testy, aby uwzględnić różne oczekiwane treści strony (i kilka, których się nie spodziewasz) i odpowiednio wpisujesz swoje akceptacje. Następnie, po wprowadzeniu nowych reguł CSS, testy interfejsu użytkownika powinny uwypuklić wszelkie regresje. Być może proces ten jest zbyt czasochłonny i może być lepiej obsługiwany, gdy ktoś przeprowadzi testy jakości w witrynie i zgłosi problemy.
Anthony Cramp
3

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):

  • Zrozumienie testów jednostkowych i TDD
  • Wybór odpowiedniej struktury testowania jednostek
  • Budowanie czystszych interfejsów API, modułowego i niezawodnego JavaScript
  • Ciągłe ulepszanie kodu poprzez refaktoryzację
  • Pięć praktycznych sesji TDD: Ajax, manipulacja DOM, Node.js i więcej
  • Testowana wycieczka po JavaScript dla programistów, którzy nie znają języka

Obecnie używamy Sinon.js z Mocha, ale jesteśmy gotowi na przejście do Buster.js, ponieważ jego funkcje są naprawdę fajne!

nuc
źródło
1

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.

amelvin
źródło
0

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 )

hwjp
źródło
Link jest zerwany
Keldon Alleyne