Apakah Pengujian Perangkat Lunak Sangat Dibutuhkan?


33

Saya seorang siswa yang mengerjakan BE (CS) saya dan pertanyaan saya adalah sebagai berikut:

  1. Apakah pengujian di bidang perangkat lunak diperlukan?
  2. Jika kita membuat perangkat lunak dengan sangat hati-hati, mengapa kita harus menguji?
  3. Setelah pengujian, dapatkah kami yakin bahwa kami telah mencapai tujuan ini (produk / perangkat lunak berfungsi sebagaimana dimaksud) karena kami telah melakukan pengujian untuknya? Apa itu mungkin?

Pertanyaan saya: Apakah pengujian perangkat lunak diperlukan ?


34
If we create a software with care in during its development period then why should we go for Test?- karena bagaimanapun caranya, bahkan programmer yang paling ahli pun membuat kesalahan.
sukhbir

6
@anto Kemungkinan besar Anda dari sekolah India? Saya tidak bermaksud buruk, saya hanya mungkin memiliki gambaran latar belakang Anda dengan BE di sini ....
gideon

7
Pengujian perangkat lunak hanya diperlukan jika Anda gagal memberikan bukti formal yang benar :-)
rsp

13
@jwenting: Anda akan mengetahui di masa depan bahwa bahasa lisan tidak berkorelasi baik dengan keterampilan pemrograman. Karena penutur asli bahasa Inggris tidak dapat berbicara bahasa Inggris tidak berarti ia tidak dapat memprogram. Saya merasa memalukan bagi masyarakat bahwa Anda sangat bersedia untuk menusuk seseorang yang mencari bimbingan.
Chris

10
Tentu saja tidak. Doa sama baiknya.
gruszczy

Jawaban:


79

Iya nih. Karena betapapun baiknya Anda, Anda tidak dapat memikirkan semuanya.

  • Anda juga akan diminta untuk membuat perangkat lunak Anda melakukan hal-hal yang tidak pernah Anda inginkan.
  • Anda juga tidak akan pernah memiliki persyaratan yang begitu jelas sehingga Anda akan dapat memikirkan setiap kemungkinan untuk memastikan kode tidak rusak.
  • Anda juga akan bekerja dengan perangkat lunak dan apis orang lain yang tidak selalu berfungsi sebagaimana mestinya, tetapi Anda akan berasumsi bahwa itu memang, atau seharusnya, mengarah pada cacat dalam kasus "sempurna" Anda.

+1 Anda membuat poin dunia nyata yang sangat bagus !! Seandainya aku bisa menggandakan suara!
gideon

8
+1 untuk "Anda juga tidak akan pernah memiliki persyaratan yang sangat jelas sehingga Anda akan dapat memikirkan setiap kemungkinan untuk memastikan kode tidak rusak." Tempat kerja saya jauh lebih sedikit disfungsional daripada kebanyakan, dan tim Manajemen Produk kami menulis persyaratan yang cukup bagus. Saya masih sering memiliki beberapa "bagaimana dengan kasus ini?" pertanyaan sebelum saya menyelesaikan fitur. Dan kemudian QA dan kadang-kadang pengguna akhir masih menemukan bug dalam kasus sudut yang tidak ada yang mempertimbangkan.
Mason Wheeler

1
+1 untuk poin # 3. Kompiler, pustaka OS, komponen pihak ketiga - kecuali jika Anda menulis dengan benar pada logam, Anda akan selalu berakhir tergantung pada kode yang di luar kendali Anda.
TMN

78

iya nih

Untuk alasan yang sama seorang koki mencicipi makanannya saat memasaknya.


7
Bahkan para master tidak boleh berasumsi bahwa pekerjaan mereka tidak pernah membutuhkan koreksi.
gablin

26
Jangan pernah makan hidangan yang dimasak oleh koki kurus
JBRWilkinson

5
@JBRWilkinson: Seorang koki kurus bisa menjadi koki yang lebih baik jika dia sering mencuci piring dengan benar dan karenanya tidak selalu mencicipi makanannya, daripada koki 'gemuk' yang harus mencicipi makanannya sepanjang waktu. : P
chiurox

