McCall Quality

McCall quality merupakan model klasifikasi kebutuhan perangkat lunak yang terbagi menjadi 11 faktor kualitas suatu perangkat lunak. Klasifikasi tersebut dibagi menjadi 3 kategori yakni product operation, product revision, dan product transition. McCall quality membantu untuk menilai suatu perangkat lunak itu telah memilki peforma yang baik, seperti pada tahap perencanaan sistem, perancangan sistem, kehandalan, software reuse, dan maintenance.

Model faktor McCall pada faktor kategori Operasi Produk (Product Operation) berisi :

Model Faktor McCall


Correctness

Merupakan tingkat pemenuhan program terhadap kebutuhan yang dispesifikasikan dan memenuhi tujuan/misi pengguna sudah benar. Dalam faktor ini ada 3 elemen faktor yakni completeness, consistency, tracebility.

Reliability

Beberapa fungsi mungkin tidak bekerja dalam eksekusi pada perangkat lunak, sehingga dianggap tidak tepat. Namun, perangkat lunak masih bisa diterima oleh pelanggan karena eksekusi yang menyebabkan sistem gagal mungkin tidak sering terjadi saat sistem dikerahkan. Presesisinya adalah persepsi pelanggan, dan perangkat lunak yang salah masih dapat dianggap sesuai. Adapun elemen faktor yang terlibat dalam perhitungan diantaranya accuracy, consistency, error tolerance, modularity, simplicity.

Efficiency

Penggunaan sumber daya seperti waktu pemrosesan processor (eksekusi), pemakaian media penyimpanan (memori, space, bandwidth) untuk menjalankan fungsinya. Adapun 3 elemen yang terlibat conciseness, execution efficiency, operability.

Usability

Uji didasarkan dari kemudahan perangkat lunak untuk digunakan dan dipelajari. Faktor elemennya adalah operability, training.

Integrity

Cakupan pengendalian akses perangkat lunak oleh pihak yang tidak dikenali. Adapun elemen faktor diantaranya auditability, instrumentation, security.


Model faktor McCall pada faktor kategori Revisi Produk (Product Revision) berisi :

Maintainability

Kemudahan perangkat lunak untuk dirawat, seperti memperbaiki kerusakan dan lainnya. Adapun elemen faktornya adalah conciseness, consistency, instrumentation, modularity, self-documentation, simplicity.

Flexibility

Merupakan kemudahan modifikasi kode untuk memfasilitasi hal – hal yang diakibatkan oleh perubahan lingkungan. Adapun elemen faktornya adalah conciseness, consistency, expandability, generality, modularity, self-documentation, simplicity.

Testability

Merupakan derajat yang dimiliki suatu sistem untuk memfasilitasi kriteria pengujian sampai terpenuhi. Elemen yang terlibat adalah auditability, instrumentation, modularity, self-documentation, simplicity.


Model faktor McCall pada faktor kategori Revisi Produk (Product Revision) berisi :

Portability

Merupakan uji kalkulasi biaya yang dibutuhkan untuk memindahkan perangkat lunak ke lingungan baru yang lebih kecil dibandingkan dengan biaya pembangunan awal perangkat lunak. Adapun elemen yang terlibat adalah generality, system independence, modularity, self-documentation, hardware independence.

Reusability

Merupakan penilaian terhadap sejauh mana modul – modul perangkat lunak dapat digunakan kembali. Elemen faktor yang terlibat adalah generality, system independence, modularity, self-documentation, hardware independence.

Interoperability

Merupakan kemampuan perangkat lunak untuk beroperasi tanpa mengalami kesulitan. Adapun elemen dari faktor ini diantaranya communication commonality, data commonality, hardware independence, modularity.

Studi Kasus Testing

Suatu hari anda dimintai tolong oleh suatu perusahaan untuk melakukan pengujian (software testing). Tentu saja perusahaan tersebut meminta anda dengan tujuan untuk mengetahui apakah aplikasi yang telah dibangun sudah layak di deploy atau belum. Jika mengenai target saat ini, perusahaan tersebut intinya ingin mengetahui apakah aplikasi sudah memenuhi kualitas product operation atau belum.

