You are on page 1of 12

DATA-FLOW TEST DESIGN TECHNIQUE

 Dalam White-box test design, bagi menguji struktur source-code, kita perlu merekabentuk test
berdasarkan control-flow dan data-flow. Control-flow menguji struktur kawalan sama ada
statement, condition, branch dan juga path yang ada dlm source code semasa code di-execute.
 Selain itu, kita juga perlu menguji aliran nilai bagi setiap variable yg ada dlm source-code
menggunakan teknik rekabentuk data-flow.
 Maka, sekiranya kita menggunakan teknik data-flow test design, kita perlu mencari berapakah
bilangan test case yang mungkin untuk cover 100% aliran data bagi setiap variable yang ada.
 Oleh itu, kita perlu bina test case berdasarkan setiap variable yg ada. Jika ada 10 variable dlm
source-code, maka kena bina sejumlah test-case yang bersesuaian untuk setiap satu variable
berkenaan.
 Kita perlu bina test-case guna teknik data-flow untuk mencari kemungkinan kewujudan
defect/error dalam source code yang berkaitan proses data. Contohnya variable x digunakan dalam
operasi tambah tanpa ianya di-declare terlebih dahulu.
 Dalam static testing (test tanpa perlu execute source-code), kaedah data-flow juga digunakan
dalam static analysis. Cuma perbezaannya adalah pada static analysis, compiler digunakan untuk
menguji dan tester tidak perlu design test-case.
 Tetapi, tidak semua jenis error mampu dikenalpasti oleh compiler kerana source-code tidak
diexecute. Hanya syntax error sahaja yang dikenalpasti.

Bagaimana Hendak Merekabentuk Test-Case Bagi Data-Flow:

LANGKAH PERTAMA: Bina CFG bagi setiap variable.

1. Bina Control Flow Graph(CFG) yang sama seperti kaedah control-flow technique.

Source code pada rajah 1 mengira jumlah bil yang perlu dibayar berdasarkan
penggunaan.
Rajah 2: CFG bagi source-code CalculateBill()

2. Kemudian, wakilkan setiap operasi yang melibatkan variable dengan notasi pada jadual 1
dalam source-code:

Jadual 1: Notasi Operasi Data

Notasi Penerangan Contoh


d atau Operasi declare, initialization atau creation int x;  d(x) atau def x
def bagi variable/instance. x = 2;  d(X) atau def x

Killed, terminate, undefined (variable akan ‘}’ terakhir dalam fungsi akan
k atau kill diterminate/killed apabila tamat fungsi atau hapuskan semua var yang ada
memory bg variable dihapuskan )  k(x) atau kill x.
Used/ digunakan bagi pelbagai operasi sama
u atau
ada operasi pengiraan(c) atau condition(p). -
use
Penerangan lanjut pada baris di bawah.
Digunakan bagi operasi variable yang z = x + 3;  uc(x) atau c-use x
uc atau c-
melibatkan pengiraan atau selain daripada printf(x);  uc(x) atau c-use x
use
condition. return x;  uc(x) atau c-use x

up atau Digunakan bagi operasi variable yang


if(x > 1)  up(x) atau p-use x
p-use melibatkan condition.

~x Tiada operasi sebelum x


x~ Tiada operasi selepas x
def usage
def bill
p-use usage
def bill

p-use usage
p-use usage
c-use bill & def bill c-use usage

c-use bill & def bill c-use usage


p-use bill
c-use bill & def bill

c-use bill

3. Bina CFG bagi setiap var. Terdapat 2 var dalam calculateBill(), maka perlu bina 2 CFG. Nyatakan
flow operasi bagi setiap var dlm CFG berdasarkan notasi yang telah ditentukan.
Rajah 3: CFG bagi operasi var Bill
Rajah 3: CFG bagi operasi Bill

Rajah 4: CFG bagi operasi Usage

LANGKAH KE-DUA: Design dan tentukan bilangan test case bagi setiap variable berdasarkan 7 Strategi
berikut:

1. All-Definition (AD)
Bagi semua def yang ada dalam source code bagi variable tersebut, kenalpasti at least 1 test
path(TP) kepada mana-mana use (sama ada p-use atau c-use).
 Kenalpasti bil. def bagi var Bill dalam cfg pada rajah 3 : 5 def (nod 1,3,6,8 dan 9)
 Cari TP yang mungkin (def->use) bagi setiap def :

def nod 1 TP1: 1-2-10


