Rabu, 19 Mei 2021

Standar Uji Perangkat Lunak

 

 5 Metode Pengujian Tentang Security


    Sebelum kita menjelaskan 5 metode pengujian tentang security, kita harus mengetahui terlebih dahulu apa itu security testing
    

Pengertian Security Testing

  Security testing merupakan jenis pengujian software yang dilakukan untuk mengidentifikasi kerentanan serta memastikan bahwa data dan sumber daya sistem di dalamnya sudah terlindungi dengan baik dari para peretas. Pada setiap pengujian pasti memiliki tujuan, maka tujuan dari pengujian ini untuk menemukan semua celah dan kelemahan sistem yang dapat mengakibatkan hilangnya informasi atau reputasi.
    Dalam security testing khususnya yang dilakukan pada situs website dan aplikasi, akan ada empat area utama yang akan diperhatikan adalah:
  • Network security: Pengujian ini dilakukan untuk mencari kerentanan dalam infrastruktur jaringan.
  • System software security: Pengujian untuk menilai bagaimana tingkat kelemahan berbagai perangkat lunak tempat aplikasi bekerja seperti operating system, database system.
  • Client-side application security: pengujian ini dapat memastikan bahwa sisi klien seperti browser tidak dapat dimanipulasi.
  • Server-side application security: pengujian untuk memastikan bahwa sisi server memiliki keamanan yang kuat dan dapat memblokir beragam gangguan.
    Setelah mengetahui pengertian dari security testing kita dapat langsung membahas tentang 5 metode pengujian tentang security 

5 Metode Pengujian Tentang Security

1. Security Scanning
Pemindaian keamanan adalah awal yang baik untuk memeriksa status keamanan. Selama pemindaian, memeriksa risiko keamanan apa yang harus ditangani dalam infrastruktur TI tertentu. Ini adalah pemeriksaan cepat untuk potensi kebocoran keamanan, risiko jaringan, dan masalah keamanan. Security scanning dilakukan untuk menyingkirkan ancaman dunia maya untuk selamanya. Dengan melakukan pemindaian keamanan, bisnis dapat melindungi diri mereka sendiri dari ancaman serangan dunia maya yang terus berkembang.

2. Security Auditing
Audit keamanan jaringan adalah penilaian atau evaluasi teknis yang sistematis dan terukur mengenai keamanan komputer dan aplikasinya. Audit keamanan jaringan ini terdiri dari dua bagian, yaitu:
  • Penilaian otomatis : berkaitan dengan pembuatan laporan audit yang dijalankan oleh suatu perangkat lunak terhadap perubahan status file dalam komputer: create, modify, delete.
  • Penilaian non-otomatis : berhubungan dengan kegiatan wawancara kepada staff yang menangani komputer, evaluasi kerawanan dan keamanan komputer, pengamatan terhadap semua akses ke sistem operasi dan software aplikasinya, serta analisis semua akses fisik terhadap sistem komputer secara menyeluruh.
3. Vulnerability Scanning
Tahapan dilakukan scanning network dengan memanfaatkan berbagai tools network scanning dan vulnerability scanner online. Tujuan yang ingin dicapai adalah memperoleh informasi vulnerability network tersebut, misal daftar port yang terbuka, bug pada aplikasi server, dan lain-lain yang biasanya fase ini disebut sebagai passive attack.

4. Risk Assesment
Penilaian risiko adalah pandangan menyeluruh untuk mengidentifikasi hal-hal, situasi, proses, dll. yang dapat menyebabkan kerugian, terutama bagi orang-orang. Setelah identifikasi dibuat, selanjutnya lakukan analisis dan evaluasi seberapa besar kemungkinan dan seberapa parah risikonya. Ketika keputusan telah dibuat maka selanjutnya dapat memutuskan tindakan apa yang harus dilakukan untuk secara efektif menghilangkan atau mengendalikan kerusakan yang terjadi. Penilaian risiko bisa juga dibilang sebagai istilah yang digunakan untuk menggambarkan keseluruhan proses atau metode di mana:
  • Identifikasi bahaya dan faktor risiko yang berpotensi menyebabkan bahaya (identifikasi bahaya).
  • Menganalisis dan mengevaluasi risiko yang terkait dengan bahaya itu (analisis risiko, dan evaluasi risiko).
  • Tentukan cara yang tepat untuk menghilangkan bahaya, atau kendalikan risiko bila bahaya tidak dapat dihilangkan (pengendalian risiko).
