• Nenhum resultado encontrado

Grouping Passive Interoperability Test Cases

No documento Nanxing Chen (páginas 105-109)

5.2 Future Work

5.2.1 Improve Trace Verification by Test Case Grouping

5.2.1.3 Grouping Passive Interoperability Test Cases

The test suite reduction techniques introduced in Section 5.2.1.2 however, do not fit for passive interoperability testing. This is due to the fact that interoperability testing involves a SUT that contains at least two IUTs. Normally, the behavior of the SUT can be obtained by computing the global behavior of the IUTs. But due to state explosion, coverage based test suite reduction by global behavior calculation is difficult to realize.

In this chapter, we choose to use another strategy. We study the following issue: We have a large set of test cases and we want to reduce the time of trace verification in passive interoperability testing without sacrificing the property verification capability. In interoperability testing in fact, it happens frequently that several test cases concern the similar functionality. So they often share the same preamble. Therefore, the idea is that: In stead of removing test cases from a test suite, the method aims at integrating adequately all the individual passive iop test casesP IT Ci into a global one – P IT CG.

Suppose we have a passive iop test suite TS, which contains n PITCs. Each P IT Ci (16i6n)is in the form of a deterministic acyclic tree, associated with attributesP assi,Inconclusivei and/orF aili on their trap states. PITCs group- ing procedure is in fact constructing a global P IT CG tree, which are composed of all the transitions of all the PITCs. i.e., it contains the all the information in each individual P IT Ci derived from the corresponding iop test purpose. More- over, the point is that in this way, the common prefix shared by several test cases will appear only once in the P IT CG. Trace verification is thus turning to check whether the recorded traceσ contains one or more branches of the P IT CG tree which are associated with Pass attribute. In other words, trace verification is to traversing the trace only once against the global test case, i,e, all the test cases in parallel. Moreover, as no test case is removed, the global test case has the same non-interoperability detection power as the original unminimized test suite.

The detailed PITC integration procedure is as follows: Initially, the P IT CG is empty. We start by creating an initial root node P IT C0G. Then, we pick up oneP IT Ci from the test suite TS. Then, according to certain order (breath-first or depth-first for example, in this work more precisely in depth-first order), we

check all the transitions of P IT Ci from its initial state to see how they can be integrated into the P IT CG. We require that the global passive iop test case P IT CG must be able to:

1. Identify and associate with appropriate state any attribute information. i.e, all the attributes Pass/Inconclusive/Fail in each individual PITC must be kept for verdict assignment reason.

2. Associate all the states and transitions in each individual PITC with ap- propriate position in the global passive iop test case.

3. Take into account the common preamble shared by several individual PITCs only once.

In order to respect the above obligations and generate correctly the PITC, we use a tuple (P IT CiCurrent, P IT CGCurrent) to indicate the current state in P IT Ci

under checking, and its corresponding position (state) in the global PITC where a transition atP IT CiCurrentcould be integrated. The way of integrating a transition is done according to the following rules:

Rule 1

For a tuple (P IT CiCurrent,P IT CGCurrent), if (P IT CiCurrent,α,P IT CiN ext)∈ △P IT Ci and (P IT CGCurrent, α, P IT CGN ext) ∈ △P IT CG. i.e., a transition labeled by α al- ready exists in the global PITC ( It must have been generated in the global PITC some time before ). In this case there is no need to generate another tran- sition labeled by α in the global PITC ( Common prefix appears only once in the global PITC ). However, if P IT CiN ext is associated with an attribute P assi, Inconclusivei, or F aili, the attribute must be kept and associated to its appro- priate state (stateP IT CGN ext, which is led by the transition labelα) in the global passive iop test case.

The rule is expressed below, where P IT CGN ext.Attribute(P IT CiN ext) means that according to the attribute P assi, Inconclusivei, or F aili associated to P IT CiN ext, the same attribute will be associated to P IT CGN ext as well.

(P IT CiCurrent, α, P IT CiN ext)∈ △P IT Ci (P IT CGCurrent, α, P IT CGN ext)∈ △P IT CG

Attribute(P IT CiN ext)∈ {P assi, Inconclusivei, F aili}

P IT CGN ext.Attribute(P IT CiN ext)

Rule 2

At (P IT CGCurrent, P IT CiCurrent), if (P IT CiCurrent, α,P IT CiN ext)∈△P IT Ci, how- ever (P IT CGCurrent, α, P IT CGN ext) ∈ △/ P IT CG. It means that a transition labeled

byαhas not been generated in the global PITC yet. Then a new transition is cre- ated in P IT CG at its appropriate position. The same, ifP IT CiN ext is associated with an attributeAccept orRefuse, the attribute must be kept and associated to its corresponding state in the global passive iop test case.

(P IT CiCurrent, α, P IT CiN ext)∈ △P IT Ci (P IT CGCurrent, α, P IT CGN ext)∈ △/ P IT CG

Attribute(P IT CiN ext)∈ {P assi, Inconclusivei, F aili}