def nod 3 3-4-5-6
3-4-10 pilih salah satu sahaja. Maka TP2: 3-4-5-6
3-4-5-9
def nod 6 TP3: 6-7
def nod 8 TP4: 8-10
def nod 9 TP5: 9-10

 Maka, bilangan test case bagi 100% AD coverage untuk var Bill adalah 5.
 Kenalpasti bil. Def bagi var Usage pada rajah 4 : 1 def (nod 0).
 Cari TP yang mungkin (def->use) bagi def di nod 0 - TP1: 0-1-2.
 Maka, bilangan test case bagi 100% AD coverage untuk var Usage adalah 1.
2. All-uses (AU)

Bagi semua use(p-use dan c-use) yang ada dalam source code bagi variable tersebut,
kenalpasti at least 1 TP dari use tersebut kepada mana-mana def sebelumnya (use  def).

 Kenalpasti bil. use yang ada bagi var Bill pada rajah 3: 5 use (nod 6,7,8,9,10)
 Cari TP yang mungkin (use  def) bagi setiap use:
use nod 6 TP1: 3-4-5-6
use nod 7 TP2: 6-7
use nod 8 TP3: 6-7-8
use nod 9 TP4: 3-4-5-9
use nod 10 8-10
9-10 pilih salah satu sahaja. Maka TP5: 8-10
3-4-10
1-2-10

 Maka, bilangan TP bagi 100% AU coverage bagi var Bill adalah 5.


 Kenalpasti bil. use yang ada bagi var Usage pada rajah 4: 5 use (nod 2,4,5,6,9).
 Cari TP yang mungkin (use  def) bagi setiap use:
use nod 2 TP1: 0-1-2
use nod 4 TP2: 0-1-2-3-4
use nod 5 TP3: 0-1-2-3-4-5
use nod 6 TP4: 0-1-2-3-4-5-6
use nod 9 TP5: 0-1-2-3-4-5-9
 Maka, bilangan TP bagi 100% AU coverage bagi var Usage adalah 5.

3. All-c-uses (ACU)

Bagi semua def yang ada dalam source-code bagi variable berkenaan, kenalpasti at least 1 TP
yang mungkin dari def kepada setiap c-use yang boleh dicapai (defc-use). Pastikan semua
TP telah cover semua def dan semua c-use.

 Kenalpasti bil def yang ada pada var Bill pada rajah 3: 5 def (nod 1,3,6,8,9).
 Kenalpasti bil c-use yang ada pada var Bill pada rajah 3: 4 c-use (nod 6,8,9,10).
 Cari semua TP yang mungkin (defc-use) bagi setiap def.pastikan semua c-use juga
dicover:
def nod 1 TP1: 1-2-10 def 1 dan c-use 10 telah dicover
def nod 3 3-4-5-6 Sekiranya terdapat lebih dari 1 TP, pilih TP
3-4-5-9 yg cover c-use selain 10.
3-4-10 Maka TP2: 3-4-5-6 dan TP3: 3-4-5-9
def nod 6 6-7-8 Sekiranya terdapat lebih dari 1 TP, pilih TP
6-7-10 yg cover selain c-use 10,6,9. Maka
TP4: 6-7-8
def nod 8 TP5: 8-10 Ambil TP yg ada sekiranya terdapat 1TP
bagi defc-use walaupun c-use telah
dicover pada TP sebelumnya.
def nod 9 TP6: 9-10 Sama seperti def 8
 Maka, bilangan TP bagi 100% ACU coverage bagi var Bill adalah 6.
 Kenalpasti bil. def bagi var Usage pada rajah 4 : 1 def (nod 0).
 Kenalpasti bil. c-use yang ada bagi var Usage pada rajah 4: 2 (nod 6,9).
 Cari semua TP yang mungkin (defc-use) bagi setiap def.pastikan semua c-use juga
dicover:
def nod 0 TP1: 0-1-2-3-4-5-6 Sekiranya terdapat lebih dari 1 TP,
TP2: 0-1-2-3-4-5-9 pilih TP yg cover semua nod
c-use(6,9).

 Maka, bilangan TP bagi 100% ACU coverage bagi var Usage adalah 2.

4. All-p-uses (APU)

Bagi semua def yang ada dalam source-code bagi variable berkenaan, kenalpasti at least 1 TP
yang mungkin dari def kepada setiap p-use yang boleh dicapai (defp-use). Pastikan semua
TP telah cover semua def dan semua p-use.

 Kenalpasti bil def yang ada pada var Bill pada rajah 3: 5 def (nod 1,3,6,8,9).
 Kenalpasti bil p-use yang ada pada var Bill pada rajah 3: 1 (nod 7).
 Cari semua TP yang mungkin (defp-use) bagi setiap def.pastikan semua p-use juga