8
@ Gablin - Anda bisa mengatakan bahwa master tahu pekerjaan mereka KONSTAN membutuhkan koreksi.
Dan Ray

18

Saya bekerja dengan seseorang yang berpikir seperti ini, dia berpikir bahwa karena dia adalah programmer senior, dia tidak perlu lagi menguji kodenya. Perusahaan tidak mengerti betapa berbahayanya sikap ini dan bukannya memecatnya langsung, mereka merekrut lebih banyak programmer untuk mengatasi tumpukan bug. Tidak tahu dari mana backlog ini berasal dari mereka pikir itu bagian dari pemrograman apa itu semua. Pada dasarnya kami memiliki 3 programmer yang bekerja di bawah mode ini dan 20 tim yang tidak melakukan apa pun selain menguji dan memperbaiki bug yang dibuat oleh ketiganya.

TIDAK ADANYA OF PROPER PENGUJIAN KEMATIAN .

Jadi kecuali Anda adalah ALLAH atau versi apa pun dari semua makhluk yang tahu segalanya (sekarang ini yang ingin saya lihat) atau kecuali Anda secara aktif ingin dipecat dengan sangat cepat, saya sangat menyarankan Anda memulai pengujian.


Therac-25 sebenarnya bukan contoh yang baik karena akan sangat sulit untuk mengekspos itu dalam pengujian.
Loren Pechtel

4
Bahkan "Tuhan" bisa menggunakan beberapa penguji (meskipun saya pikir dia menyelesaikan semua bug sebagai "dengan desain"): P
Tester101

1
@Newtoplan, mempertimbangkan untuk memberi tahu atasan Anda?

2
@ Talbjorn: Saya memang memberitahunya tetapi mereka (manajemen secara umum) bahkan tidak menyadari situasi yang sebenarnya. Sebenarnya mereka menganggapnya sebagai dewa pemrograman dan menyalahkan anggota tim lainnya karena tidak menemukan dan memperbaiki bug seperti yang mereka lakukan .... ditambah, ia kadang-kadang membuat kode esoterik yang melatih seseorang agar cukup terbiasa untuk mencoba yang sederhana perubahan dapat memakan waktu 2 tahun ke atas, sekali lagi manajemen merasa ini normal dengan basis kode loc 750k (sebenarnya mereka mengukurnya pada 1,5m tapi setengahnya adalah komentar) (maaf saya tidak tahu bagaimana cara mendapatkan slash o dengan benar :-( )
Newtopian

1
Belum lagi Ariane-5 dan London Ambulance Service Computer Aided Dispatch: lond.ambulance.freeuk.com/cad.html
StuperUser

9

Perangkat lunak ditulis oleh orang-orang.

Orang tidak sempurna dan melakukan kesalahan.

Ketika kompleksitas usaha meningkat, jumlah potensial (dan dampak) kesalahan, pengawasan, atau hal-hal yang dilupakan naik - biasanya secara eksponensial.

Jadi ya, pengujian diperlukan. Ini membawa keseimbangan dan perspektif.


6

Apakah Anda akan mendapatkan penerbangan yang menjalankan OS yang Anda tahu Anda gunakan pada laptop Anda dan memberi Anda layar kematian dalam warna favorit Anda? Pikirkan tentang itu.

Tidak ada coder yang sempurna. Jauh, jauh, jauh dari itu kok. Anda perlu pengujian, dan penguji sering membawa perspektif (juga dikenal sebagai kasus penggunaan) yang hilang oleh pengembang.

Lakukan pencarian pada bug perangkat lunak paling terkenal di Google untuk mengetahui apa yang saya maksud.

Dan di tingkat perguruan tinggi, baca beberapa perkembangan yang digerakkan oleh tes, pengujian unit, dan praktik lincah untuk mengetahui di mana segalanya sekarang.


Terima kasih. Bisakah Anda mengatakan kepada saya beberapa sumber daya untuk mendapatkan pengujian unit yang dipelajari, praktik yang tangkas seperti yang telah Anda sebutkan!
Semut

1
Saya pasti berlangganan "tidak sempurna", saya memiliki pengetahuan yang sangat masuk akal tentang C ++ dan sejumlah aturan misteriusnya ... namun saya secara acak mengacaukan dengan membalikkan kondisi boolean: / Pengujian diperlukan , pikir karena sesuatu lulus tes tidak bukan berarti (sama sekali) bekerja;)
Matthieu M.