(P IT CGCurrent,α,P IT CGN ext)∈△P IT CG,P IT CGN ext.Attribute(P IT CiN ext)

Therefore, the traversal of each test case is in fact a tree traversal, that in- tegrates an individual PITC into the global tree. The procedure continues until all theP IT Cshave been examined. After all the test cases have been processed, we can obtain a global passive iop test case P IT CG.

The PITC integration algorithm is written formally below:

In this thesis, we use the depth-first method to traverse the states and the transitions of each PITC.

Variables and functions for PITC grouping

Endi: Boolean value. Endi == True means that all the transitions in P IT Ci have been checked.

P IT CiCurrent.trans: Return the transitions at state P IT CiCurrent. |P IT CiCurrent.trans|: Returns the number of transitions at the state

P IT CiCurrent.

P IT CiCurrent.visited: A set that stores all the transitions that have been checked.

Branch: A stack to store branching states (states which contain more than one transition). Each item inBranchis composed of(P IT CiCurrent, P IT CGCurrent). i.e., it stores a branching state of P IT Ci and its cor- responding state in P IT CG. The operations of Branch involves: Push adds a new item to the top of Branch; Pop removes an item from the top of Branch; Stacktop returns the value of the item from the top position of Branch without deleting it.

transitiongeneration (P IT CiCurrent,P IT CGCurrent,α) is a fonction that implements the two rules Rule 1 and Rule 2 introduced above to add a new transition in P IT CG labeled by α. It takes three inputs:

P IT CGCurrent, P IT CiCurrent, as well as the currently checked transition label α, and adds the transition according to Rule 1 or Rule 2.

Algorithm 5.1 Global Passive Iop Test CaseP IT CG Construction Input : Test suite T S, which containsn P IT Ci (1≤in )

Output : The global passive iop test case P IT CG

Initialization: P IT CG=∅;

create_node(P IT CG,P IT CG0) //*Create the initial node in P IT CG

forall thei= 1, ...ndo

P IT CiCurrentP IT Ci0, P IT CGCurrentP IT CG0

//*Global PITC constructrion begins from the initial node Endi =F alse, P IT CiCurrent.visited=∅

while not Endi do

//*Each transition inP IT Ci must be checked P IT CiCurrent.trans

if |P IT CiCurrent.trans|== 1then a←Γ(P IT CiCurrent)

transitiongeneration (P IT CiCurrent, P IT CGCurrent, a) end

if |P IT CiCurrent.trans| >1 then if P IT CiCurrent/ Branch then

Push(Branch,(P IT CiCurrent, P IT CGCurrent)) end

ifawhereaP IT CiCurrent.transanda /P IT CiCurrent.visitedthen add (P IT CiCurrent.visited, a)

transitiongeneration (P IT CiCurrent, P IT CGCurrent,a) end

else

Pop(Branch,(P IT CiCurrent,P IT CGCurrent)),P IT CiCurrent.visited

if Branch Ó= ∅ then Stacktop(Branch) end

else

Endi =T rue end

end end else

if Branch Ó= ∅ then Stacktop(Branch) end

else

Endi =T rue end

end end end

The function transitiongeneration is written below:

Algorithm 5.2 Transition Generation Function in P IT CG

Input: P IT CiCurrent, P IT CGCurrent, a

Output : P IT CiCurrent, P IT CGCurrent, P IT CG

if (P IT CiCurrent, a, P IT CiN ext) ∈ △P IT Ci and (P IT CGCurrent, a, P IT CGN ext)/

P IT CG then

createtransition (P IT CGCurrent, a, P IT CGN ext) end

if P IT CiN ext{P assi,InconclusiveiF aili } where (P IT CiCurrent, a, P IT CiN ext)

∈ △P IT Ci then

P IT CGN ext.Attribute(P IT CGN ext) where (P IT CGCurrent, a, P IT CGN ext) ∈

P IT CG

//* attributes information must be kept end

P IT CiCurrentP IT CiN ext where P IT CiCurrent, a, P IT CiN ext) ∈ △P IT Ci P IT CGCurrentP IT CGN ext where P IT CGCurrent, a, P IT CGN ext) ∈ △P IT CG

ReturnP IT CiCurrent, P IT CGCurrent,P IT CG

This PITCs integration algorithm needs to check each transition of each PITC once. Therefore it takes time proportional to the length of each PITC. i.e., the algorithm takes time O(L) where L is the total number of transitions of all the PITCs.

From a constructive point of view, the composition tree P IT CG allows to integrate graphically all the transitions in each individual PITC: We construct an integrated iop test purposes composition tree incrementally by adequate inte- gration of the transitions in each individual PITC. At last we obtain a global tree produced by arranging all the transitions into a structured hierarchy, where all the information of each PITC are kept, as well as the associated attributes. The grouped passive iop test case allows parallel trace verification, which is explained in the next subsection.

No documento Nanxing Chen (páginas 105-109)