Cassis Cassis
- - Mar 2004
Mar 2004 1 1
Testing Programs Programs Testing with Symmetry Symmetry with - - PowerPoint PPT Presentation
Testing Programs Programs Testing with Symmetry Symmetry with and why why not not Java Java Card Card applets applets and and APIs APIs ? ? and Arnaud Gotlieb Gotlieb Arnaud IRISA / INRIA IRISA / INRIA Rennes, FRANCE Rennes,
Cassis Cassis
Mar 2004 1 1
2 2 Cassis Cassis
Mar 2004
3 3 Cassis Cassis
Mar 2004
A sequential program
4 4 Cassis Cassis
Mar 2004
5 5 Cassis Cassis
Mar 2004
6 6 Cassis Cassis
Mar 2004
7 7 Cassis Cassis
Mar 2004
n : set of permutations over {1,..,n}
1,..,x
n)
θ(1) (1), ..,
θ(n (n) ))
n can be generated by
k to
l
k
l
8 8 Cassis Cassis
Mar 2004
[Gotlieb Gotlieb ISSRE 03] ISSRE 03]
1 x
x ...
x D
k
1’
x ...
x D
l’
k,l ,l is
1 x
x ...
x D
k iff
k,
l,
k
l
2,1 symmetry
x ℕ
9 9 Cassis Cassis
Mar 2004
Symm Symm relation relation
Per. Per.
Perm. Perm. inputs inputs
java.util.Collections
(12 symmetric methods over 19 distincts methods)
|A|,|A|
void void sort sort(List A) (List A)
|A|,|B|
void void copy copy(List B, (List B, List List A) A)
1,n
List List nCopies nCopies( (int int n, n,Object Object O) O)
|A|,1
Object Object max max(Collection A) (Collection A)
|A|,|A|
boolean boolean replaceAll replaceAll(List A, (List A, Object Object oldVal
,Object Object newVal newVal) )
1 1
Cassis Cassis
Mar 2004
11 11 Cassis Cassis
Mar 2004
12 12 Cassis Cassis
Mar 2004
Ex: {a,b} x {c,d,e} gives (a,c),(a,d),(a,e),(b,c),(b,d),(b,e)
13 13 Cassis Cassis
Mar 2004
k,l ,l(θ
k, , ST
p p
θ θ
η = ψ
ψk
k,l ,l (θ
θ) )
k
k,l ,l(θ
k
14 14 Cassis Cassis
Mar 2004
15 15 Cassis Cassis
Mar 2004
k,l ,l(
k,l ,l(
k,l ,l holds
τ := p(
σ := p(
τ ≠
k,l ,l(
τ)
σ ≠
k,l ,l(
σ)
16 16 Cassis Cassis
Mar 2004
17 17 Cassis Cassis
Mar 2004
18 18 Cassis Cassis
Mar 2004
Integer Integer GetMid GetMid( (Integer Integer i, i,Integer Integer j, j,Integer Integer k) k) int int Trityp Trityp( (Integer Integer x, x,Integer Integer y, y,Integer Integer z) z) Vector Vector min_nb min_nb( (Vector Vector V, V, int int n) n)
java.lang.Collections
void void sort sort(List A), (List A), void void copy copy(List A, (List A, List List B), B), bool bool replaceAll replaceAll(List A, (List A, Object Object oldVal
, newVal newVal) )
19 19 Cassis Cassis
Mar 2004
≈ ≈2* 2*10 106
6
≈ ≈10 106
6
≈ ≈10 106
6
Size Size of
D #test data #test data 53.3 sec 53.3 sec 2/2 2/2 ψ ψ|A|,
|A|,Ret Ret
sort sort ° ° min_nb min_nb 9.6 sec 9.6 sec 23/33 23/33 ψ ψ3,1
3,1
trityp trityp 9.4 sec 9.4 sec 2/2 2/2 ψ ψ3,1
3,1
GetMid GetMid time time used used to to prove prove symmetry symmetry Mutation Mutation score score symmetry symmetry programs programs
(CPU time on 1.8GHz Pentium 4 with Sun Standard 1.4.1 JVM)
4606.6 sec 4606.6 sec ≈ ≈25 * 25 * 10 106
6
ψ|A|,|A|
|A|,|A|
replaceAll replaceAll 13.7 sec 13.7 sec ≈ ≈1/2 * 1/2 * 10 106
6
ψ|A|,|B|
|A|,|B|
copy copy 13.1 sec 13.1 sec ≈ ≈1/2 * 1/2 * 10 106
6
ψ|A|,|A|
|A|,|A|
sort sort
Programs extracted from java.lang.Collections
20 20 Cassis Cassis
Mar 2004
21 21 Cassis Cassis
Mar 2004
[ [Ammann Ammann, , Knight Knight TComp’88] TComp’88]
[Emerson, Sistla Sistla CAV CAV’ 93] ’ 93] [ [Ip Ip, , Dill Dill CHDL’93] CHDL’93] Symmetry Symmetry is is used used to prune to prune the the exploration exploration of
the states states space space
[ [Chen Chen, ,Tse Tse, ,Zhou Zhou COMPSAC’01] COMPSAC’01]
1,..,
n)
f(p(x
1),..,p(
n))
22 22 Cassis Cassis
Mar 2004
Ex: Ex: abstract short abstract short javacard.security.Checksum. javacard.security.Checksum. doFinal doFinal(byte (byte inBuff inBuff[], ...) [], ...) which is based on CRC algorithms
23 23 Cassis Cassis
Mar 2004
abstract class Animal { abstract int m(); } class B extends A { int m() {return 0;}; } class C extends A { int m() {return 1;}; } class Use { int p(A a) { return a.m(); }; }