4

Pengujian adalah suatu keharusan mutlak untuk setiap aplikasi non sepele (dalam ukuran, atau fungsi) yang harus benar-benar digunakan. Anda tidak akan menemukan satu pengembang pun yang peduli tentang keahliannya (sebagaimana dibuktikan dengan kunjungan mereka ke situs ini) yang akan menanggapi dan mengatakan bahwa pengujian tidak diperlukan.

Selain apa yang telah diposting, memiliki rangkaian lengkap unit test otomatis pada aplikasi yang diberikan akan membuat Anda lebih percaya diri dalam perubahan kode di masa depan. Keyakinan yang lebih tinggi ini (karena tes unit memberikan jaring pengaman BESAR) akan menghasilkan perubahan kode yang lebih cepat untuk aplikasi yang ada (karena kurang mengulangi / mengecek ulang)


4

Salah humanum est

Tidak ada yang namanya perangkat lunak bebas bug.

Pengembang paling terampil menulis kode dengan bug. Bahkan jika ada pengembang yang sempurna, masih ada bug karena perbedaan antara:

  • kebutuhan pengguna dan dokumen spesifikasi
  • spesifikasi dan desain
  • lingkungan perangkat keras dan perangkat lunak yang diharapkan dan aktual
  • kebenaran kemarin dan hari ini: semua yang tercantum di atas dapat berubah yang tidak dilaporkan secara sempurna dalam setiap langkah proses pengembangan.

Pengembang yang sempurna hanya sebagian saja. Dan pengembang yang sempurna tidak ada.


Anda menunjukkan pengetahuan yang baik tentang bagaimana perangkat lunak gagal. Tetapi alasan utama mengapa perangkat lunak gagal bukan karena kesalahan manusia. Sebaliknya itu karena belum ada metode yang terbukti untuk membuat sistem perangkat lunak bebas kesalahan. Saya akan menulis tentang ini nanti.
CuongHuyTo

@CuongHuyTo - Apakah Anda memiliki metode formal dalam pikiran?
mouviciel

3

Sebagian besar program kehidupan nyata:

a) berisi ratusan baris kode atau lebih, tersebar di banyak file;
b) dikembangkan oleh lebih dari satu programmer;
c) digunakan dalam lingkungan yang berbeda dari lingkungan pengembang

Jadi, jika Anda tidak akan memeriksa bagaimana program bekerja dalam situasi kehidupan nyata, kemungkinan itu tidak akan bekerja sama sekali akan mendekati 100%.


3

Selain semua jawaban hebat lainnya, bahkan jika Anda tahu itu sempurna dan bebas bug, pikirkan tentang programmer lain yang harus berurusan dengan kode Anda di masa depan. Mereka tidak akan mengetahuinya seperti yang Anda lakukan dan akan ingin mengandalkan tes Anda untuk memastikan mereka tidak merusak apa pun setelah mereka melakukan perubahan. Ini tentu saja juga berlaku untuk diri Anda setelah Anda belum melihat kode Anda dalam waktu satu tahun!


3

IYA NIH.

Berikut ini perspektif lain yang sedikit lebih halus yang belum dibahas:

Jangan pernah meremehkan perlunya "verifikasi independen" . Itulah alasan yang sama mengapa ada baiknya beberapa editor independen memeriksa pekerjaan Anda sebelum mengirimkan karya tulis besar untuk diterbitkan. Tidak peduli sebagus apa pun penulis Anda, kadang-kadang Anda akan berpikir - dan menulis sesuatu seperti "di" sebagai ganti "itu", atau sesuatu. Jika Anda membacanya sendiri, bahkan dengan sangat hati-hati, Anda biasanya masih akan melewatkannya, karena otak Anda secara otomatis menerima aliran proses berpikir Anda sebagai hal yang benar, dan menjelaskan kesalahannya. Untuk mata baru, kesalahan semacam itu biasanya cukup mencolok.

