Soal text
Transkripsi dicocokkan dengan 2 halaman naskah asli.
Redaksi dirapikan untuk dibaca. Data, pilihan jawaban, dan subsoal mengikuti naskah; diagram dijelaskan dalam teks atau tabel.
Lompat ke soal
UAS Uji Perangkat Lunak 2025/2026
Selasa, 9 Juni 2026 · 13.00–14.40 WIB (100 menit) · Buku tertutup. Tuliskan NIM/nama tiap lembar; dilarang kerja sama dan memakai perangkat elektronik.
Program yang diuji
Longest Common Subsequence (LCS) mencari subsequence terpanjang yang sama dari dua string. Tidak harus berurutan langsung, tetapi urutan karakter dipertahankan. Contoh “SOFTWARE” dan “SHAREWARE”, LCS “SWARE”. Kode berikut disalin dengan nomor baris dan kesalahan yang memang ada pada soal:
01 function lcs(text1, text2) {
02 const m = text1.length;
03 const n = text2.length;
04 const dp = Array.from({ length: m + 1 }, () => Array(n + 1).fill(0));
05 for (let i = 1; i <= m; i++) {
06 for (let j = 1; j <= n; j++) {
07 if (text1[i - 1] === text2[i - 1]) {
08 dp[i][j] = dp[i - 1][j - 1] + 1;
09 } else {
10 dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]);
11 }
12 }
13 }
14 return dp;
15 }
16 function getAllLCS(text1, text2) {
17 const dp = lcs(text1, text2);
18 const memo = {};
19 function backtrack(i, j) {
20 if (i === 0 || j === 0) return [""];
21 const key = `${i},${j}`;
22 if (memo[key]) return memo[key];
23 if (text1[i - 1] === text2[j - 1]) {
24 return memo[key] = backtrack(i - 1, j - 1)
25 .map(s => s + text2[i - 1]);
26 }
27 const result = [];
28 if (dp[i - 1][j] > dp[i][j - 1]) {
29 result.push(...backtrack(i - 1, j));
30 }
31 if (dp[i][j - 1] >= dq[i - 1][j]) {
32 result.push(...backtrack(i, j - 1));
33 }
34 return memo[key] = [...new Set(result)];
35 }
36 return backtrack(text1.length, text2.length);
37 }
38 const text1 = "SOFTWARE";
39 const text2 = "SHAREWARE";
40 const dp = lcs(text1, text2);
41 console.log("Panjang LCS:", dp[text1.length][text2.length]);
42 console.log("Semua LCS:", getAllLCS(text1, text2));
1. Butir uji (40%)
Sebutkan delapan butir uji pada tingkat unit, lengkap dengan jenis pengujian, metode pengujian, masukan, dan keluaran yang diharapkan.
2. Otomatisasi (30%)
Tuliskan fungsi JavaScript untuk menguji otomatis delapan butir pada soal 1.
3. Bug (30%)
Temukan lima bug. Sebutkan nomor baris, jenis bug, alasan identifikasi, dan baris program yang seharusnya.