Perbedaan antara cacat dan bug dalam pengujian?


35

Apa perbedaan antara cacat dan bug?


2
Baca testingstandards.co.uk/bs_7925-1_online.htm untuk informasi lebih lanjut
StuperUser

1
Ada bug yang benar-benar mengatakan bahwa ada sesuatu yang hilang yang berarti mereka adalah permintaan fitur, bukan bug.
m3th0dman

Jawaban tergantung pada tujuan mengapa Anda bertanya.
maks 630

Lihatlah etimologi kata cacat. De = tidak, un. Facere = do. Karenanya, tidak melakukan (seperti yang diharapkan), tidak melakukan, rusak, kaput. Sedangkan bug berarti "sesuatu dalam karya yang menghambat kinerja". Pada akhirnya Anda harus memperbaiki sesuatu, jadi semuanya bersifat akademis. Saya memilih untuk menutup, bukankah Anda memiliki beberapa bug untuk diperbaiki ?!
Martin Maat

Jawaban:


59
  • Bug adalah hasil dari kesalahan pengkodean

  • Cacat adalah penyimpangan dari persyaratan

Yaitu: Kerusakan tidak selalu berarti ada bug dalam kode , bisa jadi fungsi yang tidak diterapkan tetapi didefinisikan dalam persyaratan perangkat lunak.


Dari halaman Wikipedia tentang pengujian perangkat lunak :

Tidak semua cacat perangkat lunak disebabkan oleh kesalahan pengkodean. Salah satu sumber cacat mahal yang umum disebabkan oleh kesenjangan persyaratan, misalnya, persyaratan yang tidak diakui, yang mengakibatkan kesalahan kelalaian oleh perancang program. [14] Sumber umum kesenjangan persyaratan adalah persyaratan non-fungsional seperti testabilitas, skalabilitas, rawatan, usabilitas, kinerja, dan keamanan.


15
Keduanya adalah "penyimpangan dari persyaratan" seperti yang saya lihat.
Martin Wickman

2
Cacat tidak harus berupa bug. Juga, bug tidak harus berarti persyaratan tidak terpenuhi, dan karenanya bukan 'penyimpangan dari persyaratan'
Dan McGrath

5
Sepertinya Anda melewatkan poin @Martin. Ya, bug bisa jadi cacat. Ya, cacat bisa jadi bug. Tetapi itu tidak selalu benar. Hanya karena ada beberapa tumpang tindih, tidak berarti mereka identik! Diagram Venn Bug & Defect -> (())
Dan McGrath

8
@Dan McGrath: pada dasarnya apa yang Anda lakukan di sini adalah definisi bug Anda sendiri. Tetapi secara umum tidak ada makna yang didefinisikan, itu hanya jargon teknik!
MaR

3
@DanMcGrath: Diagram Venn Anda tidak berguna. Itu bisa berarti ({}) atau ({)} . Saya berasumsi bahwa yang Anda maksud adalah yang kedua.
Brian

21

Mengutip Ilene Burnstein dari buku Pengujian Perangkat Lunak Praktis (direkomendasikan) yang berpisah dari definisi dalam "Pengumpulan Standar IEEE untuk Rekayasa Perangkat Lunak" (1994) dan "Glosarium Standar IEEE dari Terminologi Rekayasa Perangkat Lunak" (standar 610.12, 1990):

Kesalahan

Kesalahan adalah kesalahan, kesalahpahaman, atau kesalahpahaman dari pihak pengembang perangkat lunak

Dalam kategori pengembang, kami menyertakan insinyur perangkat lunak, programmer, analis, dan penguji. Misalnya, pengembang mungkin salah paham tentang notasi desain, atau pemrogram mungkin salah mengetikkan nama variabel.

Kesalahan (Cacat)

Kesalahan (cacat) dimasukkan ke dalam perangkat lunak sebagai hasil dari kesalahan. Ini adalah anomali dalam perangkat lunak yang dapat menyebabkannya berperilaku tidak benar, dan tidak sesuai dengan spesifikasinya.

Kesalahan atau cacat kadang-kadang disebut "bug." Penggunaan istilah terakhir meremehkan kesalahan dampak pada kualitas perangkat lunak. Penggunaan istilah "cacat" juga dikaitkan dengan artefak perangkat lunak seperti persyaratan dan dokumen desain. Cacat yang terjadi pada artefak ini juga disebabkan oleh kesalahan dan biasanya terdeteksi dalam proses peninjauan.

Kegagalan

