Metode untuk menguji aplikasi yang sangat besar

10

Saya punya aplikasi PHP yang sangat besar. Biasanya ada 2-3 pengembang yang mengerjakannya secara penuh dan kami sampai pada titik di mana kami membuat perubahan dan membuat bug (fitur batuk!). Perangkat lunak ini tidak kompleks per katakan, hanya ada banyak hal yang terjadi (35 ~ controller, tentang model yang sama, dll).

Meskipun berhati-hati, mudah untuk mengubah tampilan ini (mengubah id pada elemen) untuk menghancurkan kueri ajax yang terjadi di bawah kondisi khusus (logout sambil berdiri dengan satu kaki).

Tes unit adalah hal pertama yang muncul dalam pikiran, tetapi kami mencoba ini pada aplikasi lain, dan sangat mudah untuk melupakannya / atau menghabiskan lebih banyak waktu menulis tes kemudian melakukan tes. Kami memiliki lingkungan pementasan tempat kode diperiksa sebelum mendorong siaran langsung.

Mungkin kita butuh paruh waktu. Tanya Jawab?

Ada yang punya saran / pemikiran.

Wizzard
sumber
"... lalu melakukan tes" apakah itu berarti lebih dari sekadar ?
ajax333221

Jawaban:

25

Ya, Anda memang membutuhkan staf Tanya Jawab. Beberapa dari banyak alasan termasuk

  • Penguji khusus memerlukan biaya, tetapi seringkali lebih sedikit uang daripada pengembang, sehingga manfaat tidak menghabiskan waktu Anda lebih besar daripada biaya tambahan.
  • Penguji yang berdedikasi tahu cara menguji berbagai hal, terutama hal-hal yang tidak jelas cara mengotomatisasi. Mengemudi tes otomatis untuk berinteraksi dengan sistem melalui peramban adalah disiplin yang agak berbulu tetapi sudah mapan. Jika Anda mendapatkan seseorang yang sudah tahu cara melakukannya, Anda tidak perlu menghabiskan lebih banyak waktu untuk mempelajari alat dan pengaturan yang baik.
  • Penguji profesional tahu cara menemukan cacat. Mereka lebih cenderung berpikir seperti yang akan dipikirkan oleh pengguna aplikasi, dan karenanya, menjalankan status tersebut dalam sistem yang benar-benar akan muncul dalam produksi, yang berarti bahwa bug yang ternyata sangat terlihat akan cenderung ditemukan lebih awal. , menghemat rasa malu dan biaya untuk tambalan yang sangat mendesak.
  • Generalisasi itu, tester tidak berpikir seperti pengembang . Sulit untuk menyampaikan seberapa besar perbedaan ini jika Anda belum mengalaminya. Sadar atau tidak, pengembang tidak ingin menemukan cacat. Mereka tahu bagaimana sistem bekerja dan cenderung menghindari input atau data yang tidak masuk akal (kepada mereka) yang menyebabkan masalah dalam kehidupan nyata. Jika sesuatu bekerja dengan cara yang tidak terduga, mereka tahu cara mengatasinya dan cenderung tidak melihat ini sebagai cacat sama sekali. Mereka tidak pernahmengalami kesulitan memahami apa arti respons sistem, karena mereka menulisnya, meskipun ini adalah penyebab utama masalah di hampir semua sistem nyata. Singkatnya: programmer cenderung buruk karena memiliki masalah khas yang dimiliki pengguna, karena mereka adalah spesialis yang sangat terlatih. Seorang tester memiliki waktu yang jauh lebih mudah untuk melakukan tes yang paling relevan.

Yang mengatakan, tidak ada yang mengalahkan kerja sama yang produktif antara pengembang dan penguji untuk mendorong kualitas sistem melalui atap. Pengembang sering memperhatikan gejala bahwa ada sesuatu yang salah sebelum penguji melakukannya. Seorang pengembang sering dapat memberi tahu penguji bagaimana mereproduksi masalah dengan lebih efisien dan bagaimana menulis laporan masalah yang tepat, yaitu memasukkan rincian yang benar-benar diperlukan untuk mencari tahu masalahnya. Tetapi semua itu membutuhkan setidaknya satu tester yang dapat Anda gunakan bersama.

