Software Quality Assurance dalam Pengembangan Perangkat Lunak

--

Gambar diperoleh dari Toxsl

Apa itu SQA?

Software Quality Assurance (SQA) merupakan salah satu aspek penting dalam proses pengembangan perangkat lunak yang berfungsi untuk memastikan agar pengembangan suatu perangkat lunak berkualitas tinggi, bebas dari bug, dan memenuhi kebutuhan pengguna. Hadirnya SQA akan membantu pengembangan untuk mengidentifikasi dan mengeliminasi bug secara cepat di fase pengembangan, sehingga proses pengembangan dapat berjalan dengan lebih cepat dan menghasilkan perangkat lunak yang berkualitas tinggi pula.

Manfaat SQA

  1. Mengurangi kecacatan dan bug: SQA dapat membantu mengidentifikasi kecacatan dan bug secara cepat dalam proses pengembangan perangkat lunak. Dengan begini, pengembang dapat menanganinya secara cepat sehingga perangkat lunak yang dihasilkan kemungkinan besar juga bebas dari kecacatan atau bug.
  2. Menghemat waktu: Karena SQA membantu proses penemuan kecacatan atau bug dengan cepat, maka proses perbaikannya akan lebih cepat tanpa perlu menunggu perangkat lunak tersebut selesai terlebih dahulu. Dengan demikian, proses pengembangan menjadi lebih efisien dan cost-effective.
  3. Meningkatkan kualitas perangkat lunak: SQA memastikan perangkat lunak yang dikembangkan memenuhuhi standar yang sudah ditentukan seperti reliability, functionality, performance, dan security. Hal ini menyebabkan perangkat lunak yang dihasilkan lebih robust, efficient, dan secure.
  4. Mitigasi risiko: SQA membantu mengidentifikasi risiko yang mungkin muncul dalam pengembangan perangkat lunak, seperti celah security dalam perangkat lunak kita. SQA juga membantu kita dalam menangani risiko tersebut. Dengan demikian, risiko-risiko yang muncul dalam pengembangan perangkat lunak dapat dikurangi.

Static & Dynamic Analysis

Di dalam SQA, terdapat dua jenis pendekatan yang biasa digunakan dalam melakukan analisis kode, yaitu static analysis dan dynamic analysis.

Static analysis merupakan metode analisis kode yang dilakukan dengan cara memeriksa setiap bagian kode tanpa benar-benar mengeksekusi kode tersebut, untuk menemukan apakah terdapat sebuah isu atau tidak. Metode ini bermanfaat untuk menemukan isu-isu seperti code smells, kesalahan coding, celah security, dan kompleksitas kode yang ditulis.

Untuk melakukan static analysis, kita bisa menggunakan bantu analysis tool yang akan melakukannya secara otomatis ataupun melakukannya secara manual dengan cara menginspeksi dan mereview code yang ditulis.

Di sisi lain, dynamic analysis merupakan metode analisis kode yang melibatkan eksekusi kode sehingga kita dapat memonitor perilakunya secara real-time. Dynamic analysis bermanfaat untuk mengidentifikasi isu-isu yang tidak bisa dilihat melalui static analysis, seperti runtime error, memory leaks, dan sebagainya.

Untuk melakukan dynamic analysis, kita bisa menggunakan teknik-teknik yang sudah umum digunakan dalam dunia pengembangan perangkat lunak, seperti unit testing, integration testing, dan penetration testing.

Apa itu SonarQube?

SonarQube merupakan alat open-source yang biasa digunakan untuk menginspeksi kualitas kode secara kontinyu. Alat ini merupakan salah satu static analysis tool yang bisa digunakan untuk menganalisa dan mengukur kualitas kode dari berbagai bahasa pemrograman, seperti Java, C#, Python, dan sebagainya. SonarQube dapat membawa banyak manfaat dalam pengembangan perangkat lunak karena memberikan analisis yang detail terhadap kode kita, seperti code coverage, code complexity, dan code smells.

Salah satu kelebihan yang dimiliki SonarQube adalah alat ini dapat diintegrasikan secara kontinyu dengan CI/CD. Dengan demikian, SonarQube akan secara otomatis melakukan analisa setiap kali ada perubahan paa kode di repository. Hal ini memungkinkan pengembang untuk memperbaiki isu-isu yang muncul dengan cepat sehingga mencegah isu tersebut menjadi semakin besar.

Bagaimana Penerapan SQA pada Kelompok PPLunny?