Kegagalan adalah ketidakmampuan sistem perangkat lunak atau komponen untuk melakukan fungsi yang diperlukan dalam persyaratan kinerja yang ditentukan.

Selama eksekusi komponen atau sistem perangkat lunak, penguji, pengembang, atau pengguna mengamati bahwa itu tidak menghasilkan hasil yang diharapkan. Dalam beberapa kasus, jenis perilaku tertentu menunjukkan adanya jenis kesalahan tertentu. Kita dapat mengatakan bahwa jenis perilaku salah adalah gejala dari kesalahan. Pengembang / penguji yang berpengalaman akan memiliki basis pengetahuan tentang kasus kesalahan / gejala / kegagalan (model kesalahan seperti yang dijelaskan dalam Bab 3) yang tersimpan dalam memori. Perilaku yang salah dapat mencakup menghasilkan nilai yang salah untuk variabel output, respons yang salah di bagian perangkat, atau gambar yang salah di layar. Selama kegagalan pengembangan biasanya diamati oleh penguji, dan kesalahan ditemukan dan diperbaiki oleh pengembang.

Anda dapat membaca bab lengkap di Google Buku, di sini .


12

Ada beberapa istilah berbeda yang terkait dengan bug perangkat lunak. Kutipan dari kursus yang saya ambil:

  • Kesalahan : Tindakan atau kelalaian manusia yang menyebabkan kesalahan.

  • Kesalahan : Kesalahan adalah kerusakan perangkat lunak (langkah, proses, atau definisi data) yang salah yang menyebabkan kegagalan.

  • Bug : Sama seperti Kesalahan.

  • Kegagalan : Ketidakmampuan suatu perangkat lunak untuk melakukan fungsi yang diperlukan dalam persyaratan kinerja yang ditentukan.

Menurut ini, tidak ada perbedaan antara cacat dan bug. Namun, beberapa orang berpendapat bahwa bug adalah kesalahan yang ditemukan sebelum merilis perangkat lunak, sedangkan cacat adalah kesalahan yang ditemukan oleh pelanggan.

Saya tidak bisa menolak memposting "kasus aktual bug pertama yang terkenal" yang terkenal.

teks alternatif


Akhirnya, seseorang yang telah membaca: testingstandards.co.uk/bs_7925-1_online.htm
StuperUser

Itu bukan tempat saya mendapatkannya, tetapi mereka mungkin memiliki sumber yang sama (atau yang ini mungkin sumbernya).
Tamás Szelei

Yup, bertahun-tahun yang lalu saya menghabiskan beberapa waktu untuk memperbaiki bug. Saya memiliki beberapa kedipan yang mengganggu di satu sel di layar dan itu tidak masuk akal. Akhirnya terbang. (Ini berada di era teks putih di layar hitam, tempat yang dimaksud cukup jauh ke kanan untuk selalu menjadi hitam saat saya mengedit, jadi saya hanya memperhatikannya ketika program meletakkan beberapa warna putih di belakangnya.)
Loren Pechtel

7

Oh sayang.

Dahulu kala - operasi komputer yang rusak disebabkan oleh segala hal - termasuk tikus yang mengunyah kabel dan bug nyata (makhluk) masuk ke dalam pekerjaan.

Istilah BUG telah macet sebagai istilah yang berarti sesuatu yang tidak berfungsi seperti yang diharapkan.

BUG harus dianggap sebagai istilah jargon yang berarti cacat.

Cacat adalah istilah yang secara teknis benar yang berarti bahwa hal itu tidak dilakukan sebagaimana mestinya.

Sedapat mungkin, menggunakan DEFECT sebagai ganti BUG sebenarnya membawa konotasi bahwa kita mengakui kegagalan kita (cacat kita, kurangnya pemahaman kita tentang kebutuhan pengguna atau hal-hal yang kita lupakan dalam implementasi) alih-alih mengenakannya sebagai bug "yang terdengar lebih sepele". ".

Gunakan CACAT.

Cobalah untuk tidak menggunakan istilah BUG. Konyol, tidak relevan, historis, dan remeh.


2
Mengapa Anda ingin menghapus dari menggunakan istilah teknis yang dipahami dengan baik? Maaf ... ya, BUG bersifat historis - tetapi jika Anda berpikir bahwa pemrogram menganggap bug (secara umum berlawanan dengan spesifik) sebagai hal sepele hanya karena mereka disebut bug atau istilah tidak relevan karena asal-usulnya maka saya takut perubahan saya menjadi setengah baya pemarah sepenuhnya dibenarkan. Oh dan seperti yang ditunjukkan oleh @Dan, bug adalah cacat tetapi cacat tidak selalu bug, yang selanjutnya menunjukkan bahwa istilah tersebut memiliki nilai.
Murph