Kilian Foth
sumber
3
+1. Kami terlalu terlatih untuk mendeteksi masalah yang dialami pengguna biasa
superM
3

Anda kemungkinan besar membutuhkan lebih banyak atau lebih baik uji regresi (bukan tes unit khusus ). Tes seperti apa yang harus Anda analisis sendiri, tetapi harus mendeteksi bug yang Anda bicarakan. Saya sarankan Anda mulai membuat rencana pengujian dan memprioritaskan tes tersebut - dan ketika Anda melakukan ini, awalnya jangan terlalu memikirkan otomatisasi pengujian.

Setelah itu, tanyakan pada diri Anda apakah Anda dapat mengotomatisasi beberapa atau sebagian besar tes dengan upaya yang wajar. Jika jawabannya ya, maka Anda harus memprogramnya. Jika jawabannya "tidak", dan Anda pikir "paruh waktu Q / A seseorang" lebih murah, maka itu harus obviuos apa yang Anda butuhkan. Dalam kebanyakan kasus, itu adalah ide yang baik untuk memiliki keduanya - orang T / A untuk pengujian manual dan menciptakan tes baru, dan banyak tes regresi otomatis juga.

Doc Brown
sumber
+1 untuk menyebutkan tes regresi dan menunjukkan bahwa tes unit bukan satu-satunya solusi yang efektif.
Giorgio
Hai, dapatkah Anda menjelaskan lebih lanjut tentang tes regresi. Saya percaya ini untuk mencegah bug lama dari terjadi lagi - tetapi dengan metode apakah Anda mengusulkan untuk melihat ini dilakukan? Tes unit? 'Daftar periksa' untuk diperiksa? Terima kasih :)
Wizzard
@ Wizzard: istilah uji regresi hanyalah istilah umum untuk semua jenis tes untuk fungsionalitas kerja yang sudah ada (untuk mencegah Anda memecahkannya saat mengubah aplikasi). Ini mencakup tes dari daftar periksa, tes otomatis melalui frontend Anda (di sini mungkin browser Anda) dan tes unit juga. Saran saya adalah Anda pertama-tama harus berpikir tentang apa yang harus diuji, secara independen bagaimana Anda akan mengujinya (jika Anda mengatakan "kami mencoba unit test", misalnya, Anda sudah berada di "bagaimana", bukan pada "apa") .
Doc Brown
2

Sewa QA profesional

Ini harus dilakukan jika Anda sedang mengembangkan proyek komersial. Memiliki produk yang siap tanpa strategi pengujian yang kuat akan dikenakan biaya lebih banyak dengan perbaikan bug. Selain itu, mendapatkan pelanggan baru atau mempertahankan mereka juga akan bergantung pada seberapa baik aplikasi Anda diuji.

Secara umum, pengujian unit harus diterapkan ke basis kode Anda, namun pengujian integrasi dan pengujian manual tidak boleh dibuang.

Yusubov
sumber
1

Pengujian unit adalah ide yang sangat bagus, terutama jika proyek Anda berkembang. Jika menulis unit test menjadi kebiasaan, itu akan memudahkan pekerjaan Anda. Ada video di youtube tentang cara menulis kode bersih, yang lebih mudah dirawat dan diuji.

QA engineer juga harus. Penguji QA yang baik tidak hanya akan menemukan bug dalam fungsionalitas, tetapi juga akan menguji apakah aplikasi tersebut ramah pengguna (yang hampir tidak mungkin diuji sendiri). Ini adalah artikel yang bagus menjelaskan bagaimana tim QA akan menghemat waktu dan uang Anda dan membantu memberikan perangkat lunak yang lebih baik.

superM
sumber
1

15 pengendali dan model tidak terlalu besar. Butuh beberapa waktu untuk membuat tes menulis kebiasaan, saling menendang ke arah itu (dengan cara yang ramah pertama) banyak membantu.

Ada alat yang dapat mengontrol cakupan tes hingga batas tertentu. Alat Cakupan Kode untuk PHP

thorsten müller
sumber
1
Maaf, 35 pengendali dan jumlah model yang sama. Mmmm tampaknya beberapa bentuk unit testing akan sangat membantu.
Wizzard