5. Penetration Testing
    Penetration Testing atau Pen Testing adalah jenis pengujian keamanan yang digunakan untuk mengungkap kerentanan, ancaman, dan risiko yang dapat dieksploitasi oleh penyerang dalam aplikasi perangkat lunak, jaringan, atau aplikasi web. Tujuan pengujian penetrasi adalah untuk mengidentifikasi dan menguji semua kemungkinan kerentanan keamanan yang ada dalam aplikasi perangkat lunak. Pengujian penetrasi juga disebut Pen Test. Penetrasi sangat penting dalam suatu perusahaan karena:
  • Sektor keuangan seperti Bank, Perbankan Investasi, Bursa Perdagangan Saham ingin datanya diamankan, dan pengujian penetrasi sangat penting untuk memastikan keamanan.
  • Jika sistem perangkat lunak sudah diretas dan organisasi ingin menentukan apakah masih ada ancaman dalam sistem untuk menghindari peretasan di masa mendatang.
  • Pengujian Penetrasi Proaktif adalah perlindungan terbaik terhadap peretas.
Jenis penetration testing
  • Black box testing: penguji tidak memiliki pengetahuan tentang sistem yang akan diuji. Dia bertanggung jawab untuk mengumpulkan informasi tentang jaringan atau sistem target.
  • White box testing: penguji biasanya diberikan informasi lengkap tentang jaringan atau sistem yang akan diuji termasuk skema alamat IP, kode sumber, detail OS, dll. Ini dapat dianggap sebagai simulasi serangan oleh siapapun. Sumber internal (Karyawan Organisasi).
  • Grey box testing: penguji diberikan pengetahuan parsial tentang sistem. Ini dapat dianggap sebagai serangan oleh peretas eksternal yang telah memperoleh akses tidak sah ke dokumen infrastruktur jaringan organisasi.


Sumber : 

Rabu, 07 April 2021

REVIEW MATERI

 DASAR-DASAR UJI PERANGKAT LUNAK

    Pengujian bertujuan untuk mencari kesalahan. Pengujian yang baik adalah pengujian yang memiliki kemungkinan besar dalam menemukan kesalahan. 

    Karakteristik pengujian menurut Kaner, Falk, dan Nguyen [Kan93] menggambarkan atribut-atribut sebagai berikut untuk pengujian yang "baik" :
  1. Pengujian yang baik memiliki probabilitas tinggi untuk menemukan kesalahan. Tujuan pengujian ini harus memahami perangkat lunak dan mencoba untuk mengembangkan sebuah gambaran  bagaimana perangkat lunak bisa gagal;
  2. Pengujian yang baik tidak berulang-ulang. Tidak ada manfaatnya jika melakukan pengujian yang memiliki tujuan yang sama dengan pengujian yang lain;
  3. Pengujian yang baik harus menjadi "bibit terbaik". Keterbatasan waktu dan sumber daya dapat mengurangi pelaksanaan bahkan hanya sebagian kecil dari pengujian ini;
  4. Pengujian yang baik harus tidak terlalu sederhana atau terlalu rumit. Meskipun memungkinkan untuk menggabungkan serangkaian pengujian menjadi satu kasus pengujian saja, akan mengakibatkan terjadinya banyak kesalahan yang harus ditutupi. Secara umum, pengujian harus dilaksanakan secara terpisah. 
    Pengujian perangkat lunak (software testing) adalah suatu teknik yang digunakan untuk menentukan bahwa perangkat lunak yang dihasilkan telah memecahkan masalah.

Tiga konsep yang harus diperhatikan dalam Pengujian Perangkat Lunak: 
  1. Demonstrasi validitas perangkat lunak pada setiap tahapan pembangunan sistem;
  2. Penentuan validitas sistem akhir terhadap pemakai dan kebutuhan;
  3. Pemeriksaan implementasi sistem dengan menjalankan sistem pada suatu contoh data uji.