Sebab yang ditanyakan adalah pemenuhan kualitas product operation, maka menurut McCall quality model, faktor yang harus dipenuhi adalah correctness, reliability, usability, integrity, efficiency. Langkah pertama mungkin bisa diawali dari correctness dimana metode yang bisa digunakan adalah black box testing karena metode tersebut terfokus pada output dari system yang mengambil dari inputan user. Namun, kekurangan metode ini ialah, meskipun input dan output sudah sesuai, namun metode ini mengesampingkan mekanisme internal pada system. Dan untuk fungsional testingny dapat menggunakan unit testing yang tujuannya untuk menguji kebenaran output dari unit yang diuji. Sedangkan non-fungsional bisa dicoba dengan destructive testing yang tujuannya digunakan untuk menemukan titik – titik kegagalan dalam suatu program perangkat lunak.

  • Untuk elemen completeness bisa menggunakan test case exploratory testing yang dilakukan dengan mempelajari system dan melakukan decision making secara real time berdasarkan skill dan pengalaman tester. Dengan fungsional testing yakni acceptance testing karena mengecek pemenuhan kebutuhan pengguna dan untuk non-fungsional bisa menggunakan load testing karena testing yang merespon sistem diukur dalam berbagai load condition ketika banyak user mengakses software secara bersamaan
  • Untuk elemen consistency bisa menggunakan test case exploratory testing dilakukan dengan mempelajari system dan melakukan decision making secara real time berdasarkan skill dan pengalaman tester. Dengan fungsional testing yakni system testing karena dapat menguji sistem sesuai dengan dokumen spesifikasi. Dan menggunakan cross-browser testing karena dapat menggunakan teknik – teknik yang konsisten sehingga dapat bekerja di berbagai browser.
  • Untuk elemen tracebility bisa menggunakan test case exploratory testing dilakukan dengan mempelajari system dan melakukan decision making secara real time berdasarkan skill dan pengalaman tester. Dengan fungsional testing berupa integration testing karena digunakan untuk memverikasi fungsional, performa dan realibility antara modul-modul yang diintegrasikan serta dapat melakukan top-down dan bottom-up integration. Dan nonfungsional testing berupa usability testing tujuannya untuk memberikan kemudahan dalam menggunakan aplikasi dan lebih fleksible dalam control dan kemampuan sistem untuk memenuhi tujuan pengguna.

Langkah kedua bisa dilanjutkan dengan faktor reliability dengan metode white box testing agar mendapatkan hasil testing secara maksimal. white box testing memiliki metode yaitu dengan testing kesesuaian input dan output lalu apabila ada yang kurang sesuai akan melakukan pengecekan pada sistemnya. Dengan fungsional testing menggunakan unit testing tujuannya untuk menguji kebenaran input dan bagaimana output yang ditampilkan. Dan nonfungsional testing menggunakan destructive testing tujuannya untuk menemukan titik – titik kegagalan dalam suatu program perangkat lunak.

  • Untuk elemen accuracy bisa memilih test case equivalence partitioning testing karena metode yang sesuai yaitu membagi dan mengkategorikan test case ke dalam beberapa partisi sehingga mengurangi waktu testing karena jumlah test case lebih sedikit. Dengan menggunakan integration testing tujuannya untuk menguji semua modul yang diintegrasikan berjalan dengan baik tanpa menghasilkan bug lainnya dan workflow untuk menghasilkan keluaran yang diinginkan, yang biasanya melibatkan beberapa tahapan atau langkah.
  • Untuk elemen consistency bisa memilih test case equivalence partitioning testing karena metodenya sesuai yaitu membagi dan mengkategorikan test case ke dalam beberapa partisi sehingga mengurangi waktu testing karena jumlah test case lebih sedikit. Dan menggunakan system testing karena dapat menguji sistem sesuai dengan dokumen spesifikasi dan cross-browser Testing karena dapat menggunakan teknik – teknik yang konsisten sehingga dapat bekerja di berbagai browser.
  • Untuk elemen error tolerance dapat memilih monkey testing dimana dirasa paling tepat dalam menemukan error pada input yang tidak sesuai. Untuk fungsional testing dapat menggunakan integration testing untuk menguji semua modul yang diintegrasikan berjalan dengan baik tanpa menghasilkan bug lainnya dan vulnerability testing yang digunakan untuk memperhatikan keamanan aplikasi dan bertujuan untuk mencegah masalah yang dapat mempengaruhi integrasi dan stabilitas aplikasi dengan menentukan standarisasi untuk user agar mendukung faktor – faktor keamanan.
  • Untuk elemen modulariy dapat menggunakan test case berupa all pairs testing akan lebih efektif digunakan karena menguji kombinasi diskrit dari parameter input sehingga lebih cepat dilakukan (bila dibandingkan dengan exhaustive search). Serta fungsional testing menggunakan integration testing tujuannya digunakan untuk menguji apakah modul yang diintegrasikan berjalan dengan baik tanpa menghasilkan bug dan binary portability Testing tujuannya digunakan untuk portability antar platform sistem dan environtment.
  • Untuk elemen simplicity bisa menggunakan smoke testing karena melakukan test dari function yang lebih krusial terlebih dahulu. Sebagai fungsional testing menggunakan unit testing tujuannya digunakan untuk melakukan pengujian modul – modul individual pada program untuk menguji dan memastikan kebenaran dari modul tersebut dan configoration testing tujuannya untuk melakukan pengujian sebuah aplikasi dengan banyak kombinasi softwere dan hardware untuk menemukan konfigurasi optimal dimana sistem dapat bekerja tanpa cacat atau bug.

