Anda di halaman 1dari 5

IF5143 Information Technology Research and Innovation

Paper Critical Review

NIM : 23522049

Your Name : Monica Shannaztamara Kanza

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

2. Background and Research Problem

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 :

 Continuous Integration and Continuous Testing


1. Saff Et Al. : memperkenalkan konsep Continuous Testing sebagai cara untuk membantu
pengembang perangkat lunak untuk mengidentifikasi regression error dengan cepat pada
tahapan awal
2. Muslu Et Al. : mendiskusikan keuntungan pemanfaatan proses Continuous Testing untuk
mendeteksi eror pada system yang disebabkan oleh data yang salah.
3. Chen Et Al. : mendokumentasikan pengalaman industrial mereka dan bagaimana cara mereka
mengintegrasikan non-fungsional test case menjadi aliran CI automation
4. Memon Et. Al : mendeskripsikan Teknik yang diadopsi oleh google untuk menaikan skala
continuous testing.

 Test Case Prioritization (TCP) and Test Case Selection (TCS)


1. Elbaum Et Al. : mengadopsi combinasi TCP dan TCS untuk membuat Continuous testing lebih
cost-effective
2. Memon Et Al. : bertujuan untuk menyediakan lebih banyak feedback yang tepat dari
continuous testing untuk developer setelah sebuah komit di submit.
3. Marijan Et Al. : menampilkan sebuah studi kasus tentang penggunaan TCP pada industri
4. Zhu Et Al. : mengusulkan untuk memprioritaskan ulang test cases yang memiliki kemungkinan
gagal berdasarkan eksekusi test sebelumnya pada continuous testing
5. Luo Et Al. : membandingkan 4 teknik TCP static dengan pendekatan dinamis state-of-the-art
6. Engstrom Et Al. : mempelajari 28 teknik TCS dan mengklasifikasikan mereka berdasarkan
propertinya seperti Bahasa perangkat lunak, pendekatan seleksi test, dan glanuralitas seleksi
test.

 Test Case Dependencies and Test Case Quality


1. Zhang Et Al. : mempelajari secara empiris asumsi dari test independence yang mana di
butuhkan oleh banyak TCP dan TCS
2. Spadini Et Al. : melakukan studi empiris pada praktik mocking di unit test
3. Pinto Et Al. : mempelajari evolusi test case
4. Luo Et Al. : mengidentifikasi secara empiris akar yang menyebabkan flaky test, yaitu test yang
ketika dieksekusi terkadang gagal, namun terkadang berhasil
5. Vahabzadeh Et Al. : mempelajari bug pada test code dan menemukan bahwa flaky, semantic,
dan bug terkait environment merupakan masalah yang lumrah.
6. Palomba Et Al : menemukan bahwa lebih dari 50 persen dari flaky test mengandung test
smell, dan menghilangkan test smell dapat membantu meningkatkan desain dan test flakiness
perangkat lunak.
IF5143 Information Technology Research and Innovation
3. Research Objectives and Outputs

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 :

1. Sistem yang digunakan


studi kasus dilakukan pada 11 sistem open-source java, yaitu CXF, Flink, Hadoop, HBase, jclouds,
Kafka, BookKeeper, Hive, Jetty, Cucumber-JVM, Californium. Sistem-sistem tersebut dipilih karena
berskala besar, melakukan praktik CI, di maintain secara aktif, dan biasa di gunakan pada industry.

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)

3. Test Impact Analysis


Test Impact Analysis adalah suatu praktik untuk menganalisis test case dan source code pada
code baru/perbaikan bug yang di integrasikan oleh pengembang Perangkat lunak dengan cara
mengidentifikasi test case dan source code yang terdampak akibat perubahan code tersebut (memiliki
dependency dengan perubahan code). Sehingga eksekusi test case hanya dilakukan pada test case yang
memiliki dependency dengan perubahan code. Pada paper ini, penulis melakakukan test impact analysis
dengan menganalisis dependency static pada class-level antara test case dan file source code yang
mengalami perubahan. Secara khusus, penulis mengidentifikasi test case yang terdampak berdasarkan
dua kriteria berikut :
1. Test case memanggil file yang mengalami perubahan, baik pemanggilan secara langsung
maupun tidak langsung
2. File yang mengalami perubahan memanggil test case, baik pemanggilan secara langsung
maupun tidak langsung.
IF5143 Information Technology Research and Innovation

5. Results and Contributions

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.

3. Apa derajat dependencies antar test case?


Hasil :
Rata-rata 18% dari test case memiliki dependency dengan test case yang lain. Kebanyakan
dependency disebabkan oleh inheritance pada test case dan pengaksesan utility method dalam
test case.

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.

6. Conclusion and Future Directions

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.

Anda mungkin juga menyukai