Anda mendapatkan hal yang sama dalam pemrograman: cukup mudah untuk masuk ke aliran di mana kode Anda, atau "pengujian pengembangan" dasar dari kode Anda sendiri - terlihat benar karena Anda mengujinya dan menggunakannya dengan cara tertentu. Tetapi kemudian ketika sepasang tangan lain datang dan mengklik sesuatu dengan cara atau urutan yang sedikit berbeda, semuanya hancur.

Sekarang, tentu saja, secara teori Anda bisa menyusuri jalur verifikasi secara formal setiap kemungkinan tunggal dan cabang logika dalam kode Anda sendiri, tetapi untuk perangkat lunak non-sepele ini akan jauh lebih mahal dan memakan waktu daripada meminta orang lain menggedornya. kode untuk Anda. Dan Anda mungkin masih akan melewatkan hal-hal yang tidak pernah Anda pikirkan.


2

Apa yang belum tersentuh: meskipun kode Anda sempurna, Anda masih tidak aman. Compiler memiliki bug yang dapat menyebabkan kode yang bahkan sempurna untuk berperilaku tidak benar setelah kompilasi. Sistem operasi memiliki bug yang dapat menyebabkan biner sempurna berperilaku tidak benar ketika dijalankan. Perangkat keras memiliki bug yang dapat menyebabkan masalah.

Itu juga mengapa pengujian pada satu mesin tidak cukup untuk produk komersial. Mereka perlu diuji di bawah sebanyak mungkin kombinasi perangkat keras dan perangkat lunak yang dapat mereka temui di alam liar.


2

Pemimpin tim yang menulis perangkat lunak untuk pesawat ulang-alik keluar sebelum setiap peluncuran untuk menandatangani bahwa perangkat lunak tidak akan membahayakan pesawat ulang-alik.

Menurut Anda apa yang memberinya kepercayaan diri untuk melakukannya?


1

Anda terus menguji kode hanya dengan kompilasi dan menggunakannya. Dalam beberapa IDE Anda mendapatkan cek kewarasan saat Anda mengetik. Kecuali Anda tidak pernah benar-benar menjalankan kode Anda, Anda melakukan pengujian.

Seberapa banyak Anda menguji sebenarnya adalah akar dari pertanyaan semacam ini dan jawaban untuk itu beresiko. Anda menguji sebanyak yang masuk akal untuk menguji dari sudut pandang manajemen risiko. Menguji segalanya atau tidak sama sekali biasanya tidak mungkin. Menguji hampir tidak ada biasanya merupakan langkah yang buruk. Segala sesuatu di antaranya adalah permainan yang adil, tergantung pada tingkat risiko dan paparan kiriman Anda.


1

Baunya seperti pekerjaan rumah.

Apakah pengujian di bidang perangkat lunak diperlukan?

Iya nih. Benar. Di semua tingkatan. Di luar beberapa domain khusus, kami belum pada tahap di mana kami dapat membuktikan secara matematis kode kami benar terhadap bug tertentu (setidaknya tidak dalam jangka waktu yang masuk akal), jadi kami harus melempar batu ke sana untuk melihat apakah dan dimana itu rusak.

Jika kita membuat perangkat lunak dengan sangat hati-hati, mengapa kita harus menguji?

Pengujian bukan hanya tentang menemukan kesalahan pengkodean. Ini juga tentang memastikan bahwa Anda telah memenuhi semua persyaratan Anda, dan bahwa keseluruhan sistem berkinerja seperti yang diharapkan. Jika saya memiliki persyaratan bahwa transaksi yang gagal harus mengembalikan kode kesalahan tertentu, maka saya perlu menulis tes untuk memverifikasi bahwa fungsionalitasnya ada dan berfungsi dengan benar.

Dan semua itu mengasumsikan bahwa spesifikasi dan desainnya lengkap, benar, dan konsisten secara internal, yang seringkali tidak demikian. Bahkan jika Anda memenuhi spesifikasi untuk surat itu dan mengikuti desain ke titik dan titik koma terakhir, jika spesifikasi atau desain buruk, maka akan ada masalah pada waktu integrasi. Seringkali, pengujian sistem atau integrasi adalah ketika Anda mengetahui bahwa spesifikasi itu sendiri bermasalah dan perlu direvisi (lihat kisah perang di bawah).

