Sumberdaya untuk Pengembangan Didorong Uji dalam Aplikasi Web? [Tutup]

15

Saya ingin mencoba dan mengimplementasikan beberapa TDD dalam aplikasi web kami untuk mengurangi regresi dan meningkatkan kualitas rilis, tetapi saya tidak yakin seberapa baik pengujian otomatis dapat melakukan sesuatu dengan fluffy seperti aplikasi web.

Saya sudah membaca dan mencoba TDD dan pengujian unit, tetapi contohnya adalah fungsi 'solid' dan agak sederhana seperti konverter mata uang, dan sebagainya.

Apakah ada sumber daya yang dapat membantu unit manajemen pengujian konten dan sistem publikasi? Bagaimana dengan unit yang menguji keranjang belanja / toko (produk fisik dan online)? AJAX?

Googling untuk "Pengembangan Web Test Driven" hanya membuat saya artikel lama dari beberapa tahun yang lalu baik yang mencakup contoh yang sama dari fungsi seperti kalkulator atau diskusi tentang mengapa TDD lebih baik daripada apa pun (tanpa contoh).

HorusKol
sumber
1
alat yang tersedia akan tergantung pada bahasa. bahasa apa yang Anda gunakan?
Alb
Saya menyadari itu - tetapi saya lebih mencari artikel diskusi dan esai daripada alat khusus. Saya tahu alat apa yang tersedia, tetapi ingin mempelajari cara terbaik untuk menggunakannya untuk aplikasi berbasis front-end.
HorusKol

Jawaban:

2

Penafian besar: Saya belum membuat aplikasi web apa pun dan saya belum menguji aplikasi web apa pun. Berikut ini hanya beberapa informasi yang telah saya serap secara acak dalam lingkup informasi.

Bangun aplikasi web Anda sedemikian rupa sehingga dapat menguji aturan bisnis secara terpisah. Jika Anda menemukan diri Anda menguji aturan bisnis melalui antarmuka pengguna maka mungkin sudah saatnya untuk memikirkan mendesain ulang.

Ketika datang untuk menguji UI, ganti aturan bisnis Anda dengan implementasi tiruan yang merespons dengan cara yang dapat diprediksi.

Dua aturan di atas diambil dari ceramah Bob Martin di RailsConf 2010 . Pembicaraan itu bukan tentang TDD dan bagian di mana ia menyebutkan pengujiannya pendek dan di suatu tempat di tengah.

Ada alat seperti JsUnit , JSSpec , YUI Test untuk pengujian JavaScript dan Selenium dan Watir untuk pengujian UI.

Rak Buku Pragmatis memiliki beberapa buku yang mencakup pengujian aplikasi web. Daftar buku yang ditandai dengan Pengujian ada di http://www.pragprog.com/categories/design . Buku-buku pengujian aplikasi web Rak Buku Pragmatis terutama difokuskan di sekitar Ruby dan Rails tetapi harus berlaku secara umum.

Anthony Cramp
sumber
Satu masalah utama dengan desain web adalah pengujian CSS - aturan CSS baru mungkin memiliki konsekuensi yang tidak diinginkan, tetapi hanya pada halaman dengan konten tertentu ... Bisakah Anda mengujinya?
HorusKol
Pertanyaan bagus. Saya akan menyarankan ini adalah bagian dari pengujian UI Anda. Anda mengembangkan tes Anda untuk memasukkan berbagai konten halaman yang Anda harapkan (dan beberapa yang tidak Anda harapkan) dan menulis penerimaan Anda dengan tepat. Kemudian, ketika Anda memperkenalkan aturan CSS baru, pengujian UI Anda harus menyoroti setiap regresi. Mungkin proses ini terlalu memakan waktu dan Anda mungkin lebih baik dilayani hanya dengan meminta seseorang melakukan pengujian QA di situs dan melaporkan masalah.
Anthony Cramp
3

Test-Driven JavaScript Development adalah buku yang sangat bagus dari Christian Johansen, pengembang di belakang Sinon.js dan Buster.js , yang membahas topik-topik seperti (diambil dari situs web):

  • Memahami pengujian unit dan TDD
  • Memilih kerangka pengujian unit yang tepat
  • Membangun API yang lebih bersih, memodulasi dan JavaScript yang kuat
  • Terus meningkatkan kode melalui refactoring
  • Lima sesi TDD praktis: Ajax, manipulasi DOM, Node.js, dan lainnya
  • Tur berbasis uji coba ke JavaScript untuk pengembang yang tidak terbiasa dengan bahasa

Saat ini kami menggunakan Sinon.js dengan Mocha, tetapi siap untuk beralih ke Buster.js, karena fitur-fiturnya sangat rapi!

nuc
sumber
1

Pada proyek yang saya kerjakan baru-baru ini pengembang utama telah memutuskan untuk menggunakan Unity sehingga ejekan dan TDD disederhanakan dalam aplikasi web besar - saya rasa penggunaan Unity akan sering disertai dengan TDD adalah aplikasi web.

Unit investigasi yang menguji CMS kemungkinan akan menemui jalan buntu karena tidak ada hal yang masuk akal untuk diejek. Saya tidak melihat apa yang bisa diuji tanpa mengolok-olok lalu lintas http ke halaman - dan pada saat itu pengujian memiliki nilai yang kecil.

Saya rasa aturan praktis yang berguna dengan aplikasi web adalah jika dapat menggunakan tiruan untuk mengurangi kompleksitas maka mungkin dapat diuji unit.

Jadi dalam aplikasi web Anda dapat mengejek basis data Anda untuk menguji unit-unit berbeda dari lapisan atau model akses data Anda; Anda dapat mengejek input pengguna untuk menguji unit tampilan atau UI dan sebagainya.

amelvin
sumber
0

Saya telah menulis buku tentang TDD untuk pengembangan web dengan Python + Django. itu mencakup TDD, baik dengan tes end-to-end / fungsional (selenium) dan tes "unit" tingkat rendah. Saya juga membahas praktik dev modern seperti bagaimana mengintegrasikan git ke dalam alur kerja Anda, cara menyebar ke server dan mengotomatisasi dan mengujinya, integrasi terus-menerus, tiruan dan uji isolasi, dan banyak lagi:

http://www.obeythetestinggoat.com/

(atau http://shop.oreilly.com/product/0636920051091.do )

hwjp
sumber
Tautannya