Langkah berikutnya bisa menguji usablity dengan metode white box agar mendapatkan hasil testing secara maksimal. white box testing memiliki metode yaitu dengan testing kesesuaian input dan output lalu apabila ada yang kurang sesuai akan melakukan pengecekan pada sistemnya. Dengan fungsional testing berupa acceptance testing digunakan untuk menguji sistem tersebut memenuhi kebutuhan bisnis, pengguna, dan layak rilis dan non-fungsional testing berupa usability testing mempunyai tujuan untuk berfokus pada kemudahan pengguna dalam menggunakan aplikasi, fleksibilitas dalam control, dan kemampuan sistem untuk memenuhi tujuan pengguna.

  • Untuk elemen operability bisa menggunakan test case exploratory testing yang dilakukan dengan mempelajari system dan melakukan decision making secara real time berdasarkan skill dan pengalaman tester. Fungsional testing menggunakan acceptance testing digunakan untuk menguji sistem tersebut memenuhi kebutuhan bisnis, pengguna, dan layak rilis dan untuk non-fungsional testing : accessibility testing sebab digunakan untuk memastikan bahwa perangkat lunak bisa digunakan oleh penyandang disabilitas.
  • Untuk elemen training bisa menggunakan test case exploratory testing , fungsional testing : acceptance testing, non-fungsional testing : usability testing.

Langkah selanjutnya melakukan pengujian dengan faktor integrity bisa menggunaka metode gray box dengan fungsional testing memilih integration testing tujuannya digunakan untuk semua modul yang diintegrasikan berjalan dengan baik tanpa menghasilkan bug lainnya. Dan non-fungsional testing menggunakan security testing adalah teknik pengujian untuk menentukan apakah suatu sistem informasi melindungi data dan mempertahankan fungsionalitas sebagaimana dimaksud.

  • Untuk elemen auditability, test case: exploratory testing , fungsional testing: system testing, non-fungsional testing: compatibility testing.
  • Untuk elemen instrumentation, test case: all-pairs testing, fungsional testing: api testing, non-fungsional testing: destructive testing.
  • Untuk security, test case: depth testing, fungsional testing: unit testing, non-fungsional: penetration testing.

Langkah terakhir bisa mengerjakan faktor efficiency dengan menggunakan metode black box karena metode tersebut terfokus pada output dari system yang mengambil dari inputan user. Namun, kekurangan metode ini ialah, meskipun input dan output sudah sesuai, namun metode ini mengesampingkan mekanisme internal pada system. Untuk fungsional testing bisa menggunakan integration testing yang tujuannya untuk menguji apakah semua modul yang diintegrasikan berjalan dengan baik tanpa menghasilkan bug lainnya dan non-fungsional dapat menggunakan workflow untuk menghasilkan keluaran yang diinginkan, yang biasanya melibatkan beberapa tahapan atau langkah.

  • Untuk elemen concisenes, test case: breadth testing, fungsional testing: integration testing, non-fungsional testing: binary portability testing.
  • Untuk elemen execution effiency, test case: depth testing, fungsional testing: integration testing, non-fungsional testing: peformance testing.
  • Untuk elemen operability, test case: exploratory testing , fungsional testing: acceptance testing, non-fungsional testing: usability testing.

Setelah menghitung nilai uji dari faktor tersebut, bisa dibuatkan laporan dan ringkasan untuk proses evaluasi testing selanjutnya.