Sanity Testingadalah pengujian yang dilakukan terhadap sebuah perangkat lunak dan hanya berfokus pada feature atau fungsi baru atau fungsi yang dilakukan perubahan, baik perubahan itu merupakan perubahan flow bisnis atau perubahan karena ditemukannya kesalahan atau bugs pada perangkat lunak versi sebelumnya.Tujuan dari sanity testing ini tentunya untuk memastikan bahwa bug-bug yang telah di perbaiki pada saat smoke testing sudah selesai diperbaiki dan tidak ada masalah lebih lanjut serta untuk menentukan bahwa fungsi yang diinginkan bekerja seperti yang diharapkan.
Apa Itu Smoke Testing?
Smoke Testing adalah pengujian yang berfokus pada perangkat lunak secara keseluruhan, namun hanya berfokus pada main function, biasanya mengutamakan positif case, namun tidak menutup kemungkinan dilakukan pada negatif case yang sifatnya critical. Tujuan dari smoke testing ini adalah untuk reject aplikasi yang sudah rusak sejak awal development, sehingga tim QA tidak banyak membuang-buang waktu menginstal dan menguji aplikasi perangkat lunak.
Apa Itu Regression Testing?
Regression Testing adalah pengujian terhadap perangkat lunak secara menyeluruh dan sedetail mungkin. Tujuan dari regression testing untuk memastikan bahwa perubahan kode baru seharusnya tidak memiliki efek samping pada fungsi yang ada, sehingga dapat dipastikan bahwa kode lama masih berfungsi setelah perubahan kode terbaru dilakukan.
Masih bingung yah ?
Coba perhatikan dengan melihat diagram dibawah ini :
Belum kelihatan bedanya...!
Perbedaan antara Sanity Testing dan Smoke Testing, Regression Testing :
Sanity Testing :
1. Sanity Testing dilakukan untuk memeriksa fungsi baru / bug yang telah diperbaiki.
2. Dilakukan oleh QA.
3. Sanity Testing adalah bagian dari penerimaan testing.
4. Sanity Testing biasanya tidak memiliki script dan tidak didokumentasikan.
5. Direncanakan ketika tidak ada cukup waktu untuk pengujian mendalam
Smoke Testing :
1. Smoke Testing dilakukan untuk memastikan bahwa fungsi program bekerja dengan baik.
2. Dilakukan oleh Developer dan QA.
3. Smoke Testing adalah bagian dari pengujian regresi.
4. Smoke Testing biasanya memiliki script dan didokumentasikan.
5. Dilakukan biasanya setiap ada build baru
Regression Testing :
1. Regression Testing dilakukan untuk menguji fungsionalitas semua area yang terpengaruh setelah fungsi/kode baru berubah di build yang ada. 2. Dilakukan oleh QA.3. Mencakup pengujian terperinci yang menargetkan semua area yang terpengaruh setelah fungsionalitas baru ditambahkan4. Dijalankan oleh penguji, sebagian besar melalui automation 5. Regression Testing adalah serangkaian dari Sanity Testing dan Smoke Testing.6. Biasanya dilakukan, ketika penguji memiliki cukup waktuSekian artikel saya tentang Sanity, Smoke, Regression Testing. Semoga bermanfaat!
Pengertian dari non-functional testing adalah pengujian dari aspek non-fungsional suatu aplikasi, seperti kinerja, keandalan, kegunaan, keamanan, dan sebagainya. Non-functional testing dilakukan setelah functional testing selesai.
Dengan menerapkan non-functional testing, kita dapat meningkatkan kualitas perangkat lunak hingga tingkat yang sangat tinggi. Sebenarnya functional testing juga meningkatkan kualitas, tetapi dengan non-functional testing, kita mempunyai peluang untuk menjadikan perangkat lunak tersebut lebih baik. Pada hakikatnya, non-functional testing sebagai “pemoles” perangkat lunak kita. Pengujian semacam ini bukan tentang apakah perangkat lunak itu berfungsi atau tidak. Sebaliknya, ini tentang seberapa baik perangkat lunak berjalan, dan lain sebagainya.
Biasanya non-functional testing dilakukan menggunakan tools tertentu. Hal ini disebabkan, sulit untuk melakukan pengujian semacam ini secara manual.
Ada beberapa jenis non-functional testing, seperti:
Documentation Testing
Performance Testing
Reliability Testing
Security Testing
Documentation Testing
Documentation testing membantu memperkirakan upaya pengujian yang diperlukan dan menguji cakupannya. Dokumentasi perangkat lunak termasuk test plan, test cases, dan bagian requirements.
Berikut ini merupakan cakupan dalam melakukan documentation testing, yaitu :
Instructions → Jika suatu aktivitas tertentu telah mempunyai instruksi yang spesifik maka tester akan mulai membuat scenario test untuk aktivitas tersebut.
Examples → Example lebih menjelaskan tentang contoh langkah-langkah yang dilakukan agar menampilkan output yang diharapkan dan input apa saja yang dibutuhkan.
Messages → Ketika kita menemukan masalah, misalnya error message, kita harus memverifikasi bahwa dokumentasi untuk pesan itu telah benar.
Samples → Sampel terkadang didokumentasikan untuk hal-hal seperti inisialisasi atau mengeset parameter file input.
Installation Testing
Installation testing adalah suatu pengujian yang bertujuan untuk menginstal dan mengatur perangkat lunak baru dengan sukses. Proses pengujian dapat melibatkan proses install/uninstall sepenuhnya, sebagian atau upgrade.
Berikut ini tips untuk melakukan installation testing, antara lain :
Instal versi lengkap dari aplikasi
Membuat automate testing
Mengecek ketersediaan disk space untuk proses instalasi
Menggunakan Distributed Testing Environment
Secara otomatis memeriksa file yang diinstal setelah instalasi
Mengkonfirmasi perubahan registri setelah instalasi
Negative testing dalam installation testing
Uninstallation testing
Performance Testing
Performance testing adalah jenis pengujian perangkat lunak yang bertujuan untuk memastikan aplikasi akan bekerja dengan baik di bawah beban kerja yang diharapkan.
Terdapat beberapa jenis dari performance testing, antara lain :
Load Testing → Jenis performance testing yang dilakukan untuk mengevaluasi perilaku suatu sistem dengan kondisi peningkatan beban kerja.
Stress Testing → Jenis performance testing yang dilakukan untuk mengevaluasi perilaku sistem dengan kondisi di luar batas beban kerja yang diantisipasi.
Endurance Testing → Jenis performance testing yang dilakukan untuk mengevaluasi perilaku suatu sistem ketika beban kerja yang signifikan diberikan terus menerus.
Spike Testing → Jenis performance testing yang dilakukan untuk mengevaluasi perilaku suatu sistem ketika beban tiba-tiba dan secara substansial meningkat.
Reliability Testing
Reliability testing bertujuan untuk memastikan bahwa produk tersebut bebas dari kesalahan dan dapat diandalkan untuk tujuan yang dimaksud. Pengujian ini dilakukan dengan menjalankan aplikasi untuk menemukan kegagalan-kegagalan sebelum sistem di deploy.
Terdapat beberapa jenis reliability testing, antara lain :
Feature Testing → Setiap fungsi dalam perangkat lunak harus dijalankan setidaknya satu kali. Selain itu, interaksi antara dua fungsi atau lebih harus dikurangi
Regression Testing → Setiap kali ada fungsionalitas baru ditambahkan atau fungsionalitas lama dihapus dalam aplikasi, jadi harus dilakukan regression testing untuk memastikan tidak ada bug baru.
Load Testing → Load testing dilakukan untuk menguji apakah aplikasi mendukung beban yang diperlukan tanpa mengalami breakdown. Untuk menemukan breakpoint suatu aplikasi, beban ditingkatkan secara bertahap hingga aplikasi mengalami hung, breakdown, unavailable, dll.
Objectives of Reliability Testing → Pembatasan seperti perilaku perangkat lunak dalam kondisi tertentu, tujuan yang layak (feasible objectives), dan batasan waktu (time constraints) berlaku sebelum menentukan objectives of reliability testing.
Security Testing
Security testing adalah jenis pengujian perangkat lunak yang bertujuan untuk memastikan bahwa aplikasi bebas dari loopholes. Security testing itu tentang menemukan kelemahan sistem yang mungkin mengakibatkan kehilangan informasi.
Terdapat berberapa area yang fokus diuji dalam security testing ini, antara lain :
Network Security → Mencari kerentanan dalam infrastruktur jaringan.
System Software Security → Mencari kelemahan di berbagai perangkat lunak yang bergantung pada aplikasi.
Client-side Application Security → Memastikan bahwa data dari client-side tidak dapat dimanipulasi.
Server-side Application Security → Memastikan bahwa kode server dan teknologinya cukup kuat untuk menangkis gangguan apa pun.
Selama pembuatan perangkat lunak tentunya kita sering menemukanbug atauerror. Sehingga, untuk mengurangi atau menghindari banyaknyabug maka diperlukan pengujian perangkat lunak/software testing.Software testingadalah cara menilai produk perangkat lunak untuk membedakan antara informasi yang diberikan dan hasil yang diharapkan. Selain itu, untuk mengevaluasi karakteristik suatu produk. Pada dasarnyasoftware testingpenting dilakukan untuk menjaga kualitas perangkat lunak tersebut. Tetapi, apakah kalian sudah mengetahui jenis-jenissoftware testing?
Jenis-jenis software testing tergantung pada berbagai faktor seperti project requirements, anggaran, timeline, keahlian, dan kesesuaian. Terdapat dua jenis pengujian yang dilakukan oleh QA atau Software Tester yaitu functional testing dan non-functional testing. Pada artikel ini akan dibahas tentang jenis-jenis software testing pada functional testing.
Functional Testing adalah jenis pengujian yang memverifikasi bahwa setiap fungsi aplikasi telah beroperasi sesuai dengan requirement specification. Functional testing berfokus pada manual dan automation testing.
Jenis-jenis functional testing, antara lain :
Unit Testing
Integration Testing
System Testing
Interface Testing
Regression Testing
User Acceptance Testing
Unit Testing
Unit testing adalah salah satu tingkat dari software testing di mana masing-masing unit/komponen perangkat lunak diuji. Tujuannya adalah untuk memvalidasi bahwa setiap unit perangkat lunak telah berfungsi sesuai dengan rancangannya. Unit adalah bagian terkecil yang dapat diuji dari perangkat lunak. Biasanya mempunyai satu atau beberapa input dan biasanya mempunyai satu output.
Integration Testing
Integration testing adalah salah satu tingkat dari software testing di mana masing-masing unit digabungkan dan diuji sebagai kelompok. Tujuan dari tingkat pengujian ini adalah untuk mengekspos kesalahan dalam interaksi antara unit yang terintegrasi.
Terdapat beberapa pendekatan dalam integration testing, antara lain :
Big Bang → Semua atau sebagian besar unit digabungkan dan diuji sekaligus. Pendekatan ini diambil ketika tim tester menerima seluruh perangkat lunak dalam satu bundel.
Top Down → Unit tingkat atas diuji terlebih dahulu.
Bottom Up → Unit level bawah diuji terlebih dahulu.
Sandwich / Hybrid → Kombinasi dari pendekatan Top Down dan Bottom Up.
System Testing
System testing adalah salah satu tingkat dari software testing di mana perangkat lunak yang lengkap dan terintegrasi diuji. Tujuan dari pengujian ini adalah untuk mengevaluasi kepatuhan sistem dengan persyaratan yang ditentukan.
Task yang dilakukan dengan menggunakan system testing, yaitu :
System Test Plan → Prepare, Review, Rework, Baseline
System Test Cases → Prepare, Review, Rework, Baseline
System Test → Perform
Interface Testing
Ketika aplikasi dikembangkan, maka ada beberapa komponen seperti server, database, dll. Koneksi yang mengintegrasikan dan memfasilitasi komunikasi antara komponen-komponen ini disebut sebagai Interface. Fungsi dari interface adalah memverifikasi bahwa komunikasi antara sistem dilakukan dengan benar.
Berikut ini tiga fase dalam interface testing :
Configuration & development → Ketika interface dikonfigurasi, dan begitu pengembangan dimulai, konfigurasi perlu diverifikasi sesuai kebutuhan.
Validation → Ketika pengembangan selesai, interface perlu divalidasi dan diverifikasi, ini dapat dilakukan sebagai bagian dari pengujian unit juga.
Maintenance → Ketika kita mulai mengembangkan interface, kita perlu memastikan bahwa tidak ada bug apapun dalam kode yang dibuat sehingga diperlukan sebuah pengujian yang harus dijalankan pada interface.
Regression Testing
Regression testing adalah tahap penting & sangat berguna bagi pengembang untuk mengidentifikasi stabilitas produk dengan perubahan requirements. Regression testing adalah pengujian yang dilakukan untuk memverifikasi bahwa perubahan kode pada perangkat lunak tidak memengaruhi fungsionalitas produk yang ada.
Terdapat beberapa teknik dalam regression testing, antara lain :
Retest all → Seluruh test case di test suite dieksekusi kembali untuk memastikan bahwa tidak ada bug yang terjadi karena perubahan kode.
Regression Test Selection → Dalam metode ini, test case dipilih dari test suite untuk dieksekusi kembali. Tidak seluruh suite dieksekusi ulang. Pemilihan test case dilakukan atas dasar perubahan kode dalam modul.
Test Case Prioritization → Test case dengan prioritas tinggi dieksekusi terlebih dahulu daripada prioritas menengah dan rendah. Prioritas test case tergantung pada kekritisan dan dampaknya pada produk.
Hybrid → Teknik hybrid adalah kombinasi dari pemilihan regression testing dan priotitas test case. Teknik ini memilih test case yang dieksekusi kembali dengan bergantung pada prioritasnya.
User Acceptance Testing
Acceptance testing adalah salah satu tingkat dari software testing di mana suatu sistem diuji untuk dapat diterima. Tujuan dari pengujian ini adalah untuk mengevaluasi kesesuaian sistem dengan business requirements dan menilai apakah sudah layak untuk delivery.
Terdapat beberapa jenis user acceptance testing, antara lain :
Business Acceptance Testing (BAT) → Ini untuk menilai apakah produk memenuhi tujuan bisnis atau tidak. Ini terutama berfokus pada manfaat bisnis karena kemungkinan kondisi pasar yang dapat berubah.
Contract Acceptance Testing (CAT) → Ini adalah kontrak yang menentukan bahwa setelah produk ditayangkan, dalam periode yang telah ditentukan, accepteance test harus dilakukan dan harus melewati semua acceptance use cases.
Operational Acceptance Testing (OAT) → Ini untuk menilai kesiapan operasional produk dan merupakan pengujian non-fungsional. Ini terutama mencakup pengujian-pengujian seperti recovery, compatibility, maintainability, technical support availability, reliability, fail-over, localization, dll.
Alpha Testing → Ini untuk menilai produk dalam lingkungan pengembangan/pengujian oleh tim tester khusus yang biasa disebut alpha tester.
Beta Testing → Ini untuk menilai produk dengan menunjukkan kepada end-user yang sebenarnya, biasanya disebut beta testers/beta users, di lingkungan mereka. Umpan balik terus menerus dari pengguna dikumpulkan dan dilakukan perbaikan.