Setelah pengujian, dapatkah kami yakin bahwa kami telah mencapai tujuan ini (produk / perangkat lunak berfungsi sebagaimana dimaksud) karena kami telah melakukan pengujian untuknya? Apa itu mungkin?

Tidak, tidak sampai 100%. Kami tidak dapat menguji setiap kombinasi input atau jalur eksekusi yang dimungkinkan dalam kode apa pun kecuali yang paling sederhana. Kami tidak dapat menjelaskan semua faktor lingkungan. Kami tidak dapat membayangkan semua mode kegagalan yang memungkinkan.

Kami dapat menguji ke titik di mana kami cukup yakin tidak ada masalah besar. Sekali lagi, inilah mengapa kita perlu menguji di semua tingkatan. Tulis serangkaian tes untuk memastikan kode Anda menangani kondisi tepi dengan benar (input buruk, hasil yang tidak terduga, pengecualian, dll.). Uji unit untuk memverifikasi bahwa kode Anda memenuhi persyaratannya. Tes sistem untuk memverifikasi pemrosesan end-to-end. Tes integrasi untuk memverifikasi bahwa semua komponen saling berbicara dengan benar. Lakukan pengujian kegunaan untuk memastikan bahwa semuanya berfungsi sedemikian rupa sehingga pelanggan tidak ingin menembak Anda.

Skenario dunia nyata - Saya sedang mengerjakan sistem back-end yang sesekali mengirim pembaruan ke layanan GUI untuk ditampilkan dalam tabel di layar. Selama proyek, persyaratan ditambahkan untuk menambahkan pemfilteran pada tampilan (misalnya, operator dapat memilih untuk menampilkan subset dari entri dalam tabel). Kesalahan desain # 1 - pemfilteran seharusnya dilakukan oleh layanan GUI (Saya memiliki gagasan kuno dan kuno bahwa fungsi manajemen tampilan harus menjadi tanggung jawab perangkat lunak manajemen display), tetapi karena politik dan ketidakmampuan saya untuk mengenali masalah sebelum menjadi masalah , persyaratan itu ditempatkan pada layanan back-end. Baiklah, oke, tidak masalah, saya bisa melakukannya. Filter menyatakan perubahan, saya menerima pesan, dan kemudian saya mengirim pesan buat atau hapussetiap baris dalam tabel , karena itulah cara kerja antarmuka (kesalahan desain # 2 - tidak ada cara untuk mengirim pembaruan ke beberapa baris dalam satu pesan; kami bahkan tidak bisa mengirim satu pesan "jelas" atau "hapus" untuk menghapus seluruh tabel).

Ya, semua berjalan baik selama pengembangan; pengujian unit, sistem, dan integrasi menunjukkan bahwa saya mengirim informasi yang benar dan menangani perubahan filter dengan benar. Kemudian kita sampai ke pengujian kegunaan, dan semuanya jatuh dengan keras , karena volume data luar biasa. Latensi jaringan antara layanan backend saya dan GUI berada di urutan .15 hingga .25 detik. Tidak buruk jika Anda hanya perlu mengirim pembaruan untuk selusin baris atau lebih. Mematikan ketika Anda harus mengirim pembaruan untuk beberapa ratus. Kami mulai mendapatkan laporan bug bahwa GUI membeku setelah mengubah status filter; yah, tidak, yang terjadi adalah mengambil beberapa menit untuk memperbarui tampilan karena protokol pesan update-satu-baris-pada-waktu-berkepala tulang tidak bisa menangani skenario dunia nyata.

Perhatikan bahwa semua itu dapat dan seharusnya telah diantisipasi oleh semua orang dari kontraktor utama hingga saya yang kecil jika kita repot-repot melakukan bahkan analisis yang paling mendasar sebelumnya. Satu-satunya pembelaan yang akan saya tawarkan adalah bahwa kami menutup tahun kedua dari proyek enam bulan yang akan segera dibuang setelah melahirkan, dan kami semua hanya ingin melihat bagian belakangnya.