dicover:
def nod 1 TP1: 1-2-3-4-5-6-7
def nod 3 TP2: 3-4-5-6-7 Ambil TP yg ada sekiranya terdapat
1TP shj walaupun p-use telah dicover
pada TP bagi def lain kerana perlu
untuk cover def nod 3.
def nod 6 TP3: 6-7 Sama seperti def nod 3.

def nod 8 None Tiada TP yg mungkin bagi defp-use


Bagi def nod 8.
def nod 9 None Tiada TP yg mungkin bagi defp-use
Bagi def nod 8.

 Maka, bilangan TP bagi 100% APU coverage bagi var Bill adalah 3.
 Kenalpasti bil. def bagi var Usage pada rajah 4 : 1 def (nod 0).
 Kenalpasti bil. p-use yang ada bagi var Usage pada rajah 4: 3 (nod 2,4,5).
 Cari semua TP yang mungkin (defp-use) bagi setiap def.pastikan semua p-use juga
dicover:
def nod 0 TP1: 0-1-2 Sekiranya terdapat lebih dari 1 TP,
TP2: 0-1-2-3-4 pilih TP yg cover semua nod p-use
TP3: 0-1-2-3-4-5 (nod 2,4,5).

 Maka, bilangan TP bagi 100% APU coverage bagi var Usage adalah 3.
5. All-c-uses/Some-p-uses (ACU+P)

Syarat yang sama dengan ACU, tetapi sekiranya wujud mana-mana def yang tidak mempunyai
path kepada c-use, perlu digantikan dengan defp-use.

 Ambil TP bagi ACU var Bill sebelum ini, kemudian semak adakah terdapat def yang tidak
mempunyai TP defc-use. Jika ada, gantikan dengan TP defp-use bagi nod def
berkenaan.
def nod 1 TP1: 1-2-10
def nod 3 TP2: 3-4-5-6
TP3: 3-4-5-9
def nod 6 TP4: 6-7-8
def nod 8 TP5: 8-10
def nod 9 TP6: 9-10
 Semua def mempunyai TP defc-use. Maka tidak perlu penambahan TP defp-use
bagi mana2 nod def.
 Maka, bilangan TP bagi 100% ACU+P coverage untuk var Bill adalah 6.
 Ambil TP bagi ACU var Usage sebelum ini, kemudian semak adakah terdapat def yang
tidak mempunyai TP defc-use. Jika ada, gantikan dengan TP defp-use bagi nod def
berkenaan.

def nod 0 TP1: 0-1-2-3-4-5-6


TP2: 0-1-2-3-4-5-9
 Semua def mempunyai TP defc-use. Maka tidak perlu penambahan TP defp-use
bagi nod def 0.
 Maka, bilangan TP bagi 100% ACU+P coverage untuk var Usage adalah 2.

6. All-p-uses/Some-c-uses (APU+C)

Syarat yang sama dengan APU, tetapi sekiranya wujud mana-mana def yang tidak mempunyai
path kepada p-use, perlu digantikan dengan defc-use.

 Ambil TP bagi APU var Bill sebelum ini, kemudian semak adakah terdapat def yang tidak
mempunyai TP defp-use. Jika ada, gantikan dengan TP defc-use bagi nod def
berkenaan.

def nod 1 TP1: 1-2-3-4-5-6-7


def nod 3 TP2: 3-4-5-6-7
def nod 6 TP3: 6-7
def nod 8 None Perlu ganti dengan defc-use bagi nod 8.
Maka TP4: 8-10
def nod 9 None Perlu ganti dengan defc-use bagi nod 9.
Maka TP5: 9-10

 Terdapat 2 def nod yang tidak mempunyai TP defp-use iaitu nod 8 dan 9. Maka bagi
setiap nod def, gantikan dengan TP defc-use.
 Maka, bilangan TP bagi 100% APU+C coverage untuk var Bill adalah 5.
 Ambil TP bagi APU var Usage sebelum ini, kemudian semak adakah terdapat def yang
tidak mempunyai TP defp-use. Jika ada, gantikan dengan TP defc-use bagi nod def
berkenaan.
def nod 0 TP1: 0-1-2
TP2: 0-1-2-3-4
TP3: 0-1-2-3-4-5
 Semua def mempunyai TP defp-use. Maka tidak perlu penambahan TP defp-use
