Critical Review
Critical Review
NIM : 23522049
Reference : Z. Peng, T. -H. Chen and J. Yang, "Revisiting Test Impact Analysis in Continuous
Testing From the Perspective of Code Dependencies," in IEEE Transactions on
Software Engineering, vol. 48, no. 6, pp. 1979-1993, 1 June 2022, doi:
10.1109/TSE.2020.3045914.
Paper Link : https://ieeexplore.ieee.org/document/9303402
1. Research Topic
Meninjau efektifitas Test Impact Analysis pada pelaksanaan Continous Testing berkaitan dengan
hubungan ketergantungan (dependencies) antar source code, antar test case, maupun hubungan
ketergantungan antara source code dan test case
Latar Belakang :
Continuous Integration (CI) merupkan suatu praktek pengembangan perangkat lunak dengan cara
mengintegrasikan perubahan code dalam suatu repository sekali atau beberapa kali sehari dan bersifat
terus menerus. Untuk memastikan bahwa tidak ada masalah yang akan ditimbulkan terhadap perubahan
code yang diintegrasikan ke dalam respository, perlu dilakukan testing terhadap setiap integrasi code
(pada setting CI, hal ini dinamakan Continous Testing). Namun menjalankan test case dalam jumlah
besar secara terus menerus memakan biaya dan sumber daya komputer yang tinggi. Orso et al. dan
legunsen et al. menemukan bahwa menganalisis ketergantungan kelas statis antara source code dan test
case dapat mengurangi jumlah eksekusi test case yang akan dilakukan dengan cara secara efektif
mengidentifikasi dan mengeksekusi hanya test case yang “terdampak” akibat perubahan code (pada
paper ini, hal ini disebut test impact analysis).
Efektifitas dari test impact analysis ini sangat bergantung dengan desain test cases, khususnya
code dependencies. Tidak seperti pengembangan perangkat lunak tradisional dimana test cases di
eksekusi sekali dalam beberapa waktu, pada setting CI dimana integrasi code dan testing terus menerus
dilakukan, derajat code dependency yang tinggi akan mengakibatkan akumulasi testing yang sangat
tinggi. Derajat code dependency yang tinggi mungkin akan mengurangi efektifitas dari test impact
analysis dan menambah tingkat kesulitan test maintenance. Maka dari itu, dibutuhkan pengkajian lebih
dalam terhadap pengaruh code dependency terhadap efektifitas test impact analysis pada setting CI.
IF5143 Information Technology Research and Innovation
Penelitian terkait :
Tujuan dari penelitian ini adalah mengkaji pengaruh code dependency terhadap efektifitas test impact
analysis pada praktek Continuous Integration.
Research Questions :
Adapun research question yang perlu dijawab pada paper ini adalah :
1. Apa dampak dependencies dari sudut pandang test impact analysis pada continuous testing?
2. Apa derajat dependencies antara test case dan file-file source code?
3. Apa derajat dependencies antar test case?
4. Apa saja Test Smell terkait dependency mungkin berdampak negative pada desain test case?
Output dari penelitian ini adalah hasil kaji yang menerangkan factor-faktor dan test smells yang dapat
mempengaruhi test impact analysis terkait dengan code dependency.
4. Proposed Artifact
Proposed Artifact :
2. JavaParser
Java parser adalah sebuah framework open source untuk analisis static yang mendukung versi
terbaru java. Dalam paper ini, Java parser digunakan untuk mengungkapkan secara static dependency
pada system yang dipelajari. Pertama-tama peneliti mengkonstrak graf dependency level class yang
mencakup test case dan file source code. Graf dependency menyimpan informasi tentang ada tidaknya
dependency antara kedua file (test case atau file source code)
Result :
Hasil yang menjawab research question
1. Apa dampak dependencies dari sudut pandang test impact analysis pada continuous testing?
Hasil :
Walaupun jumlah file yang di ubah sehari hari kecil, Sebagian test case terdampak akibat
perubahan file tersebut. derajat dependency yang tinggi tersebut mempengaruhi efektifitas
penggunaan test impact analysis untuk mengurangi testing overhead.
2. Apa derajat dependencies antara test case dan file-file source code?
Hasil :
Kebanyakan test case yang di eksekusi pada praktik Continuous testing melingkupi beberapa file
source code dalam beberapa package yang berbeda, bahkan banyak test case yang meliputi lebih
dari 20 file.
4. Apa saja Test Smell terkait dependency mungkin berdampak negative pada desain test case?
Hasil :
1. Test Smell 1 : inheritance merupakan penyebab adanya duplikasi eksekusi test.
2. Test Smell 2 : perlengkapan test yang tersebar disebabkan oleh inheritance
3. Test smell 3 : menggunakan test case inheritance untuk melakukan test pada polimorfisme
test case
4. Test smell 4 : flaky test disebabkan oleh pengaksesan sumber daya atau variable bersama.
Contributions :
Paper yang di buat penulis menyediakan Langkah pertama yang penting untuk mempelajari dan
memahami desain test case pada praktik CI terkait code dependency dan dampaknya terhadap test
impact analysis. Hasil penelitian penulis dapat membantu pengembang perangkat lunak untuk
meningkatkan desain test case dengan cara memfaktorisasi ulang code dependency yang tidak di
butuhkan berdasarkan test smell yang sudah di identifikasi penulis. Selain itu, paper ini dapat
menginspirasi penelitian pengujian perangkat lunak di masa depan untuk meningkatkan desain test dan
efisiensi eksekusi test pada Continuous Testing.
Kontribusi yang diberikan penulis antara lain :
1. Penulis menemukan bahwa perubahan file yang terjadi sehari-hari seringkali berjumlah kecil
(rentang median 3-28 class di seluruh system yang dipelajari). Namun, kebanyakan test case
(sekitar 50% atau lebih) memiliki dependency dengan file yang dimodifikasi dan berkemungkinan
untuk dieksekusi di setiap build.
2. Test case yang dipelajari seringkali focus pada pengujian integrated behaviour dari sistem. Rata-
rata 15% test case memiliki dependency dengan 20 atau lebih file source code. Penulis juga
menemukan bahwa file source code di dalam sebuah test case seringkali dimiliki oleh package
berbeda.
3. Penulis menemukan bahwa rata-rata 18 persen dari test case memiliki dependency dengan test
case yang lainnya. Studi manual yang dilakukan penulis menemukan bahwa kebanyakan
dependency disebabkan oleh 4 alasan : inheritance antar test case, test case yang mengandung
IF5143 Information Technology Research and Innovation
public test utility method, variabel yang digunakan bersama-sama oleh beberapa test case, dan
test case meng-create intansi dari test case lain atau menggunakan instansi sebagai parameter.
4. Penulis mendokumentasikan 4 smell test terkait dependency yang ditemukan secara manual oleh
penulis. Penulis melaporkan beberapa instansi dari setiap test smell kepada developer, dan
instansi tersebut dikonfirmasi atau diperbaiki.
Conclusion
Berdasarkan hasil penelitian yang ditemukan oleh penulis, penulis berhasil menemukan dampak
dependency terhadap test impact analysis, derajat dependency, dan test smell yang mengakibatkan
penurunan efektifitas test impact analysis. Studi yang dilakukan penulis meng-highlight kebutuhan dan
menyediakan pandangan tentang pengurangan eksekusi test dan peningkatan desain test.
Future Directions
1. Dibutuhkan peningkatan efektifitas lebih lanjut untuk test impact analysis pada CI setting
2. Dibutuhkan kesempatan penelitian di masa depan untuk mengajukan Teknik khusus yang bisa
mengurangi code dependency untuk meningkatkan test impact analysis.
3. Dibuthkan pengkajian ulang dan peningkatan desain test case.