Yang membawa kita pada alasan terakhir untuk menguji - CYA. Proyek dunia nyata gagal karena berbagai alasan, banyak di antaranya bersifat politis, dan tidak semua orang bertindak dengan itikad baik ketika ada yang salah. Jari diarahkan, tuduhan dibuat, dan pada akhirnya Anda harus dapat menunjuk ke sebuah catatan yang menunjukkan bahwa setidaknya barang - barang Anda bekerja sebagaimana mestinya.


0

Pengujian akan selalu dilakukan dan bug akan selalu ditemukan. Hanya saja pengujian akan dilakukan secara internal oleh tim Anda, atau pengguna akhir akan menjadi tester. Biaya bug yang ditemukan oleh pengguna akhir jauh lebih tinggi daripada jika ditemukan selama pengujian.


0

Saya akan menyarankan mengambil kursus Computing-Tolerant Computing yang bagus. Desain perangkat lunak yang cermat adalah salah satu pilar untuk mencapai ketahanan dalam produk perangkat lunak Anda. Dua pilar lainnya adalah pengujian yang cukup dan desain yang berlebihan. Tujuan dasarnya adalah untuk mengakomodasi sejumlah besar kondisi kegagalan yang tidak diketahui dan untuk memprioritaskan berurusan dengan beberapa yang diketahui:

1.) menghilangkan kegagalan sebanyak mungkin melalui desain dan implementasi yang tepat 2.) menghilangkan kegagalan yang tidak terduga dari fase desain dan implementasi yang salah melalui berbagai bentuk pengujian (unit, integrasi, acak) 3.) menangani setiap kegagalan sisa melalui redundansi ( temporal => kompilasi ulang, coba lagi atau spasi => simpan salinan, paritas)

Jika Anda menghilangkan fase pengujian, Anda hanya memiliki fase desain dan redundansi untuk mengatasi kegagalan.

Selain itu, dari sudut pandang produk, pemangku kepentingan Anda (misalnya manajemen, pengguna, investor) akan menginginkan semacam jaminan bahwa produk Anda memenuhi spesifikasi kualitas dan keamanan tertentu, kriteria, dll. Selain semua ini, belumkah Anda menguji perangkat lunak yang Anda membangun hanya untuk memiliki 'cek kewarasanan'? Semua alasan ini membuat pengujian perangkat lunak lebih menarik.


0

Semua program memiliki bug, setidaknya untuk memulainya.

Ada beberapa penelitian yang menyatu pada sekitar 1 bug per setiap lima baris kode yang belum diuji.

Pelajaran sejarah:

Kembali pada tahun 1960-an IBM membutuhkan program "NOP" sehingga mereka dapat menjalankan beberapa fungsi di JCL tanpa benar-benar menjalankan program. Para pengembang datang dengan program assembler satu baris di mana seluruh kode terkandung dalam namanya "IEFBR14" kode sebenarnya adalah:

       BR 14 * brach to return address in register 14

Selama liftime panjang, program satu baris ini telah mengalami 2 laporan bug dan lima amandemen.


-1

Refactoring kode sangat cepat ketika Anda memiliki unit test. Tes unit juga menunjukkan penggunaan fungsi konkret yang sederhana, sehingga Anda memiliki sedikit "howto" yang dapat sangat berguna dalam proyek besar di mana programmer tidak tahu persis seluruh kode.

Ketika Anda Berkembang dengan TDD (test driven development) Anda tidak memiliki pengambil / setter yang tidak perlu dll. Anda hanya menciptakan apa yang Anda butuhkan.


-1

Untuk menjawab # 3 pertanyaan Anda:

Setelah menjadi programmer dan penguji perangkat lunak, ya, Anda dapat memastikan Anda memenuhi persyaratan perangkat lunak selama pengujian.

{memakai topi QA}

