Apakah tes end-to-end dan integrasi layak untuk hal-hal penting non-misi?

9

Sudah diketahui umum bahwa uji end-to-end dan integrasi mahal. Tentu saja jika kita mengembangkan aplikasi di mana orang mungkin mati jika ada yang salah itu adalah investasi yang berharga. Namun dalam aplikasi di mana kesalahan bukanlah akhir dari dunia, bukankah akan lebih murah untuk melewatkan tes E2E dan tes integrasi sama sekali dan bukannya membuat rencana cadangan jika terjadi kesalahan? Suka adalah tes manual cerita pengguna + tes unit + menggunakan bahasa yang diketik secara statis?

Seperti misalnya jika toko web kehilangan pesanan mereka malah bisa mengirim item gratis + item lain sebagai permintaan maaf. Pengguna akhir mungkin berakhir lebih bahagia dengan cara itu dan perusahaan secara keseluruhan menghemat uang.

Saya kira pertanyaan saya adalah, secara umum berapa biaya tes integrasi dan uji E2E dan berapa banyak uang yang dihemat? Apakah ada cara untuk melakukan perhitungan risiko / biaya untuk ini?

Marc
sumber
4
Apakah ada cara untuk melakukan perhitungan risiko / biaya untuk ini? Selain benar-benar melakukan keduanya dan kemudian membandingkan, tidak.
Robbie Dee
4
Anda harus mempertimbangkan ROI dari segala sesuatu dalam proses pengembangan. Apakah tes unit layak? Apakah pengujian manual layak? Apakah kualitas kode sepadan? Apakah menciptakan perangkat lunak itu layak? Itu adalah pertanyaan bisnis yang penting. Yang tentu saja tidak bisa dijawab secara umum. Dan mereka lebih banyak tentang administrasi bisnis daripada tentang rekayasa perangkat lunak.
Christian Hackl
Menurut Anda apa dampak bisnisnya jika toko web seperti Amazon kehilangan beberapa jam atau pesanan? Mereka dapat mencoba mengirim ulang barang tanpa biaya, tetapi apa pengaruhnya terhadap reputasi mereka?
Bart van Ingen Schenau
@ BartvanIngenSchenau Saya pikir perusahaan besar seperti Amazon mampu membayar tes integrasi dan E2E. Sangat mudah melihat beberapa jam pesanan berharga jutaan. Tetapi saya bertanya-tanya apakah bagi perusahaan yang lebih kecil biaya untuk reputasi lebih rendah daripada biaya pengujian itu sendiri. Terutama karena mengubah pelanggan yang tidak bahagia menjadi pelanggan yang bahagia bisa menjadi sangat berharga artinya itu mungkin bahkan bukan biaya awal. Saya hanya tidak punya pengalaman untuk menarik kesimpulan, karena itu saya bertanya.
Marc

Jawaban:

12

Tidak masalah jika Anda menerapkan tes E2E dan integrasi atau tidak, Anda memerlukan rencana cadangan . Jangan pernah berharap sistem bebas bug hanya karena telah diuji.

Jadi, dalam estimasi biaya Anda, Anda tidak membandingkan biaya untuk menerapkan tes E2E terhadap biaya estimasi rencana cadangan Anda jika terjadi kegagalan, Anda membandingkan:

  • Biaya untuk melakukan tes E2E secara manual (beberapa kali, sebelum setiap rilis baru)

vs.

  • Biaya untuk membangun (dan memelihara) tes E2E otomatis

Jika Anda dapat menggunakan tes E2E beberapa kali, biasanya akan ada sejumlah tes berjalan di mana biaya mencapai titik impas. Itu harus menjadi metrik yang Anda terapkan ketika ingin merencanakan ke depan yang akan menguji E2E Anda lakukan secara manual, dan yang akan Anda otomatisasi.

Catatan mungkin ada beberapa jenis tes E2E yang dapat diimplementasikan dengan mudah, di mana ROI segera jelas, tetapi ada juga jenis tes E2E di mana pengembangan dan pemeliharaan mungkin lebih mahal daripada melakukannya secara manual selama beberapa tahun.

Doc Brown
sumber
Terima kasih, ini jawaban yang bagus. Apa contoh tes E2E yang mudah diterapkan tetapi mengarah pada pengembangan dan pemeliharaan lebih lanjut?
Marc
2
@ Markc: Saya kira Anda salah mengerti kalimat terakhir saya, saya berbicara tentang tes yang berbeda: yang mudah diterapkan / dipelihara, dan yang tidak.
Doc Brown
Benar, versi yang diedit membuatnya lebih jelas.
Marc
@ Markc: Menurut pengalaman saya, pengujian melalui antarmuka pengguna (terutama yang kompleks) sering menjadi kandidat di mana uji otomasi lebih hemat biaya daripada tes lainnya - tetapi sangat tergantung pada kategori perangkat lunak, alat yang tersedia, dan spesifikasi teknologi yang terlibat.
Doc Brown
7