Dua kelas imput yang disediakan untuk proses uji perangkat lunak:
  1. Konfigurasi software termasuk software requiment specification, design specification, dan source code;
  2. Konfigurasi uji termasuk test plan & procedure, perangkat testing yang akan digunakan, test case dan hasil yang diharapkan.
Kemampuan sebuah perangkat lunak untuk bisa diuji: 
  1. Kemampuan untuk bisa dioperasikan (Operability). Jika dirancang dan diimplementasikan dengan kualitas, relative sedikit kesalahan yang akan menghambat pelaksanaan penguji yang memungkinkan penguji berlanjut tanpa penyesuaian dan mulai dari awal;
  2. Kemampuan untuk bisa diobservasi (Observability). Input tersedia sebagai bagian dari pengujian yang menghasilkan output berbeda. Bagian dan variabel sistem terlihat atau dapat dipertanyakan selama eksekusi output yang salah bisa dengan mudah diidentifikasi;
  3. Kemampuan untuk dapat dikontrol (Controllability). Semua output yang mungkin dapat dihasilkan melalui beberapa kombinasi dari input, dan format I/O konsisten dan terstrukur. State dan variabel dari perangkat lunak dan perangkat keras dapat dikontrol langsung oleh penguji;
  4. Kemampuan untuk dapat disusun (Decomposability). Sistem perangkat lunak dibangun dari modul independen yang dapat diuji secara independen pula;
  5. Kesederhanaan (Simplicity). Program ini harus menunjukan kesederhanaan fungsionalitas, kesederhanaan structural, kesederhanaan kode;
  6. Stabilitas (Stability). Perubahan pada perangkat lunak jarang dikontrol ketika perubahan itu terjadi dan tidak membatalkan pengujian-pengujian yang telah ada. Perangkat lunak ini pulih melalui kegagalan;
  7. Kemampuan untuk bisa dipahami (Understandability). Perancangan arsitektur dan ketergantungan antara komponen-komponen internal, eksternal, dan  yang dipakai bersama dipahami dengan baik. Dokumentasi teknis dapat langsung diakses, terorganisasi dengan baik, spesifik dan terperinci, dan akurat. Perubahan rancangan perlu dikomunikasikan dengan penguji. 


TYPE TESTING

    Di dalam suatu perusahaan IT atau website production yang memproduksi software atau website, pastinya memiliki 1 atau bahkan 3 orang software tester yang bertugas melakukan testing software atau website, seorang quality assurance atau tester bertugas mempersiapkan kasus pengujian untuk setiap case dan skenarionya menyelesaikan aktivitas persyaratan suatu sistem. 

Dua jenis acceptance testing biasa dilakukan oleh perusahaan pengembang perangkat lunak, yakni: 
  1. Alpha Test  Pengujian yang dilakukan pada perangkat lunak oleh end-user dengan adanya supervisi dan kontrol dari pengembang perangkat lunak;
  2. Beta Test  Pengujian yang dilakukan pada perangkat lunak oleh end-user tanpa adanya supervisi dan kontrol dari pengembang perangkat lunak. Jika ditemukan masalah, maka konsumen pemakai akan melaporkannya kepada pengembang perangkat lunak tersebut.