Bagaimana? Anda dapat melakukan ini dengan melacak tes Anda dari kode uji ke kriteria penerimaan, kriteria penerimaan hingga fitur, dan fitur hingga persyaratan. Jika Anda melacak setiap tes hingga rantai desain dan mereka memetakan ke satu atau lebih persyaratan, Anda dapat yakin bahwa tes Anda digunakan untuk memastikan kode memenuhi persyaratannya (meskipun ini memunculkan gagasan tentang cakupan uji yang memadai, yang merupakan topik lain). Jika Anda tidak dapat melacak tes hingga rantai desain, maka Anda kemungkinan menguji hal-hal yang tidak diperlukan, dan ini buang-buang waktu. Kriteria penerimaan juga dapat mencakup memeriksa perilaku yang tidak diinginkan - Anda dapat menguji mereka juga, yang membuat Anda selangkah lebih dekat dengan rilis kualitas.

{QA hat off}

Tidak ada kode yang bebas bug, hanya lebih murah dari waktu ke waktu ketika lebih banyak upaya dihabiskan untuk menilai kualitasnya selama pengembangan.


-1

Saya telah menjadi penguji Perangkat Lunak selama 3 tahun sekarang. Awalnya saya sendiri merasa skeptis tentang perlunya menguji, karena saya pikir jika departemen pengembangan dan manajemen proyek melakukan pekerjaan mereka maka tidak ada kesalahan dalam perangkat lunak yang seharusnya muncul.

TAPI ini bukan masalahnya. +++++++++

Kesalahan sering terjadi, beberapa di antaranya penting untuk pengoperasian proyek. Ada juga pengujian lintas-browser (yang berarti pengujian pada berbagai browser yang ada seperti SAFARI, FIREFOX, CHROME dan Internet Explorer) dan saya bekerja pada proyek di mana tombol antarmuka sederhana seperti YA dan TIDAK pada jendela survei di mana tidak hanya bekerja di semua browser saja beberapa dari mereka.

Saya bekerja pada pengujian halaman internet, dan sedang menguji PERUBAHAN TEKS sederhana dan berpikir pada diri sendiri bahwa tidak ada cara di bumi mungkin ada cacat pada pekerjaan sederhana ini, tetapi tidak ada itu terjadi.

Saya juga telah melihat ketika pengembang baru bergabung dengan tim dan diberi pembaruan karya untuk formulir aplikasi internet kompleks yang ada dengan sejumlah tautan / panggilan ke halaman eksternal, kesalahan terjadi karena kurangnya komunikasi antara pengembang lama dan baru, karena berbagai alasan (tidak ada waktu untuk mendidik, tidak ada keinginan untuk mendidik dan sebagainya).


-3

IYA NIH

Bayangkan perangkat lunak Anda hanya fungsi logis DAN (b1, b2) di mana b1 dan b2 hanya bit. Dengan itu Anda perlu 4 kasus uji untuk memastikan bahwa perangkat lunak Anda bebas dari kesalahan, jika lingkungan sekitar Anda memberikan apa yang ditentukan untuknya.

Sekarang sistem Anda dibuat oleh banyak fungsi yang yang paling sederhana jauh lebih rumit daripada fungsi logis itu. Bagaimana Anda memastikan itu bebas dari kesalahan?

(bersambung)


Bergantung pada penerapan AND dan bagian lain dari spesifikasi, Anda mungkin memerlukan lebih dari empat kasus pengujian: tes stres terhadap lingkungan (suhu, radiasi ...), tes kinerja (misalnya, frekuensi maksimum b1 dan b2) ... Bahkan dalam domain logis, Anda mungkin ingin membuktikan bahwa fungsi selalu memberikan hasil yang benar apa pun urutan b1 dan b2 (mis. Bayangkan pintu belakang di mana urutan spesifik pada perubahan b1 DAN ke XOR)
mouviciel

ini tampaknya tidak menawarkan sesuatu yang substansial daripada 21 jawaban sebelumnya
agas

@moviciel: Anda kembali membuat beberapa poin yang sangat bagus, tetapi jika perangkat keras yang menjalankan sistem perangkat lunak Anda memberikan apa yang ditentukan untuknya, maka Anda tidak perlu melakukan stress test untuk fungsi AND () kecil ini. Saya akan kembali ke komentar tes kinerja Anda nanti.
CuongHuyTo
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.