3
@Murph, "bug" adalah eufemisme untuk kesalahan pemrograman. Tanpa sadar ini memikat semacam gremlin yang tidak bisa dikontrol pengembang. Ini tidak benar - ini adalah kesalahan dan mengakui ini adalah langkah menuju perilaku yang lebih profesional. (Imho tentu saja :-))
rsp

1
Erm, jelas saya tidak setuju (-: Saya tahu persis siapa yang bertanggung jawab atas bug - kesalahan pengkodean dan logika - yang saya miliki dalam kode saya. (Saya juga dapat mengidentifikasi kegagalan dalam kode orang lain.) Semua programmer yang saya kenal jelas tentang apa arti istilah - bahwa mereka (juga beberapa programmer) dan bukan semacam GREMLIN membuat kesalahan.
Murph

2
Saat berurusan dengan pelanggan Anda, Anda dapat menyebut hal-hal ini bug, atau cacat. Bug adalah jargon. Cacat adalah pengakuan, di luar jargon, bahwa itu tidak sebagaimana mestinya. "Cacat" adalah istilah yang, dan mendorong, komunikasi yang jelas - di luar persaudaraan pemrograman maupun di dalam. (Saya juga tidak setuju bahwa ada perbedaan antara bug dan cacat.)
quick_now

Cacat adalah istilah yang tepat. Berapa banyak program yang dirilis dengan bug di dalamnya dan kita semua menerimanya? Tetapi berapa banyak program yang dirilis dengan cacat? Kami tidak akan menerima itu karena istilah ini menyiratkan tingkat keparahan yang lebih besar dan kami tahu bahwa itu adalah kesalahan kami sendiri, bukan bug di mana kami dapat menyalahkan cuaca atau waktu dalam sehari.
Rudolf Olah

7

Dari Daftar Istilah Standar IEEE untuk Terminologi Rekayasa Perangkat Lunak, yang dikutip dalam Badan Rekayasa Perangkat Lunak Pengetahuan KA untuk Pengujian Perangkat Lunak dan Kualitas Perangkat Lunak:

bug. Lihat: kesalahan; kesalahan.


kesalahan. (1) Perbedaan antara nilai atau kondisi yang dihitung, diamati, atau diukur dan nilai atau kondisi yang benar, ditentukan, atau secara teoritis benar. Misalnya, perbedaan 30 meter antara hasil yang dihitung dan hasil yang benar. (2) Langkah, proses, atau definisi data yang salah. Misalnya, instruksi yang salah dalam program komputer. (3) Hasil yang salah. Misalnya, hasil perhitungan 12 ketika hasil yang benar adalah 10. (4) Tindakan manusia yang menghasilkan hasil yang salah. Misalnya, tindakan yang tidak benar dari programmer atau operator. Catatan: Walaupun keempat definisi tersebut umumnya digunakan, satu perbedaan memberikan definisi 1 pada kata "kesalahan," definisi 2 untuk kata "kesalahan," definisi 3 untuk kata "kegagalan," dan definisi 4 untuk kata "kesalahan." Lihat a2so: kesalahan dinamis; kesalahan fatal; kesalahan adat; kesalahan semantik; kesalahan sintaksis; kesalahan statis; kesalahan sementara.


kegagalan. Ketidakmampuan sistem atau komponen untuk melakukan fungsi yang diperlukan dalam persyaratan kinerja yang ditentukan. Catatan: Disiplin toleransi kesalahan membedakan antara tindakan manusia (kesalahan), manifestasinya (kesalahan perangkat keras atau perangkat lunak), hasil dari kesalahan (kegagalan), dan jumlah yang hasilnya salah (kesalahan). Lihat juga: crash; kegagalan bergantung; pengecualian; mode gagal; tingkat kegagalan; kegagalan berat; kegagalan baru jadi; kegagalan independen; kegagalan acak; kegagalan lunak; kegagalan macet.


kesalahan. (1) Kerusakan pada perangkat atau komponen perangkat keras; misalnya, korsleting atau kabel putus. (2) Langkah, proses, atau definisi data yang salah dalam program komputer. Catatan: Definisi ini digunakan terutama oleh disiplin toleransi kesalahan. Dalam penggunaan umum, istilah "kesalahan" dan "bug" digunakan untuk mengekspresikan arti ini. Lihat juga: kesalahan data sensitif; kesalahan sensitif program; kesalahan yang setara; masking kesalahan; kesalahan intermiten.


Saya pikir definisi kegagalan adalah yang paling relevan. Semuanya dimulai dengan kesalahan, apakah itu dalam persyaratan, desain, implementasi, atau uji kasus / prosedur. Jika kesalahan ini dimanifestasikan dalam perangkat lunak, itu menjadi kesalahan. Kegagalan disebabkan oleh adanya satu atau lebih kesalahan dalam perangkat lunak.

Saya tidak tertarik pada definisi formal kesalahan. Saya sangat suka definisi yang diberikan oleh dukeofgaming dalam jawabannya , namun, yang dalam jawaban ini adalah definisi standar kesalahan IEEE.


3

Jawaban Dan McGrath benar.

  • Bug adalah hasil dari kesalahan pengkodean
  • Cacat adalah penyimpangan dari persyaratan

Mungkin sebuah contoh akan membuatnya lebih jelas.

Contoh: Klien ingin formulir web dapat menyimpan dan menutup jendela.

Skenario # 1: Formulir web memiliki tombol simpan, dan tombol tutup lainnya. Hasil: Cacat, karena klien ingin tombol 1 untuk menyimpan dan menutup jendela. Pengembang disalahpahami dan dibuat secara terpisah. Karena kedua tombol menjalankan persyaratannya, itu bukan bug, tetapi cacat karena tidak memenuhi persyaratan klien.

Skenario # 2: Formulir web memiliki tombol simpan & tutup, tetapi hanya menyimpan tetapi tidak menutup. Hasil: Bug. Karena tombolnya tidak berfungsi seperti yang disyaratkan / diharapkan. Pengembang tahu itu seharusnya menghasilkan hasil itu tetapi pada akhirnya tidak. (mungkin kesalahan pengkodean)

Tidak yakin apakah ini membuatnya lebih jelas.

p / s: dari sudut pandang pengembang (saya dulu), baik cacat maupun bug sama pentingnya. Kami masih akan memperbaikinya.

Kami bahkan menemukan anomali aneh, yang kami kategorikan dalam bug dan kami terus berusaha mencari tahu apa penyebabnya dan bagaimana cara memperbaikinya. Mengoreksi bug tidak membuatnya sepele dibandingkan dengan cacat.


Apa yang kita sebut persyaratan salah?
gnasher729

@ gnasher729 jika dengan persyaratan yang salah, Anda berarti pemrogram salah paham persyaratan, maka saya akan berpikir bahwa itu cacat. Tetapi jika Anda memaksudkan persyaratan yang salah karena pengguna memberikan persyaratan yang salah yang mengakibatkan pekerjaan akhir tidak menyelesaikan masalah awal, maka hal itu melampaui bug dan cacat karena ini merupakan masalah dengan sesi pengumpulan persyaratan daripada dengan pengembangan.
tctham

0

Perbedaannya adalah bahwa istilah "bug" terdengar ajaib. Seolah-olah suatu program dapat secara acak memiliki bug di dalamnya setelah Anda selesai pemrograman. Jika memiliki bug acak maka itu berarti Anda tidak sesuai dengan spesifikasi dan program Anda salah.

Cacat berarti kesalahan ketika program tidak sesuai dengan spesifikasi. Ini lebih parah dan pada dasarnya mengatakan, setiap kesalahan adalah masalah besar dengan program ini dan ini berarti bahwa program tersebut tidak cocok untuk dirilis.

Perbedaannya terletak pada sikap para programmer yang menggunakan istilah tersebut. Ada jutaan program yang dirilis dengan bug dan orang-orang baik-baik saja dengan itu karena mereka menerima untuk beberapa alasan bahwa bug itu ajaib dan acak dan bahwa setiap program mengandung setidaknya satu bug. Namun, seorang programmer yang menggunakan istilah "cacat" mungkin menjadi tidak nyaman dengan merilis program dengan cacat karena istilah tersebut menyiratkan tingkat keparahan yang lebih besar.

Implikasi dari lebih memilih satu istilah daripada yang lain mempengaruhi kita setiap hari.


0

Menurut Dependability: konsep dan terminologi dasar :

Kegagalan sistem terjadi ketika layanan yang diberikan menyimpang dari memenuhi fungsi sistem, yang terakhir menjadi tujuan sistem. Sebuah kesalahan adalah bagian dari sistem negara yang bertanggung jawab untuk menyebabkan kegagalan berikutnya: kesalahan yang mempengaruhi layanan merupakan indikasi bahwa terjadi kegagalan atau telah terjadi. Penyebab kesalahan yang diputuskan atau dihipotesiskan adalah kesalahan .

Saya mengerti cacat hanya sebagai nama lain untuk kesalahan.

Bug membingungkan dan dapat mewakili kesalahan atau kegagalan tergantung pada konteksnya.

Perhatikan bahwa tidak ada spesifikasi yang disebutkan: bahkan spesifikasi dapat salah.


0

Ini adalah salah satu yang saya lakukan sebelumnya untuk majikan saya Q-LEAP berdasarkan kosa kata ISTQB dan saya juga memeriksa kosa kata IEEE. Nikmati.

Bug dan Cacat? Hal yang sama meskipun orang dapat memiliki diskusi tanpa akhir tentang ini. Kami benar-benar memiliki hal lain yang perlu dikhawatirkan, kehidupan sudah cukup rumit, dll.

masukkan deskripsi gambar di sini

Contoh tentang bagaimana istilah tersebut digunakan di alam bebas, dari "Bagaimana Google Menguji Perangkat Lunak" hal. 113. Buka artikel "Perangkat Lunak IEEE" dan digunakan dengan cara yang sama. Memang, seseorang jarang menemukan kata "cacat" dalam kehidupan nyata.

Life of a Bug

Bug dan laporan bug adalah satu-satunya artefak yang dipahami oleh setiap penguji. Menemukan bug, memperbaiki bug, memperbaiki bug, dan memperbaiki bug adalah detak jantung dan alur kerja untuk kualitas perangkat lunak. Ini adalah bagian dari pengujian yang paling konvensional di Google, tetapi masih ada beberapa penyimpangan yang menarik dari norma. Untuk bagian ini, kami mengabaikan bug yang diajukan untuk melacak item kerja dan menggunakan istilah tersebut untuk mengidentifikasi kode rusak yang sebenarnya. Dengan demikian, bug sering mewakili alur kerja sehari-hari dan sehari-hari untuk tim teknik.

Kutu lahir. Bug ditemukan dan diajukan oleh semua orang di Google. Manajer Produk mengajukan bug ketika mereka menemukan masalah di build awal yang berbeda dari spesifikasi / pemikiran mereka. Pengembang file bug ketika mereka menyadari mereka secara tidak sengaja memeriksa dalam suatu masalah, atau menemukan masalah di tempat lain dalam basis kode, atau saat dogfooding produk Google. Bug juga datang dari lapangan, dari penguji berbasis sumber daya, pengujian vendor eksternal, dan diajukan oleh Manajer Komunitas yang memantau Grup Google khusus produk. Banyak versi internal aplikasi juga memiliki cara satu klik cepat untuk mengajukan bug, seperti Google maps. Dan, kadang-kadang, program perangkat lunak membuat bug melalui API.


0

Di luar bug / tugas / tiket / cacat / masalah / contoh sistem penelusuran apa pun, kata-kata ini tidak memiliki makna yang pasti dan karenanya membahas perbedaan di antara mereka tidak ada artinya. Ketika Anda menyelesaikan alur kerja Anda, Anda harus menyelesaikan terminologi dan memberikan deskripsi.

Di lingkungan saya saat ini "cacat" adalah barang apa pun di Jira. Sepertinya Jira sendiri menggunakan istilah "masalah". Kami mungkin telah mewarisinya dari beberapa sistem sebelumnya. "Bug" adalah jenis masalah ketika sesuatu tidak berfungsi seperti yang diharapkan dan dijelaskan dalam dokumentasi. "Permintaan fitur" ketika sesuatu berfungsi seperti yang diharapkan tetapi perbaikan diinginkan (itu bisa jelas dan penting, tetapi jika perilaku saat ini dijelaskan itu masih permintaan fitur). Ada lebih banyak jenis tetapi 2 digunakan oleh orang-orang di luar tim pengembangan untuk meminta sesuatu darinya.

Jika Anda memilih nama untuk jenis masalah, "bug" dan "cacat" terdengar mirip dengan saya. Perbedaan di antara mereka adalah gaya. Karena bahasa Inggris bukan bahasa ibu saya, saya tidak dapat benar-benar melihatnya dan tidak yakin apakah yang saya lihat benar.

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.