Pertemuan 10: Testing dan Debugging
Tugas Pertemuan 10
Nama: Farrel Aqilla Novianto
NRP: 5025241015
Kelas: Pemrograman Berorientasi Objek (A)
Testing dan Debugging
Testing adalah salah satu aktivitas yang harus dilakukan sebagai bagian dari tahap pembangunan perangkat lunak. Tujuannya adalah untuk mencari sebanyak-banyaknya kesalahan, error maupun defect. Testing dilakukan dengan mengacu pada test plan dan test cases. Idealnya, testing dilakukan oleh tester, bukan oleh programmer, sehingga lebih obyektif.
Debugging adalah aktivitas yang dilakukan untuk mencari posisi kesalahan dan memperbaikinya apabila dari hasil testing diperoleh indikasi adanya error atau defect. Debugging biasanya dilakukan oleh programmer-nya. Debugging bisa sangat menghabiskan waktu. Untuk itu, perlu diterapkan cara dan strategi yang tepat. Kita bisa memilih satu dari tiga cara:
- Brute force – biasanya kita tambahkan print atau write dimana-mana untuk melacak kesalahan
- Backtracking – source code dianalisis untuk mencari kemungkinan penyebab kesalahan; bergerak dari suatu posisi hingga akhirnya ditemukan posisi kesalahannya
- Cause elimination – menggunakan partisi biner terhadap bagian program untuk memperkecil kemungkinan posisi kesalahan
- Buat objek SalesItem di object bench, misalnya: SalesItem item1 = new SalesItem('Laptop Asus', 15000000);
- Tambahkan komentar: item1.addComment('Fajar', 'Produk bagus!', 5);
- Tampilkan info: item1.showInfo();
- Uji batas rating (1–5) dan larangan komentar ganda dari author yang sama
- Gunakan method findMostHelpfulComment() untuk menemukan komentar paling membantu
Kode SalesItem.java
/**
*
* @author Farrel Aqilla Novianto
*/
import java.util.ArrayList;
public class SalesItem{
private String name;
private int price;
private ArrayList<Comment> comments;
public SalesItem(String name, int price){
this.name = name;
this.price = price;
comments = new ArrayList<Comment>();
}
public boolean addComment(String author, String text, int rating){
if(rating < 1 || rating > 5){
return false;
}
for(Comment comment : comments){
if(comment.getAuthor().equals(author)){
return false;
}
}
Comment newComment = new Comment(author, text, rating);
comments.add(newComment);
return true;
}
public boolean removeComment(Comment comment){
return comments.remove(comment);
}
public int getNumberOfComments(){
return comments.size();
}
public void showInfo(){
System.out.println("=================================");
System.out.println("Item: " + name);
System.out.println("Price: " + price);
System.out.println("Number of comments: " + getNumberOfComments());
for(Comment comment : comments){
comment.print();
System.out.println();
}
}
public Comment findMostHelpfulComment(){
if(comments.isEmpty()){
return null;
}
Comment best = comments.get(0);
for(Comment current : comments){
if(current.getVoteBalance() > best.getVoteBalance()){
best = current;
}
}
return best;
}
}Kode Comment.java
/**
*
* @author Farrel Aqilla Novianto
*/
public class Comment{
private String author;
private String text;
private int rating;
private int upvotes;
private int downvotes;
public Comment(String author, String text, int rating){
this.author = author;
this.text = text;
this.rating = rating;
upvotes = 0;
downvotes = 0;
}
public String getAuthor(){
return author;
}
public void upvote(){
upvotes++;
}
public void downvote(){
downvotes++;
}
public int getVoteBalance(){
return upvotes - downvotes;
}
public void print(){
System.out.println("Author: " + author);
System.out.println("Rating: " + rating);
System.out.println("Comment: " + text);
System.out.println("Votes: " + getVoteBalance());
}
}Dokumentasi
Kesimpulan
Unit testing di BlueJ memungkinkan mahasiswa untuk menguji method dan class secara interaktif tanpa menulis program utama. Dengan cara ini, bug dapat ditemukan lebih cepat dan kode menjadi lebih stabil.
Komentar
Posting Komentar