Sembilan jenis-jenis pengujian yang perlu diketahui oleh seorang quality assurance pada software, yaitu: 
  1. System Testing    ⇒ Pengujian untuk memastikan bahwa keseluruhan sistem tidak berfungsi dan bahwa sistem telah memenuhi persyaratan pengguna (user requirement). System testing biasanya dilakukan di akhir setiap iterasi untuk mengidentifikasi isu-isu penting, seperti masalah performance dari software. Biasanya test ini harus dilakukan sesering mungkin;
  2. Unit Testing    Pengujian software di mana QA menguji suatu unit program layak untuk tidaknya dipakai. Unit testing ini fokusnya pada pengujian unit yang terkecil pada desain perangkat lunak (komponen atau modul perangkat lunak). Karena dalam sebuah software banyak memiliki unit-unit kecil maka untuk mengujinya biasanya dibuat program kecil atau main program untuk menguji unit-unit software. Unit-unit kecil ini dapat berupa fitur atau fungsi dan pengujian unit biasanya dilakukan saat kode program dibuat;
  3. Integration Testing   Berbeda dengan unit testing, integration testing adalah pengujian dari hasil pengabungan unit-unit yang ada di dalam software. Biasanya QA menguji bagaimana unit-unit tersebut bekerja sebagai suatu kombinasi, bukan lagi sebagai suatu unit yang individual. Integration testing sebaiknya dilakukan secara bertahap untuk menghindari kesulitan penelusuran jika terjadi kesalahan error / bug;
  4. Usability Testing   Usability test adalah pengujian yang dilakukan untuk memastikan apakah software sudah sesuai dengan persyaratan dari pengguna. Umumnya usability test mengevaluasi persyaratan fungsional program dan kualitas dari user interface. User berinteraksi dengan sistem untuk menentukan apakah fungsi telah seperti yang diharapkan dan apakah user interface membuat sistem dapat mudah digunakan. Pengujian ini sering dilakukan untuk mendapatkan feedback yang cepat dalam meningkatkan interface dan mengkoreksi kesalahan dalam komponen perangkat lunak;
  5. Performance Testing   ⇒ Integration dan usability test yang menentukan apakah system dapat memenuhi kriteria kinerja berbasis waktu seperti response time atau throughputResponse time menentukan batas waktu maksimum yang diijinkan dari respon software;
  6. Smoke Testing  Pengujian yang akan dilakukan setelah software yang di dibuat untuk memastikan bahwa fungsi-fungsi penting dari program tersebut bekerja dengan baik. Smoke test biasanya dilakukan setiap hari atau beberapa kali per minggu;
  7. Stress Testing  Stress Testing adalah pengujian yang biasanya dilakukan dalam membuat sebuah website, dimana stress testing dilakukan untuk mengetahui sekuat apa server website kita menampung visitor dalam website tersebut, dengan cara melakukan hit dummy ke website menggunakan tools;
  8. Sanity Testing  Software testing yang akan dilakukan setelah software yang dibuat sudah hampir jadi sekaligus dengan fungsi-fungsi lengkapnya yang sudah jadi, dengan catatan bug-bug yang ditemukan pada saat smoke testing sudah berhasil di perbaiki. 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.
  9. Regression Testing    Jenis pengujian yang dilakukan saat mengembangkan software untuk mengetahui apakah fungsional sistem berjalan dengan baik. Singkatnya, tujuan utamanya yaitu untuk meminimalisir bug yang mungkin akan muncul setelah adanya pembaharuan fitur pada software.

APLIKASI YANG AKAN DI UJI COBA
    Kami akan melakukan sebuah tester aplikasi yaitu aplikasi e-voting berbasis website. Dimana program tersebut kami buat dalam rangka memenuhi tugas akhir semester 4 dengan mata kuliah Rekayasa Perangkat Lunak, oleh sebab itu dikarenakan belum melakukan sebuah testing yang benar maka kami memutuskan untuk melakukan pengujian pada program yang kami buat dahulu. Untuk memenuhi tugas mata kuliah Standar Uji Perangkat Lunak. Aplikasi ini terdapat 3 tampilan, yang pertama tampilan login, tampilan visi dan misi dan tampilan voting.


Tampilan Login


Tampilan Visi dan Misi


Tampilan Voting



Semoga artikel ini dapat membantu dalam menjawab pertanyaan-pertanyaan mengenai dasar dan tipe uji perangkat lunak. Mohon maaf bila ada kesalahan dalam penulisan. Karena kesalahan hanya milik manusia dan kebenaran hanya milik Allah swt. Terima kasih☺️

---------------------------------------------------------------------------------------------------------------------------------
Daftar Pustaka : 

Noniisphalisa.wordpress.com. Testing dan Implementasi Perangkat Lunak https://noniisphalisa.wordpress.com/2014/12/07/testing-dan-implementasi-perangkat-lunak/

Medium.com. 
Jenis-jenis software testing diakses melalui  https://medium.com/dot-intern/jenis-jenis-software-testing-a5bf2345c79d

Cybermatika.blogspot.com. Dasar-dasar Pengujian Perangkat Lunak diakses melalui https://cybermatika.blogspot.com/2016/01/dasar-dasar-pengujian-perangakat-lunak.html?m=1
-----------------------------------------------------------------------------------------------------------------------------
Create by :
Farhan Muhammad Naufal
Nabila Nur Fransiska R
Dwi Suci Anggraeni