bagi nod def 0.
 Maka, bilangan TP bagi 100% APU+C coverage untuk var Usage adalah 3.

7. All-du-path (ADUP)
Mengambil semua TP bagi ACU+P dan APU+C.

 Ambil hasil TP bagi ACU+P dan APU+C bagi var Bill:

TP bagi ACU+P
def nod 1 TP1: 1-2-10
def nod 3 TP2: 3-4-5-6
TP3: 3-4-5-9
def nod 6 TP4: 6-7-8
def nod 8 TP5: 8-10
def nod 9 TP6: 9-10
TP bagi APU+C
def nod 1 TP7: 1-2-3-4-5-6-7
def nod 3 TP8: 3-4-5-6-7
def nod 6 TP9: 6-7
def nod 8 TP10: 8-10 Sama dengan TP5. Hapus TP10.
def nod 9 TP11: 9-10 Sama dengan TP6. Hapus TP11.

 Hapus mana-mana TP yang sama(duplicate). TP10 dan TP11 bertindan dengan TP5 dan
TP6. Hapus TP10 dan TP11. Maka, bilangan TP bagi 100% ADUP coverage untuk var Bill
adalah 9.
 Ambil hasil TP bagi ACU+P dan APU+C bagi var Usage:
TP bagi ACU+P
def nod 0 TP1: 0-1-2-3-4-5-6
TP2: 0-1-2-3-4-5-9
TP bagi APU+C
Def nod 0 TP3: 0-1-2
TP4: 0-1-2-3-4
TP5: 0-1-2-3-4-5
 Hapus mana-mana TP yang sama(duplicate). Tiada TP yang duplicate. Maka, bilangan
TP bagi 100% ADUP coverage untuk var Usage adalah 5.
 Rumusan keseluruhan TP bagi ketujuh-tujuh strategi untuk var Bill dan Usage:
Jadual 2: TP bagi var Bill dan Usage untuk 7 strategi Data-Flow
Strategy TP bagi var Bill TP bagi var Usage
TP1: 1-2-10 TP1: 0-1-2
TP2: 3-4-5-6
AD TP3: 6-7
TP4: 8-10
TP5: 9-10
TP1: 3-4-5-6 TP1: 0-1-2
TP2: 6-7 TP2: 0-1-2-3-4
AU TP3: 6-7-8 TP3: 0-1-2-3-4-5
TP4: 3-4-5-9 TP4: 0-1-2-3-4-5-6
TP5: 8-10 TP5: 0-1-2-3-4-5-9
TP1: 1-2-10 TP1: 0-1-2-3-4-5-6
TP2: 3-4-5-6 TP2: 0-1-2-3-4-5-9
TP3: 3-4-5-9
ACU
TP4: 6-7-8
TP5: 8-10
TP6: 9-10
TP1: 1-2-3-4-5-6-7 TP1: 0-1-2
APU TP2: 3-4-5-6-7 TP2: 0-1-2-3-4
TP3: 6-7 TP3: 0-1-2-3-4-5
TP1: 1-2-10 TP1: 0-1-2-3-4-5-6
TP2: 3-4-5-6 TP2: 0-1-2-3-4-5-9
TP3: 3-4-5-9
ACU+P
TP4: 6-7-8
TP5: 8-10
TP6: 9-10
TP1: 1-2-3-4-5-6-7 TP1: 0-1-2
TP2: 3-4-5-6-7 TP2: 0-1-2-3-4
APU+C TP3: 6-7 TP3: 0-1-2-3-4-5
TP4: 8-10
TP5: 9-10
TP1: 1-2-10 TP1: 0-1-2-3-4-5-6
TP2: 3-4-5-6 TP2: 0-1-2-3-4-5-9
TP3: 3-4-5-9 TP3: 0-1-2
TP4: 6-7-8 TP4: 0-1-2-3-4
ADUP TP5: 8-10 TP5: 0-1-2-3-4-5
TP6: 9-10
TP7: 1-2-3-4-5-6-7
TP8: 3-4-5-6-7
TP9: 6-7
LANGKAH KE-TIGA: Bina Test Case dengan menentukan test data (nilai input) dan expected result bagi
setiap TP yang dikenalpasti.
 Bagi kedua-dua TP var iaitu Bill dan Usage, test data adalah nilai bagi var usage pada nod 0
dan expected result merupakan nilai bagi var Bill pada nod 11.

Jadual 3: Test-case bagi var Bill


