BAB II LANDASAN TEORI
2.1
Latar Belakang Perusahaan
2.1.1 Sejarah Singkat Pendirian Perusahaan PT Kalbe Morinaga Indonesia ( Perusahaan ) didirikan berdasarkan Akta notaris No.33 tanggal 7 Februari 2005 dari notaris DR. Irawan Soerodjo, S.H., Msi. Aktapendirian tersebut telah disahkan oleh Menteri Hukum dan Hak Asasi ManusiaRepublik
Indonesia
dalam
Surat
Keputusannya
No.C-06329
HT.01.01.TH.2005 pada tanggal 10 Maret 2005 serta diumumkan dalam Berita Negara Republik Indonesia No.70 tanggal 1 September 2005, Tambahan No.9374. Anggaran Dasar telah diubah berdasarkan aktaNotaris No.46 tanggal 28 Agustus 2008 dari notaris Tjong Trisnawati,SH. tentang penyesuaian Anggaran Dasar Perusahaan dengan Undang-Undang Nomor40 tahun 2007 tentang Perseroan Terbatas. Perubahan anggaran dasar telah disetujui Menteri Hukum dan hak Asasi manusia Republik Indonesia dengan surat keputusan No.AHU85901.AH.01.02 Tahun 2008 tanggal 13 November 2008.Kantor dan pabrik Perusahaan beralamat di Kawasan Industri Indotaisei Sektor I A BlokQ1 Kawasan Industri Indotaisei, Kota Bukit Indah Kalihurip Cikampek Karawang, JawaBarat. Perusahaan tergabung dalam kelompok usaha (grup) Kalbe.Perusahaan dimiliki oleh PT Kalbe (70%), Morinaga Milk Industry Co. Ltd, Japan(30%).
5
6
2.1.2. Jenis Layanan Manufaktur Perusahaan Sesuai dengan pasal 3 anggaran dasar Perusahaan, ruang lingkup kegiatan perusahaan adalah bergerak dalam bidang penerimaan titip olah produksi(toll manufacturing) atas susu bayi dan produk-produk lainnya. Layanan manufaktur perusahaan untuk pelanggan antara lain adalah : 1.
Layanan manufaktur produksi susu bayi.
2.
Layanan manufaktur produksi susu ibu hamil.
3.
Layanan manufaktur produksi susu untuk anak umur 1-3 tahun.
4.
Layanan manufaktur produksi susu untuk anak umur 3-6 tahun.
2.1.3 Visi dan Misi Perusahaan secara Umum Dalam menjalankan kegiatan usahanya serta sebagai arah dalam mencapai tujuannya setiap perusahaan memiliki visi dan misi yang jelas. Demikian pula dengan PT. Kalbe Morinaga Indonesia yang juga memiliki visi dan misi untuk menentukan arah bisnisnya. Adapun visi dari PT. Kalbe Morinaga Indonesia adalah : “To become an Excellent Toll Manufacturing in Indonesia, prioritized for Morinaga Products”. Sementara itu misi dari PT. Kalbe Morinaga Indonesia yaitu : “To Provide Excellent Services for Our Customer and To become and remain Market Leaders”.
2.1.5. Sejarah Pemegang Saham PT. Kalbe Farma mendistribusikan produk susu bayi Morinaga sejak tahun 1978
(Perusahaan
Farmasi),
karena
produk
morinaga
di
Indonesia
7
(pertumbuhannya)sangat baik, maka di tahun 1985 morinaga ( Jepang ) menunjuk Kalbe Farma sebagai distributor tunggal produk Morinaga. Pertumbuhan Morinaga yang pesat menjadi pemimpin pasar dan pemain dominan di Indonesia untuk susu bayi. Di tahun 2005 Kalbe Farma dan Morinaga menyetujui untuk membangun pabrik yang memproduksi susu bayi berlokasi di Indonesia. Total investasi US$ 45-50 juta dengan kapasitas 12,000 ton per tahun.
2.1.6. Struktur Perusahaan Setiap perusahaan membutuhkan struktur organisasi untuk mencapai tujuanperusahaan yang telah ditetapkan. Struktur organisasi perusahaan bertujuan untukmelaksanakan kegiatan
atau
aktivitas perusahaan, seperti
masalah
pembagian kerja,pembagian fungsi, pembagian tugas dan tanggung jawab, agar dalam pelaksanaannyadapat berjalan dengan efektif dan efisien. Untuk mencapai tujuan yang telah ditetapkan tersebut diperlukan suatu penetapan struktur organisasi yang jelas dan sesuai dengankebutuhan. Dengan adanya struktur organisasi, masing-masing karyawan divisi dapat memahami tugas dan tanggung jawab apa yang dilimpahkan kepadanya. Selain itu jugauntuk mengetahui hubungan formal antar unit dalam organisasi. Struktur organisasiperusahaan tidak selalu bersifat tetap, karena adanya kemungkinan perubahan situasidan kondisi didalam perusahaan yang memungkinkan terjadinya perubahan strukturorganisasi perusahaan.
8
2 2.1.6.1. Stru uktur Organ nisasi Perussahaan Berikkut ini merrupakan strruktur organ nisasi dari PT. Kalbe Morinaga I Indonesia.
:
Gambar 2.1 Strukturr Organisasi Menengah kke Atas
2 Struktur O Organisasi Menengah M kee Bawah Gambar 2.2
9
2.1.6.2. Detail Wewenang dan Tanggung Jawab Struktur organisasi perusahaan membantu menelusuri wewenang dan tanggungjawab masing-masing karyawan di perusahaan. Uraian dan penjelasan wewenang dantanggung jawab dari PT Kalbe Morinaga Indonesia adalah sebagai berikut : 1.
Board of Commisioners ( Dewan Komisaris ) Board of Commisioners berada pada posisi teratas perusahaan dalam struktur organisasi dipimpin oleh seorang Presiden Komisaris yang membawahi tiga orang commisioner, dan satu orang tambahan commisioner saat ini.
2.
Board of Director ( Dewan Direktur ) Dipimpin oleh seorang President Director yang membawahi seorang Direktur Teknis dan Direktur Administrasi & Keuangan.
3.
President Director President Director berada pada posisi teratas perusahaan dalam struktur organisasi dan memimpin pihak manajemen dengan uraian tanggung jawab sebagai berikut : a.
Menerapkan tujuan perusahaan agar tumbuh terus menerus di ataspertumbuhan perusahaan lain yang sejenis.
b.
Selalu meningkatkan strategic position perusahaan agar lebih unggul dibanding pesaing.
c.
Membuat strategi 5 tahunan,dan diimplementasikan tahun demi tahun secara konsisten dengan menjabarkan seluruh activity yang relevan dan tercermin dalam budget tahunan.
10
d.
Menjabarkan dan mengkomunikasikan strategi tahunan perusahaan baik secara verbal maupun dalam bentuk Individual Score Card (ISC) yang juga menjadi tolak ukur keberhasilan karyawan itu sendiri maupun perusahaan.
e.
Membangun
budaya
kerja
yang
inovatif,
penuh
dengan
improvement, pembelajar, membuat jaringan kerja/informasi dengan pihak lain serta sistem berpikir yang rasional ( speak with data ). 4.
Technical Director Bersama dengan President Director, bertanggung jawab dalam : a.
Memastikan bahwa proses produksi memenuhi standart kualitas Morinaga.
b.
Memastikan proses produksi telah memenuhi kualitas yang telah ditetapkanoleh perusahaan.
c.
Memberikan nasehat teknis dalam pencapaian mutu, target produksi dan dalam trial formula baru.
5.
Administration, Finance and Accounting Director Secara umum, bertanggung jawab dalam perencanaan dankontrol dalam perusahaan baik dari sisi perencanaan finansial dan kebijakan perusahaan, bertanggung jawab atas akunting dan hubungan dengan institusi utama, pemegang saham dan komunitas finansial.
11
6.
Secretary BOD Secara umum, bertanggung jawab untuk mengatur jadwal rapat, jadwal kerja, dan jadwal pertemuan (Board of Director) dengan client perusahaan dan membuat notulen hasil rapat koordinasi.
7.
Finance & Accounting Manager Secara umum, memiliki tanggung jawab untuk memacu pertumbuhan bisnis yang berkesinambungan melalui pengendalian dan optimalisasi penggunaan uang serta aset berdasarkan sistem informasi keuangan yang terintegrasi, akurat, tepat waktu serta membangun team yang solid Memiliki uraian tanggung jawab sebagai berikut : a.
Membuat perencanaan strategis jangka panjang (5 tahun) Divisi Finance & Accounting.
b.
Mengendalikan dan mengoptimalkan penggunaan uang dan aset perusahaan.
c.
Mengarahkan
bawahan
dalam
pembuatan
rencana
jangka
menengah dan jangka pendek (3 dan 1 tahun) berikut penyusunan anggaran tahunan. d.
Menganalisa,
mengantisipasi,
memberikan
usulan
kepada
Manajemen mengenai penanganan issue keuangan baik internal maupun eksternal. e.
Mengkoordinir seluruh kegiatan di Divisi Finance & Acccounting untuk mencapai Visi dan target perusahaan.
f.
Mengelola hubungan, terutama dengan eksternal auditor, Bank, suppliers, kantor Pajak.
12
g.
Mengelola sumberdaya manusia di Divisi Finance & Accounting termasuk perencanaan tenaga kerja, rekrutmen, pengelolaan kinerja, pelatihan dan pengembangan SDM.
h.
Memonitor, me-review dan mempertanggungjawabkan kinerja Divisi Finance & Accounting.
8.
Senior Plant Manager Secara umum, memiliki tanggung jawab untuk mengelola seluruh sumber daya Plant (manusia, mesin, teknologi, informasi, uang dan sumberdaya lainnya), agar seluruh aktivitas Plant berlansung efektif dan efisien, sesuai dengan objective perusahan dengan berlandaskan pada QCS (Quality, Cost, dan Speed) serta membangun team yang solid dan memiliki kompetensi tinggi dalam proses pengolahan susu formula. Memiliki uraian tanggung jawab sebagai berikut : a.
Membuat perencanaan strategis jangka panjang (5 tahun) Plant division sesuai objektif perusahan.
b.
Memastikan seluruh aktivitas Plant division berlangsung sejalan dengan objektifperusahaan.
c.
Mengarahkan
bawahan
dalam
pembuatan
rencana
jangka
menengah (3 tahun) dan jangka pendek (1 tahun) berikut penyusunan anggaran tahunan. d.
Memastikan seluruh aktivitas Plant Division sesuai dengan Standard Quality System (HACCP, GMP, ISO) dan prosedur standar yang telah ditetapkan.
13
e.
Me-monitor, mereview, dan mempertanggungjawabkan kinerja Plant division.
9.
Human Resource Manager Secara umum, bertanggung jawab untuk memacu pertumbuhan bisnis yang berkesinambungan dengan mempersiapkan dan mengelola sumber daya manusia melalui sistem HRD, pengembangan yang terintegrasi dan menciptakan iklim kerja yang mendukung produktivitas di perusahaan dengan membangun team yang solid. Memiliki uraian tanggung jawab sebagai berikut : a.
Membuat perencanaan strategis jangka panjang (5 tahun) Divisi Human Resource Department.
b.
Mengarahkan
bawahan
dalam
pembuatan
rencana
jangka
menengah dan jangka pendek (3 dan 1 tahun) berikut penyusunan anggaran tahunan. c.
Mengembangkan sistem dan policy pengelolaan HRD.
d.
Mengembangkan sistem dan policy pengelolaan General Affairs.
e.
Mengembangkan
sistem
Succession
Planning
untuk
mempersiapkan kader yang kompeten. f.
Mengembangkan dan mengimplementasikan Human Resource Programs yang ditujukan untuk menjaga dan memelihara tingkat kepuasan karyawan.
g.
Mendayagunakan sumber daya manusia secara optimal untuk meningkatkan produktivitas.
14
h.
Mengembangkan dan mengelola HRIS (Human Resources Information System) untuk seluruh proses bisnis HRD.
i.
Mengkoordinir seluruh kegiatan di Divisi Human Resources dan General Affairs untuk mencapai visi dan target perusahaan.
j.
Mengelola hubungan, terutama dengan bagian internal organisasi, Institusi pemerintah, dan perwakilan karyawan.
10.
Quality Assurance Manager Secara umum, bertanggung jawab untuk memastikan produk yang dihasilkan sesuai standar yang telah ditetapkan melalui penerapan Quality System (HACCP, GMP, ISO) yang baik dan benar selama proses produksi dan membangun team Quality Assurance yang solid dan memiliki kompetensi tinggi dalam aktivitas pengawasan mutu susu formula dan membangun team QA yang solid dan memiliki kompetensi tinggi dalam aktivitas pengawasan mutu susu formula. Memiliki uraian tanggung jawab sebagai berikut : a.
Membuat perencanaan program kerja departement QA jangka menengah (3 tahun) dan jangka pendek (1 tahun).
b.
Mengelola seluruh kegiatan di Quality Assurance dengan : i.
Memastikan penerapan Quality System dalam segala aktivitas plant.
ii.
Memonitor sistem kerja Plant, mulai dari penerimaan Raw Material/Packaging
Material
sampai
penyimpanan
Finished Goods, agar sesuai dengan standar yang ditetapkan.
15
iii.
Mengelola proses internal audit sistem mutu di Plant.
iv.
Menangani keluhan pelanggan berkaitan dengan kualitas produk.
v.
Mengelola hubungan dengan suppliers.
vi.
Mengevaluasi hasil analisa dan menentukan status produk.
vii.
Mengelola sumberdaya manusia di Departemen QA termasuk perencanaan tenaga kerja, rekrutmen, pengelolaan kinerja, pelatihan dan pengembangan SDM dalam rangka membangun team yang solid dan memiliki kompetensi tinggi.
viii.
Me-monitor, me-review dan mempertanggungjawabkan kinerja departemen QA.
11.
Warehouse Manager Memiliki uraian tanggung jawab sebagai berikut : a.
Memastikan gudang memiliki stok yang akurat.
b.
Memastikan pengambilan barang mudah dan cepat.
c.
Memastikan pengiriman tepat waktu, jenis, dan jumlah.
d.
Me-monitor, me-review dan mempertanggungjawabkan kinerja departemen Warehouse.
12.
Production Manager Secara umum, bertanggung jawab untuk mengelola seluruh sumber daya produksi (manusia, mesin, waktu, informasi, material, uang dan sumber daya lainnya). Agar departemen produksi dapat melaksanakan fungsinya untuk memproduksi produk secara efektif dan efisien berlandaskan
16
QCS(Quality, Cost, dan Speed) serta membangun team produksi yang solid dan memiliki kompetensi tinggi dalam bidang pengolahan susu formula. Memiliki uraian tanggung jawab sebagai berikut : a.
Membuat perencanaan produksi jangka menengah (3 tahun), dan jangka pendek (1 tahun) berdasarkan objective perusahan.
b.
Mengkoordinir seluruh kegiatan untuk menunjang pelaksanakan proses produksi secara efektif dan efisien dengan : i.
Mengelola penggunaan sumber daya manusia.
ii.
Mengelola penggunaan RM, PM.
iii.
Mengelola pemeliharaan sarana Produksi dengan baik.
iv.
Menjamin penerapan Quality System ( GMP, HACCP, ISO) secara konsisten.
v. c.
Meningkatkan Produktivitas dan menurunkan loss.
Mengelola sumberdaya manusia di departemen produksi termasuk perencanaan
tenaga kerja, rekrutmen, pengelolaan
kinerja,
pelatihan dan pengembangan SDM dalam rangka membangun team yang solid dan memiliki kompetensi tinggi. d.
Bekerjasama dengan depertemen terkait (QA, WH, ENG, HRD), untuk menjamin proses produksi berlansung lancar, sesuai standar, efektif dan efisien.
13.
Engineering Manager Secara umum, bertanggung jawab untuk mengelola seluruh sumberdaya departemen
Engineering,
agar
departemen
Engineering
dapat
17
melaksanakan fungsinya untuk merawat mesin produksi, bangunan, fasilitas utility, dan penanganan limbah dengan baik, berlandaskan konsep QCS(Quality, Cost, dan Speed) serta membangun team Engineering yang solid dan memiliki kompetensi tinggi dalam bidang penanganan mesinmesin pengolahan susu formula. Memiliki uraian tanggung jawab sebagai terikut : a.
Membuat perencanaan jangka menengah (3 tahun) dan jangka pendek (1 tahun) berdasarkan berdasarkan objective Perusahaan.
b.
Mengelola sumberdaya manusia di departemen enginering termasuk perencanaan tenagakerja, rekrutmen, pengelolaan kinerja, pelatihan dan pengembangan SDM dalam rangka membangun team enginering yang solid dan memiliki kompetensi tinggi dalam penanganan mesin mesin pengolahan susu formula.
c.
Mengelola persediaan spare part agar proses maintenance berlangsung efektif dan efisien.
d.
Memastikan aktivitas perawatan dan perbaikan mesin produksi, sarana utility, bangunan dan sarana lainya terlaksana dengan baik sesuai rencana.
e.
Berkoordinasi
dengan
departemen
terkait,
untuk
menjaga
kelancaran proses produksi. f.
Me-monitor, me-review dan mempertanggungjawabkan kinerja departemen Enginering.
18
14.
IT Supervisor Secara umum, bertanggung jawab terhadap pengelolaan operasional sumber daya teknologi informasi dalam perusahaan. Memiliki uraian tanggung jawab sebagai berikut : a.
Mengembangkan ketentuan dan prosedur teknologi informasi untuk mendukung tujuan dari bisnis perusahaan.
b.
Mengevaluasi kebutuhan bisnis perusahaan yang berhubungan dengan pengaturan informasi, sistem, peralatan, dukungan dan pelatihan yang ditujukan untuk bahan pertanggung jawaban dalam memutuskan dan melaksanakan serta mengatur segala aspek dari kondisi teknologi informasi guna mendukung kebutuhan didalam perusahaan.
c.
Bertanggung jawab dalam mengatur dan memberi dorongan kepada staf dan mengembangkan level kemampuan teknologi informasi yang berguna untuk pelaksanaan bisnis perusahaan.
d.
Mengatur kegiatan IT termasuk pengaturan keuanganyang sesuai dengan peraturan yang berlaku.
e.
Memberi masukan dalam hal perubahan sistem yang ditujukan pada kebutuhan perusahaan dan meningkatkan keefektifitasan operasional.
f.
Me-monitor, me-review dan mempertanggungjawabkan kinerja departemen IT.
19
15.
HR Finance and Accounting Supervisor Secara umum, Finance dan Accounting Supervisor memiliki tanggung jawab memaksimalkan penggunaan keuangan perusahaan dan menjaga asset perusahaan terhadap resiko-resiko keuangan. Memiliki uraian tanggung jawab sebagai berikut : a.
Membuat
perencanaan
strategi
jangka
pendek
(1
tahun)
departemenFinance & Accounting selaras dengan sasaran jangka panjang DepartemenFinance & Accounting beserta anggaran. b.
Mengarahkan bawahan dalam menyusun rencana jangka pendek (1 tahun).
c.
Mengatur cash flow perusahaan untuk mendukung kegiatan operasional, antara lain : i.
Memastikan
sesuai
dengan
target
yang
ditetapkan
manajemen. ii.
Memaksimalkan penggunaan kelebihan uang kas bekerja sama dengan treasury Corporate.
iii. d.
Me-review proses pinjaman bank dan cadangan valas. Mengelola sumber daya manusia termasuk perencanaan tenaga kerja, pengelolaan kinerja, pelatihan dan pengembangan SDM di Finance & Accounting Department.
e.
Mengelola hubungan dengan Bank, Institusi Keuangan.
f.
Memastikan compliance proses pembayaran, penerimaan sesuai dengan aturan yang berlaku dan memastikan tersedianya budget.
20
g.
Me-monitor dan me-review kondisi keuangan cabang secara periodik serta merekonsiliasi laporan keuangan cabang dan catatan kantor pusat.
2.2
Software Testing Software testing adalah proses mengevaluasi suatu sistem atau komponen
dengan tujuan untuk menemukan bahwa apakah software memenuhi persyaratan yang ditentukan atau tidak. Hasil kegiatan ini sebenarnya, diharapkan dan perbedaan antara hasil mereka. Dengan kata sederhana pengujian mengeksekusi sistem untuk mengidentifikasi kesenjangan, kesalahan atau persyaratan yang hilang bertentangan dengan keinginan yang sebenarnya atau persyaratan. Menurut standar ANSI / IEEE 1059, Pengujian dapat didefinisikan sebagai suatu proses menganalisis item perangkat lunak untuk mendeteksi perbedaan antara kondisi yang ada dan yang dibutuhkan (yang cacat / kesalahan / bug) dan untuk mengevaluasi fitur item perangkat lunak (Perry, E. W., 2006).
2.2.1 Jenis Software Testing Ada dua jenis cara dalam melakukan pengujian software (Perry, E. W., 2006), yakni : 1.
Manual Testing Pengujian ini dilakukan secara manual yakni tanpa menggunakan alat otomatis atau tulisan apapun. Pada tipe ini tester mengambil alih peran pengguna akhir dan menguji software untuk mengidentifikasi respon yang
21
tidak diharapkan atau bug. Ada tahapan yang berbeda untuk pengujian manual seperti unit testing, pengujian Integrasi, pengujian sistem dan pengguna. Penguji menggunakan tes rencana, uji kasus atau skenario tes untuk menguji software untuk memastikan kelengkapan pengujian. Pengujian manual
juga
mencakup
pengujian
eksplorasi
sebagai
penguji
mengeksplorasi perangkat lunak untuk mengidentifikasi kesalahan di dalamnya. 2.
Automation Testing Automation test adalah ketika tester menulis skrip dan menggunakan perangkat lunak lain untuk menguji software. Pengujian Otomasi digunakan untuk kembali menjalankan skenario pengujian yang dilakukan secara manual, cepat dan berulang. Terlepas dari pengujian regresi, pengujian Otomasi juga digunakan untuk menguji aplikasi dari beban (load testing), kinerja (performance testing) dan stress testing. Hal ini meningkatkan cakupan tes, meningkatkan akurasi, menghemat waktu dan uang dibandingkan dengan pengujian manual.
22
2.2.2 Metode Testing Ada beberapa metode untuk melakukan web testing (Perry, E. W., 2006), di antaranya adalah :
1.
Black Box Testing Teknik testing yang dijalankan tanpa dibutuhkannya pengetahuan tentang cara kerja interior (kode) dari aplikasi. Tester menyadari arsitektur sistem namun tidak memiliki akses ke kode sumber. Biasanya, ketika melakukan black box testing, tester akan berinteraksi dengan user interface sistem dengan memberikan masukan dan memeriksa output tanpa mengetahui bagaimana dan di mana input bekerja.
Table 2.1 Keunggulan dan Kerugian Metode Black Box Testing Keunggulan
Kerugian
Tepat dan efisien untuk segmen software yang
Terbatasnya area cakupan pengujian karena yang
cakupannya luas.
diuji
hanya
sebatas
skenario
yang
telah
ditentukan. Tidak membutuhkan akses ke dalam kode.
Pengujian bisa menjadi tidak efisien apabila penguji tidak memahami alur kerja software.
Memisahkan
perspektif
pengguna/tester
dengan perspektif pengembang Tester/penguji tidak perlu memahami bahasa pemrograman/sistem operasi.
Skenario pengujian sulit untuk dirancang.
23
2.
White Box Testing White box testing adalah penyelidikan rinci logika internal dan struktur kode. White box testing juga disebut glass testing atau open box testing. Dalam rangka untuk melakukan white box testing pada aplikasi, tester perlu memiliki pengetahuan tentang alur kerja internal kode. Tester perlu melihat dalam sumber dan mengetahui unit / serangkaian kode yang terdapat pada software.
Table 2.2 Keunggulan dan Kerugian Metode White Box Testing Keunggulan
Kerugian
Sebagai tester yang memiliki pengetahuan
Dibutuhkan
tentang sumber kode, akan menjadi sangat
pengujian.
biaya
besar
untuk
melakukan
mudah untuk mengetahui jenis data. Hal ini dapat membantu dalam pengujian aplikasi secara efektif.
Tester berfungsi sebagai penguji ataupun
Kadang-kadang sulit untuk melihat ke setiap
pengoptimasi kode.
sudut untuk mengetahui kesalahan tersembunyi yang
dapat
menimbulkan
masalah
karena
banyaknya proses yang harus diuji. Dapat secara langsung memperbaiki kode dari
Sulit untuk mempertahankan white box testing
aplikasi tersebut.
menggunakan alat bantu seperti analisis kode dan alat debugging yang diperlukan.
Karena pengetahuan tester mengenai kode, jangkauan
maksimum
dicapai
pengujian berdasarkan skenario.
selama
24
3.
Grey Box Testing Grey box testing adalah teknik untuk menguji aplikasi dengan pengkombinasian antara white box testing dan black box testing. Dalam pengujian
software.
Menguasai
sistem selalu
memberikan
tester
keunggulan atas seseorang dengan pengetahuan sistem yang terbatas, baik dari sisi kode maupun alur kerja software. Tidak seperti black box testing, di mana tester hanya menguji aplikasi user interface, dalam grey box testing, tester memiliki akses ke dokumen desain dan database. Dengan memiliki pengetahuan ini, tester dapat lebih mempersiapkan data uji dan skenario pengujian ketika membuat rencana uji.
Table 2.3 Keunggulan dan Kerugian Metode Grey Box Testing Keunggulan
Kerugian
Memiliki keunggulan dari white box testing
Karena akses ke dalam kode dan database
dan black box testing.
terbatas, maka cakupan tes terbatas.
Grey box tester tidak hanya bergantung pada
Tes dapat berlebihan jika desainer perangkat
kode sumber, namun dapat juga bergantung
lunak telah menjalankan uji kasus.
pada
interface
aplikasi
dan
spesifikasi
fungsional. Skenario tes yang sangat baik terutama di
Pengujian setiap aliran masukan yang mungkin
sekitar protokol komunikasi dan penanganan
tidak realistis akan mamakan banyak waktu.
tipe data. Tes
ini
dilakukan
dari
pengguna dan bukan desainer.
sudut
pandang
25
2.3
Level of Testing Dalam software testing, ada beberapa tingkat yang berbeda selama
pengujian (Perry, E. W., 2006), di mana masing-masing tingkat pengujian meliputi beberapa metodologi testing yang berbeda. Berikut ini adalah beberapa tingkat software testing : 1.
Pengujian fungsional
2.
Pengujian non-fungsional
2.3.1 Pengujian Fungsional Pengujian fungsional adalah pengujian yang menggunakan metode black box testing yang didasarkan pada pengujian kode software berdasarkan spesifikasi software yang akan diuji. Apalikasi akan diuji dengan memberikan masukkan dan kemudian hasilnya diperiksa. Pengujian fungsional dari software ini dilakukan secara lengkap, berdasarkan kebutuhan sesuai dengan standar yang telah ditetapkan oleh perusahaan. Ada lima langkah dalam melakukan pengujian aplikasi secara fungsional : 1.
Menentukan bagian mana saja yang ingin diuji sesuai dengan kebutuhan.
2.
Menentukan data yang akan dijadikan masukkan (input) ketika pengujian berlangsung.
3.
Menentukan keluaran (output) berdasarkan masukkan yang telah ditentukan.
4.
Penulisan skenario pengujian dan pelaksanaan pengujian kasus.
26
5.
Perbadingan hasil aktual dan yang diharapkan didasarkan pada hasil pengujian yang telah dieksekusi. Sebuah praktek pengujian akan efektif jika mengikuti langkah di atas
sebagai standar pengujian pada semua organisasi. Langkah di atas memberikan standar yang ketat untuk pengujian sebuah perangkat lunak dalam sebuah organisasi. Di dalam fungsional testing dikenali beberapa jenis urutan ujian yang diterapkan sebagai standar pengujian, antara lain : 1.
Unit Testing Jenis pengujian yang dilakukan oleh pengembang sebelum aplikasi diserahkan kepada tim penguji aplikasi secara resmi untuk melakukan uji kasus. Unit testing dilakukan oleh masing-masing pengembang aplikasi pada setiap bagian kode yang areanya telah ditentukan. Para pengembang menggunakan data uji yang terpisah dari data uji yang akan digunakan oleh tim penguji kualitas. Tujuan dari unit testing adalah mengisolasi setiap bagian dari program dan menunjukkan bahwa masing-masing dari bagian program itu tidak memiliki kesalahan baik dalam hal fungsionalitas maupun berdasarkan standar yang telah ditentukan oleh perusahaan. Keterbatasan dalam unit testing adalah tidak dapat menangkap semua bug dari aplikasi. Hal ini tidak dimungkinkan karena tidak mungkin mengevaluasi setiap jalur eksekusi di dalam sebuah software. Keterbatasan jumlah skenario dan data uji bahwa pengembang dapat digunakan untuk
27
memverifikasi sumber kode. Jadi setelah pengembang kehabisan opsi, maka biasanya pengujian terhenti karena dianggap telah berhasil. 2.
Integration Testing Pengujian pengintegrasian sistem secara bersama-sama, baik dari hasil kode yang telah dibuat oleh developer maupun dari pihak organisasi. Pengujian ini ditujukan untuk mengetahui apakah hasil yang telah jadi sesuai dengan kesepakatan sebelumnya. Ada dua metode dalam melakukan integration testing, yakni bottom-up integration test dan top down integration test. Bottom-up integration test dimulai dari unit testing (testing internal dari tim developer), diikuti dengan test yang yang lebih jauh baik dalam hal pemanggilan modul/fungsionalitas secara lebih menyeluruh. Top down integration test dimulai dari pemanggilan modul/fungsionalitas yang lebih tinggi dan secara perlahan menuju ke modul/fungsionalitas yang lebih rendah. Dalam lingkungan pengembangan software yang baik, bottom-up testing biasanya tidak dilakukan bergantian dengan top-down testing. Proses meliputi berbagai macam test dari dari aplikasi secara menyeluruh berdasarkan skenario yang telah didesain guna mencegah kesalahan yang akan terjadi baik dari pihak pengguna, sistem itu sendiri maupun kesalahan teknis lainnya.
3.
System Testing System testing adalah tingkat berikutnya dalam pengujian dan tes sistem secara menyeluruh. Setelah semua komponen terintegrasi, aplikasi secara
28
keseluruhan diuji secara ketat untuk melihat bahwa aplikasi telah memenuhi standar mutu. Jenis pengujian dilakukan oleh tim khusus. Pengujian sistem ini sangat penting karena langkah ini adalah langkah pertama dalam Software Development Life Cycle, di mana aplikasi ini diuji secara keseluruhan. Aplikasi diuji secara menyeluruh untuk melakukan verifikasi bahwa aplikasi telah memenuhi spesifikasi fungsionalitas dan teknis. Aplikasi harus diuji di dalam lingkungan yang sangat dekat dengan lingkungan produksi di mana aplikasi akan diterapkan. Pengujian sistem memungkinkan kita untuk menguji, memverifikasi dan memvalidasi baik untuk kebutuhan bisnis maupun kepentingan arsitektur dari aplikasi itu sendiri. 4.
Regression Testing Regression testing dilakukan apabila ada beberapa bagian dari software aplikasi mengalami perubahan, dan di mana perubahan itu akan mempengaruhi beberapa area lain dari aplikasi itu sendiri. Untuk memverifikasi bahwa bug tetap tidak menghasilkan fungsi yang salah pada beberapa bagian dari software maupun keseluruhan. Tujuan dari pengujian regresi adalah memastikan bahwa perubahan seperti perbaikan bug tidak menimbulkan masalah atau kesalahan lain yang ditemukan di dalam aplikasi. Pengujian regresi sangat penting karena meminimalkan kesenjangan dan kesalahan aplikasi terhadap perubahan yang telah dilakukan. Pengujian baru yang dilakukan untuk memverifikasi bahwa perubahan tidak mempengaruhi area lain dalam aplikasi. Hal ini mengurangi resiko
29
terjadinya kesalahan karena tes dapat dilakukan ketika perubahan terjadi tanpa memanjangkan jadwal pengembangan selanjutnya. Oleh karena itu pengujian regresi sangat penting untuk meningkatkan kecepatan dalam memverifikasi aplikasi sehingga aplikasi dapat dengan cepat digunakan ataupun dipasarkan. 5.
Acceptance Testing Acceptance testing dapat dikatakan sebagai jenis tes yang paling penting dalam pengujian fungsionalitas. Pengujian ini dilakukan oleh tim penjamin mutu, dan tes ini dilakukan untuk mengukur sampai sejauh mana aplikasi telah memenuhi spesifikasi aplikasi yang diingikan dan diharapkan sebagaimana keinginan pengguna. Tim penjamin mutu akan memiliki satu set pra skenario tertulis dan uji kasus yang akan digunakan untuk menguji aplikasi. Banyaknya ide yang tercantum dalam pengujian dapat meningkatkan keakuratan aplikasi agar dapat diterima oleh pengguna. Tes ini tidak hanya ditujukan untuk menunjukkan kesalahan-kesalahan sederhana seperti ejaan, kesalahan tampilan atau kesenjangan interface, namun juga ditujukan untuk menunjukkan bug dalam apikasi yang akan menghasilkan kesalahan yang lebih besar berdasarkan kesalahan-kesalahan yang ditemukan di dalam aplikasi. Dengan melakukan acceptance test pada aplikasi yang diuji, tim dapat menyimpulkan sampai sejauh mana aplikasi dapat digunakan atau diterima oleh pengguna terutama pengguna yang dekat dengan area produksi atau pengguna software secara langsung.
30
Acceptance testing dibagi menjadi dua tahap, yakni : a.
Alpha Testing Alpha testing adalah tahap pertama dari acceptance testing dan dilakukan hanya di dalam area tim pengembang aplikasi. Unit testing, integration testing dan system testing digabungkan untuk melakukan aplha testing. Selama fase ini ada beberapa hal yang biasanya diuji, hal-hal seperti kesalahan ejaan, pengecekan broken link, waktu yang dibutuhkan untuk membuka aplikasi dengan menggunakan mesin yang memiliki spesifikasi terendah untuk menjalankan aplikasi, serta masalah latency ketika aplikasi dijalankan.
b.
Beta Testing Beta testing dilakukan setelah alpha testing dilakukan. Dalam beta testing pengujian sampel dari audiens atau pengguna dibutuhkan sebagai tester utama dari aplikasi. Beta testing dikenal juga dengan istilah pre-release testing. Versi beta dari software idealnya didistribusikan kepada banyak orang, sebagai bentuk tes program dalam dunia nyata dan hasil preview dari tes ini akan digunakan sebagai acuan dasar untuk melakukan perilisan aplikasi. Dalam fase ini pengguna akan menggunakan dan menjalankan aplikasi guna menyediakan feedback kepada tim developer aplikasi. Setiap kesalahan kecil, baik dalam hal-hal yang menyulitkan pengguna baik dari sisi kesalahan penulisan kata di dalam aplikasi atau bahkan crash wajib dilaporkan pengguna agar perbaikan dapat
31
dilakukan. Hasil feedback dari pengguna harus diteliti dan diperbaiki oleh tim developer agar memastikan masalah yang sama tidak muncul kembali dalam versi berikutnya. Semakin banyak masalah yang muncul dan semakin banyak perbaikan yang dilakukan, maka tingkat kualitas aplikasi semakin tinggi. Hal ini dikarenakan semakin sedikit masalah yang muncul, berarti semakin tinggi tingkat aplikasi dapat diterima oleh pengguna. Tingginya kualitas dari sebuah aplikasi ditentukan oleh tingkat kepuasan pengguna.
2.3.2 Pengujian Non-Fungsional Pengujian non-fungsional dilakukan berdasarkan pengujian aplikasi tanpa didasarkan oleh fungsionalitas dari aplikasi itu sendiri. Pengujian ini melibatkan pengujian tingkat kinerja software, keamanan, user interface dan lain sebagainya. Berikut ini adalah beberapa jenis pengujian non-fungsional yang biasanya digunakan oleh dunia luas, antara lain : 1.
Performance Testing Performance
testing
banyak
digunakan
untuk
menunjukkan
dan
memverifikasi permasalahan-permasalahan kinerja ataupun masalahmasalah yang lumrah terjadi seperti bottleneck. Performance testing tidak ditujukan untuk menunjukkan kesalahan-kesalahan aplikasi dari sisi kode (bugs) dalam software. Ada beberapa hal yang kerap menjadi permasalahan dalam penurunan performa software aplikasi, hal-hal seperti
32
network delay, client side processing, database transaction processing, load balancing between servers maupun data rendering. Performance testing biasanya dilakukan sebagai salah satu bagian terpenting dan mandatori dalam pengujian aplikasi non-fungsionalitas. Aspek-aspek seperti kecepatan (baik dari sisi waktu respon aplikasi, data rendering dan pengaksesan), kapasitas, stabilitas dan skalabilitas. Performance test dapat berupa kegiatan pengujian kualitatif ataupun kuantitatif dan dapat dibagi menjadi sub jenis pengujian seperti Load dan Stress testing. Load testing adalah sebuah proses testing yang menguji perilaku software dengan menerapkan beban maksimum dalam hal pengaksesan aplikasi dan mainpulasi data input dalam jumlah yang besar. Hal ini dapat dilakukan pada
kondisi
beban
normal
dan
puncak.
Jenis
pengujian
mengidentifikasikan kapasitas maksimum software dan perilakunya saat puncak. Biasanya load testing menggunakan tools untuk melakukan pengujian secara otomatis. Pengguna virtual (VUsers) dari automation tools tersebut didefinisikan dalam alat pengujian otomatis dan script yang dijalankan untuk memverifikasi pengujian beban pada software. Jumlah pengguna dapat dimanipulasi sesuai dengan kebutuhan, baik meningkat maupun menurun. Sedangkan stress teseting adalah sebuah proses pengujian perilaku software dalam kondisi abnormal. Tes ini menggunakan sumber daya yang melebihi batas normal dari beban software, oleh karena itu tes ini disebut sebagai stress testing. Tujuan utama adalah untuk menguji software
33
dengan menerapkan beban ke sistem dan mengambil sumber daya yang biasanya digunakan software untuk mengidentifikasikan titik putus (shut down). Test ini dapat dilakukan dengan cara mengacak port jaringan dan melakukan tindakan seperti restart atau shut down port jaringan tersebut, mematikan atau menghidupkan database dengan waktu acak maupun menjalankan proses yang berbeda guna mengurangi sumber daya komputer seperti CPU, memori ataupun hal lainnya dari server aplikasi. 2.
Usability Testing Usability testing meliputi konsep dan definisi yang berbeda dari pengujian kegunaan dari sudut pandang software. Metode black box testing digunakan bukan untuk menangkap kesalahan dari software (bugs), namun kesalahan dari pengguna software tersebut ketika menggunakan dan menemukan
kesalahan
dalam
software.
Usability
testing
dapat
didefinisikan ke dalam lima faktor yakni efisiensi, learning (mudah dipelajari), satisfaction (memuaskan), software mudah untuk diingat serta mudah untuk digunakan. Software dapat berguna dan berjalan dengan baik apabila pengguna memiliki semua faktor di atas. Usability testing adalah persyaratan dari sebuah software agar dapat diterima dengan baik oleh pengguna, karena berkaitan dengan interaksi antara sistem dengan manusia. Apabila pengguna akhir puas dengan aplikasi yang telah jadi, maka software dapat secara efektif digunakan oleh pengguna. Hal ini ditetapkan dengan beberapa standar dan kualitas model dan metode yang menentukan kegunaan dalam bentuk atribut maupun sub
34
atribut, seperti diterangkan di dalam ISO-9126, ISO-9241-11, ISO-13407 dan IEEE std.610.12 dan lain-lain. Pengujian Graphical User Interface (GUI) software memastikan bahwa software sesuai dan tepat dalam hal pemilihan warna, keselarasan, ukuran maupun sifat-sifat lainnya yang berhubungan dengan tampilan software agar dapat diterima dengan baik oleh pengguna. Pengujian usability sisi lain memastikan user interface bersifat user friendly dan dirancang agar mudah
digunakan,
mudah
diingat,
efisien,
tidak
menimbulkan
kebingungan bagi pengguna akhir (end user). Pengujian user interface merupakan sub bagian dari pengujian usability. 3.
Security Testing Security testing meliputi testing keamanan software dari sisi keamanan untuk mengidentifikasikan setiap celah yang terdapat dalam software. Hal ini penting karena setiap celah ataupun titik kerentanan software terhadap serangan siber dari luar maupun dari dalam. Setiap sudut software harus diperhatikan agar tidak menimbulkan permasalahan-permasalahan sosial seperti hilangnya data pribadi, pembajakan identitas pengguna, maupun pengoprekan software oleh pihak lain untuk dijadikan milik pribadi. Berikut ini adalah aspek-aspek utama yang perlu diperhatikan dalam pengujian keamanan, antara lain : a.
Confidentiality
b.
Integritas
c.
Otentikasi
d.
Availability
35
4.
e.
Ototisasi
f.
Non-repudiation
g.
Keamanan data
h.
Validasi input
i.
Pertahanan terhadap SQL injection
j.
Software sesuai dengan semua standar kebijakan yang ada
k.
Session management
l.
Penyerangan software dari cross site scripting
m.
Kerentanan buffer overflow
n.
Directory transversal attacks
Portability Testing Portability testing meliputi pengujian software yang dilakukan dengan tujuan mengecek apakah software dapat digunakan secara berulang (reuseable) dan dapat dipindahkan ke dalam bentuk operating system maupun software lain. Berikut ini adalah beberapa cara untuk melakukan portability testing, antara lain ; a. Percobaan melakukan instalasi software dari satu komputer ke komputer lainnya. b. Melakukan instalasi software dari satu platform ke dalam suatu platform yang berbeda (baik operating system, browser, dan lain sebagainya). Pengujian portabilitas dianggap sebagai salah satu pengujian yang cukup penting dari pengujian sebuah sistem, karena hal jenis pengujian ini dapat dijadikan titik ukur sampai sejauh mana software dapat menerima
36
lingkungan yang berbeda (interopability). Perbedaan komputer, operating system serta browser menjadi fokus utama dari pengujian ini. Portability testing dapat dilakukan apabila software telah menetapkan aturan dasar bahwa software dapat ditempatkan di lingkungan yang berbeda. Pengujian ini dapat dilakukan setelah tahap-tahap pengujian lain seperti unit testing, integration testing telah dilakukan terhadap software yang terkait dan batasan lingkungan untuk melakukan testing telah dilakukan.
2.4
Throughput Througput pada dasarnya memiliki definisi yang berbeda dengan
bandwith. Bandwith adalah jumlah besaran data yang mengalir melewati jaringan dalam ukuran bits per second, sedangkan throughput adalah besaran rerata dari paket yang berhasil dikirim lewat jaringan. Data yang dimaksudkan di sini dapat berupa link fisik atau logikal, atau dikirimkan melewati sebuah node network tertentu. Pada jaringan, throuput dibatasi oleh faktor-faktor seperti protokol jaringan yang digunakan, kemampuan router dan switch, maupun jenis kabel seperti ethernet dan serat optik. Throughput pada jaringan wireless dipengaruhi juga oleh adapter jaringan yang terdapat pada sistem klien. Berikut ini adalah perumusan dasar dari perhitungan throughput :
37
Throughput =
/ RTT
Keterangan : Total window size = besaran TCP window size pada operating system RTT = Round Trip Time adalah waktu yang dibutuhkan untuk mengirimkan paket data.
2.5
Web Application Performance Tools (WAPT). Web application performance tools (WAPT) digunakan untuk menguji
aplikasi web serta interface dari web itu sendiri. Tools ini digunakan untuk load dan stress testing pada aplikasi web, situs web, web server dan interface. WAPT cenderung mensimulasikan pengguna virtual yang akan mengulangi baik direkam URL atau URL tertentu dan memungkinkan pengguna untuk menentukan berapa kali atau iterasi yang pengguna virtual akan harus mengulang rekaman URL. Dengan demikian, alat ini berguna untuk memeriksa hambatan dan kebocoran kinerja di website atau web aplikasi sedang diuji. WAPT memiliki spesifikasi sebagai berikut (Kundu, S., 2012): a.
Menangani konten dinamis dan HTTPS / SSL.
b.
Mudah digunakan.
c.
Dukungan untuk pengalihan dan segala jenis proxy.
d.
Jelas laporan dan grafik.