Pada proyek PPL kali ini, kelompok kami memutuskan untuk menggunakan SonarQube sebagai alat untuk membantu proses QA. Dengan menggunakan SonarQube, kelompok kami dapat memantau secara langsung aspek-aspek penting dari kode yang sudah kami buat melalui dashboard yang disediakan oleh SonarQube. Aspek-aspek tersebut meliputi reliability (bugs), security (vulnerabilities), dan maintainability (debt). Berikut adalah contoh tampilan dashboard SonarQube kelompok kami.

Dashboard SonarQube PPLunny

Dari gambar di atas, dapat di lihat bahwa kode yang kami buat sudah cukup baik karena tidak memiliki bugs, vulnarabilities, ataupun code smells. Selain itu, coverage dari kode kami juga sudah mencapai 100%. Dengan demikian, kualitas kode yang kami buat sudah dapat dikatakan cukup baik.

Adapun contoh tampilan SonarQube ketika dihadapkan dengan isu code smells adalah sebagai berikut.

Pengidentifikasian Code Smells oleh SonarQube

Dari tampilan di atas, kita dapat melihat bahwa SonarQube dapat mengidentifikasi code smells yang ada pada kode kami sekaligus mengkategorikannya berdasarkan file dan juga tingkat keparahannya. Dengan demikian, kami dapat memperbaiki code smells tersebut dengan lebih cepat dan nyaman.

Selain mengidentifikasi isu-isu yang ada, SonarQube juga menyediakan contoh solusi yang dapat digunakan agar code smells pada kode kita dapat dihapuskan. Berikut adalah contohnya.

Contoh Solusi terhadap Code Smells

Dari contoh di atas, kita dapat melihat contoh penulisan kode yang benar terkait penggunaan Exception yang lebih spesifik.

Selain mengidentifikasi code smells, masih banyak lagi kegunaan SonarQube lainnya, seperti mengidentifikasi bugs, isu security, duplikasi code, kompleksitas kode, dan lainnya.

Dari penjelasan di atas, dapat disimpulkan bahwa penggunaan SonarQube membawa manfaat yang sangat besar dalam pengembangan perangkat lunak. Dengan adanya dashboard yang disediakan oleh SonarQube, masing-masing anggota tim dapat memonitor sendiri kode-kode yang sudah ia buat untuk memastikan kode yang ia buat sudah memenuhi standard code quality. Dengan demikian, kode yang dibuat diharapkan bersifat reliable, maintanable, dan secure.

Static Analysis Tools Lainnya untuk Python dan Django

Selain menggunakan Sonarqube, jika kalian menggunakan Python atau Django, maka kalian bisa juga menggunakan PyLint atau Django-Lint untuk melakukan static analysis pada kode yang kalian buat.

PyLint

PyLint merupakan module yang bisa kita gunakan untuk melakukan static analysis pada kode yang menggunakan bahasa Python. Untuk melakukannya, mula-mula kita harus menginstall-nya menggunakan package manager pip terlebih dahulu, dengan command:

pip install pylint

Setelah PyLint terinstall, kita bisa melakukan static analysis pada file .py yang kita inginkan dengan menjalankan command:

pylint [nama-file.py]

Setelah kita menjalankan command tersebut, maka PyLint akan menjalankan static analysis terhadap kode yang sudah kita ditulis, kemudian menampilkan hasilnya pada terminal.

Contoh PyLint

Pada gambar di atas, saya menjalankan static analysis pada file test.py. Dari hasil di atas, kita dapat melihat bahwa terdapat banyak isu pada kode yang saya buat, seperti terdapat variabel yang tidak di-define, kesalahan penulisan nama method, dan sebagainya.

Django-Lint

Selain PyLint, terdapat pula Django-Lint yang merupakan module yang bisa kita gunakan untuk melakukan static analysis ketika kita menggunakan framework Django. Untuk melakukannya, mula-mula kita harus menginstall-nya menggunakan package manager pip terlebih dahulu, dengan command:

pip install django-lint

Setelah PyLint terinstall, kita bisa melakukan static analysis pada folder app yang ingin kita analisis dengan menjalankan command:

django-lint [nama-folder-app]

Setelah kita menjalankan command tersebut, maka Django-Lint terhadap seluruh file yang ada pada folder app kita, kemudian menampilkan hasilnya pada terminal. Berikut adalah contoh hasil static analysis menggunakan Django-Lint.

Berdasarkan penjelasan di atas, kedua modul ini tentunya sangat memudahkan kita untuk melakukan static analysis secara cepat karena sudah tersedia melalui package manager yang disediakan oleh Python. Meskipun begitu, untuk mendapatkan hasil yang lebih komprehensif, kita juga bisa menggunakan bantuan tools 3rd party seperti Sonarqube.

Referensi

What Is Software Quality Assurance: Definition, Benefits, and Top Techniques Explained (simplilearn.com)

--

--