Strategy TP Test Data Expected Result
TP1: 1-2-10 0 0.0
TP2: 3-4-5-6 220 92.0
AD TP3: 6-7 220 92.0
TP4: 8-10 350 94.5
TP5: 9-10 220 92.0
TP1: 3-4-5-6 220 92.0
TP2: 6-7 220 92.0
AU TP3: 6-7-8 350 94.5
TP4: 3-4-5-9 170 75.0
TP5: 8-10 350 94.5
TP1: 1-2-10 0 0.0
TP2: 3-4-5-6 220 92.0
TP3: 3-4-5-9 170 75.0
ACU
TP4: 6-7-8 350 94.5
TP5: 8-10 350 94.5
TP6: 9-10 170 75.0
TP1: 1-2-3-4-5-6-7 220 92.0
APU TP2: 3-4-5-6-7 220 92.0
TP3: 6-7 220 92.0
TP1: 1-2-10 0 0.0
TP2: 3-4-5-6 220 92.0
TP3: 3-4-5-9 170 75.0
ACU+P
TP4: 6-7-8 350 94.5
TP5: 8-10 350 94.5
TP6: 9-10 170 75.0
TP1: 1-2-3-4-5-6-7 220 92.0
TP2: 3-4-5-6-7 220 92.0
APU+C TP3: 6-7 220 92.0
TP4: 8-10 350 94.5
TP5: 9-10 170 75.0
TP1: 1-2-10 0 0.0
TP2: 3-4-5-6 220 92.0
TP3: 3-4-5-9 170 75.0
TP4: 6-7-8 350 94.5
ADUP TP5: 8-10 350 94.5
TP6: 9-10 170 75.0
TP7: 1-2-3-4-5-6-7 220 92.0
TP8: 3-4-5-6-7 220 92.0
TP9: 6-7 220 92.0
 Untuk menguji data-flow coverage bagi Bill, tester hanya perlu menguji TC bagi strategi ADUP
sahaja kerana kesemua TC ADUP telah cover semua strategi yang lain (AD, AU, ACU, APU,
ACU+P, APU+C). Maka hanya 9 TC diperlukan bagi 100% data-flow coverage bagi var Bill.
Jadual 4: Test Case bagi var Usage

Strategy TP Test Data Expected Result


AD TP1: 0-1-2 0 0.0
TP1: 0-1-2 0 0.0
TP2: 0-1-2-3-4 170 75.0
AU TP3: 0-1-2-3-4-5 170 75.0
TP4: 0-1-2-3-4-5-6 220 92.0
TP5: 0-1-2-3-4-5-9 170 75.0
TP1: 0-1-2-3-4-5-6 220 92.0
ACU
TP2: 0-1-2-3-4-5-9 170 75.0
TP1: 0-1-2 0 0.0
APU TP2: 0-1-2-3-4 170 75.0
TP3: 0-1-2-3-4-5 170 75.0
TP1: 0-1-2-3-4-5-6 220 92.0
ACU+P
TP2: 0-1-2-3-4-5-9 170 75.0
TP1: 0-1-2 0 0.0
APU+C TP2: 0-1-2-3-4 170 75.0
TP3: 0-1-2-3-4-5 170 75.0
TP1: 0-1-2-3-4-5-6 220 92.0
TP2: 0-1-2-3-4-5-9 170 75.0
ADUP TP3: 0-1-2 0 0.0
TP4: 0-1-2-3-4 170 75.0
TP5: 0-1-2-3-4-5 170 75.0

 Untuk menguji data-flow coverage bagi Usage, tester hanya perlu menguji TC bagi strategi
ADUP sahaja kerana kesemua TC ADUP telah cover semua strategi yang lain (AD, AU, ACU,
APU, ACU+P, APU+C). Maka hanya 5 TC diperlukan bagi 100% data-flow coverage bagi var
Usage.
 Secara keseluruhan, sebanyak 14TC (9TC Bill + 5TC Usage) diperlukan untuk menguji 100%
data-flow coverage bagi source-code calculateBill().
Apakah Jenis Defect/Bug/Anomali Bagi Data-Flow?

 Jadual 5 menerangkan jenis-jenis anomali/defect yang mungkin terjadi pada data-flow. Jenis
anomali “Serious defect” akan mendatangkan error pada source-code. Jenis anomali “potential
bug” pula hanya mengeluarkan amaran “warning” semasa source-code di-compile dan
berkemungkinan mendatangkan error semasa runtime.
Jadual 5: Anomali Bagi Data-Flow Testing

You might also like