Mungkin berlawanan secara intuitif, pengujian otomatis sebenarnya dapat mengurangi waktu pengembangan vs tanpa pengujian. Jadi ini adalah win win.

Idenya adalah bahwa tes berkontribusi pada sejumlah level

  1. Paksa pengumpulan dan spesifikasi persyaratan yang ketat

    Ini membuat dampak besar pada kecepatan pembangunan. Tidak akan kembali meminta detail lebih lanjut, tidak ada kesalahpahaman, tidak ada fitur yang tidak dibutuhkan dll

  2. Pengembang tahu kapan fitur selesai

    Sebagian besar pengujian dilakukan oleh pengembang selama penulisan kode daripada penguji memeriksa produk jadi. Mengotomatiskan pengujian ini mengurangi beban kerja ini

  3. Bug yang diperkenalkan oleh fitur baru terdeteksi secara instan.

    Ini dapat dengan mudah membuat Anda sprint dan memerlukan penulisan ulang seluruh fitur jika tidak terdeteksi.

  4. Siklus rilis lebih cepat

    Ini berarti lebih sedikit kode dalam penerbangan, yang berarti lebih sedikit penggabungan, yang berarti lebih sedikit pekerjaan dan kompleksitas bagi pengembang

Terutama jika Anda memiliki pengaturan kerangka pengujian, menulis tes ini membutuhkan waktu lebih sedikit daripada yang Anda hemat dalam efisiensi ini.

Plus, Anda menghemat waktu pengujian manual, plus Anda mendapatkan produk yang lebih baik pada akhirnya.

Ewan
sumber
Bagi saya, jawaban ini berdiri atau turun tergantung pada apakah OP berbicara tentang tes integrasi di atas dan di atas tes unit. Jika sudah ada unit test, maka jawabannya akan tampak spekulatif . Jika tidak ada tes unit, maka secara alami - beberapa pengujian otomatis lebih baik daripada tidak sama sekali.
Robbie Dee
Ya, saya berasumsi bahwa kami memiliki unit test di tempat
Marc
1

Jawabanku? Mungkin, mungkin juga tidak .

Tes EOE bagus ketika mereka sangat sederhana. Jika Anda berencana untuk membahas skenario dasar, Anda dapat mengatur untuk mendapatkan beberapa keuntungan dengan tes EOE. Tetapi jika Anda memiliki aplikasi yang benar-benar kompleks dan besar (mission critical atau tidak), tes EOE ini akan mahal untuk dipelihara dan Anda perlu mengetahui skenario Anda untuk menilai apakah layak.

Beberapa tahun yang lalu Google Testing Blog membahas masalah ini. Saya hanya bisa setuju dengan penulis. Tes yang baik harus cepat , andal , dan mengisolasi kegagalan , fitur-fitur yang tidak bisa diberikan oleh pengujian EOE kepada Anda.

Saya mengerjakan aplikasi yang memiliki lebih dari 12 jam tes ujung ke ujung yang mencakup banyak skenario. Akhirnya kami berhasil mendistribusikan tes ini pada mesin yang berbeda, mengendalikan awal, pelaksanaan, dan akhir pengujian, mengumpulkan dan menggabungkan hasilnya. Aplikasi yang diuji adalah aplikasi monolith (apa yang lebih mudah disiapkan dan dijalankan untuk diuji) dan merupakan mimpi buruk untuk mempertahankan tes.

Sebagian besar waktu kami mempertahankan tes bukannya menangkap bug dari hasil mereka. Menemukan asal bug pada tes ujung ke ujung membutuhkan banyak waktu. Kami juga menangani banyak tes "false-negative" dan sedikit waktu untuk memahami masalah dan memperbaikinya: Java memuat masalah Applet, elemen yang diharapkan tidak ditemukan pada halaman (ditambah masalah lain tentang kecepatan otomatisasi), mempertahankan kode kueri yang hanya digunakan pada tes memori database (karena permintaan asli menggunakan kode spesifik database), dll.

Semua ini membutuhkan orang untuk mempertahankan dan menjalankan. Pada akhirnya kami mulai menghapus beberapa tes EOE dan menggantinya dengan banyak tes unit / integrasi.

Jadi, saran konservatif saya adalah menggunakan piramida pengujian dari Google:

Sebagai tebakan pertama yang baik, Google sering menyarankan pemisahan 70/20/10: tes unit 70%, tes integrasi 20%, dan tes end-to-end 10%. Campuran yang tepat akan berbeda untuk setiap tim, tetapi secara umum, itu harus mempertahankan bentuk piramida itu.

Dherik
sumber
0

Dalam pengalaman saya pengujian E2E, terlepas dari kekritisan aplikasi, selalu bijaksana. Saya selalu berpikir dalam hal skenario terburuk, jika segala sesuatunya berubah menjadi pir, apakah Anda merasa nyaman berdiri di depan manajemen dan membenarkan pendekatan Anda? Jika tidak, maka Anda perlu mengubah pendekatan Anda. Banyak organisasi meminimalkan pentingnya dan sumber daya yang dialokasikan untuk pengujian, tetapi yakinlah bahwa ketika ada masalah, semua orang mencari seseorang untuk disalahkan dan jika Anda membuat keputusan untuk membatasi pengujian atau memberikan saran itu, maka Andalah yang akan menembak. baris.

Pengembangan perangkat lunak terlalu sering membutuhkan pengawasan terhadap politik organisasi.

pengguna1232212
sumber
0

"Sudah diketahui bahwa tes end-to-end dan integrasi mahal."

Saya pikir saya tidak setuju dengan pernyataan ini.

Pertama, tes E2E adalah hal yang penting bagi pengguna akhir dan dapat menjadi pilihan yang paling hemat waktu / biaya terendah untuk menguji sistem yang kompleks. Misalnya, ketika seseorang membeli mobil, kebanyakan orang tidak menariknya berkeping-keping dan mulai menguji karbohidrat, gearbox, roda secara terpisah. Sebagai gantinya, mereka mengambilnya untuk test drive.

Kedua, dalam hal tooling, E2E tidak cenderung memperlambat evolusi internal produk dan bertahan lebih lama. Jika Anda memikirkannya, permukaan fungsional sebenarnya dari sebagian besar produk jarang berubah sebanyak itu, sementara secara internal ia dapat mengalami berbagai macam perkembangan. Sebagai hasilnya, begitu alat uji aktif dan berjalan, biasanya berlangsung sangat baik. Sebagai contoh, jika kita kembali ke analogi mobil. Kasing "take it for a drive" yang sama akan cukup berfungsi pada Ford Model T seperti pada Tesla. Seperti halnya investasi dalam jalan bergulir, terowongan angin, pengaturan pengujian kebocoran, dll. Berapa banyak pengujian komponen internal yang memiliki ROI yang baik selama masa hidup mereka?

Di mana pengujian E2E cenderung lebih mahal / tidak tepat meskipun dalam pengaturan awal dan jika digunakan untuk mencoba dan menguji semuanya. Secara pragmatis, saya pikir cara terbaik untuk menghindari jebakan ini adalah dengan mengotomatiskan pengujian hal-hal yang:

  1. Mudah diotomatisasi dan tidak membutuhkan banyak perawatan untuk tetap berjalan.
  2. Konsumsi waktu paling banyak untuk menerapkan proses pengujian manual yang konsisten, memadai, hingga.
  3. Beresiko membuat Anda atau atasan Anda terlihat seperti orang idiot jika produk yang dikeluarkan rusak.

Gunakan segala bentuk pengujian termasuk E2E yang Anda anggap tepat. Fokus pada hal itu.

shufflingb
sumber
0

Anda tidak dapat benar-benar membandingkan biaya pengujian integrasi dengan biaya skenario kasus terbaik di mana bug hanya mempengaruhi satu urutan. Bug yang logis mungkin akan memengaruhi banyak pesanan. Katakanlah bug berarti bahwa tidak ada pembayaran yang ditangkap - ini bisa berdampak buruk bagi bisnis apa pun.

Anda harus bertanya apa bug kasus terburuk yang secara realistis dapat berakhir dalam produksi karena kurangnya pengujian E2E. Dan ingat hukum Murphys.

JacquesB
sumber
0

Saya berasumsi bahwa pertanyaan ini adalah tentang aplikasi web perusahaan.

Rekomendasi saya untuk hal-hal sedang-kritis:

  • Lakukan pengujian otomatis untuk API backend Anda, pastikan backend berfungsi seperti yang diharapkan. Tes ini harus ditulis oleh pengembang saat menerapkan API.
  • Jangan pedulikan tes UI otomatis, yaitu, lakukan pengujian frontend secara manual.

Saya pikir sebagian besar tes harus pada level API atau level komponen. Saya tidak peduli dengan unit test yang hanya menjalankan beberapa fungsi internal.

Mike76
sumber