DTC determine test cases algorithm re-written

This commit is contained in:
Robin Clark 2010-09-11 17:52:39 +01:00
parent 8c0cc0e46d
commit 5722c41c68

View File

@ -157,36 +157,73 @@ $$ dtc(F) = TC $$
\COMMENT { Each set $tc_j$ is a `test case' } \COMMENT { Each set $tc_j$ is a `test case' }
%\STATE { $ \forall j \in J | tc_j \in TC $ } \COMMENT {Ensure the test cases are complete and unique} %\STATE { $ \forall j \in J | tc_j \in TC $ } \COMMENT {Ensure the test cases are complete and unique}
\STATE { $ TC := \emptyset $ } \COMMENT{Initialise set of test cases}
\STATE { $ j := 1 $ } \COMMENT{Initialise index of test cases}
\FORALL { $ f \in F $ }
\STATE{$ tc_j := f $} \COMMENT{ Assign one test case per single fault mode }
\STATE{ $ j := j + 1 $}
\ENDFOR
\STATE { Let $ptc$ be a provisional test case } \COMMENT{ Determine Test cases with simultaneous failure modes }
\IF{DoubleFaultChecking}
\STATE { Let $ptc$ be a provisional test case }
\FORALL { $ f1,f2 \in F $ }
\STATE { $ ptc := \{ f1,f2 \} $ } \COMMENT{Make a provisional test case}
%\STATE { FINDING ERRORS IN LATEX SOURCE IS FUCKING ANNOYING}
%% OK maybe you can't have comments after IF: half an hour wasted...
\IF { $ \mathcal{ISUNITARYSTATE}(ptc) $ } % \COMMENT{Ensure the chosen failure mode set is unitary state compliant}
\STATE{ $ j := j + 1 $} % latex bug hunt game what fun ! #2
\STATE { $ tc_j := ptc $}
\STATE { $ TC := TC \cup tc_j $ }
\ENDIF
\ENDFOR
\ENDIF
\FORALL { $ ptc \in \mathcal{P}(F) $ } %%\mathcal{P} F $ }
%%\STATE { $ ptc \in \mathcal{P} F $ } \COMMENT{Make a provisional test case}
\IF { $\mathcal{CHOSEN}(ptc) \wedge ptc \not\in TC \wedge \mathcal{ISUNITARYSTATE}(ptc)$ } %%% \COMMENT{IF this combination of faults is chosen as an additional Test case include it in TC}
\STATE{ $ j := j + 1 $} % latex bug hunt game #1
\STATE { $ tc_j := ptc $}
\STATE { $ TC := TC \cup tc_j $ }
\ENDIF
\ENDFOR
\FORALL { $tc_j \in TC$ } \FORALL { $tc_j \in TC$ }
%\ENSURE {$ tc_j \in \bigcap FG_{cfm} $} %\ENSURE {$ tc_j \in \bigcap FG_{cfm} $}
\ENSURE {$ tc_j \in \mathcal{P}(F)$} \ENSURE {$ tc_j \in \mathcal{P}(F) $ } % \mathcal{P}(F)$}
\COMMENT { require that the test case is a member of the powerset of $F$ } \COMMENT { require that the test case is a member of the powerset of $F$ }
%\ENSURE { $ \forall \; j2 \; \in J ( \forall \; j1 \; \in J | tc_{j1} \neq tc_{j2} \; \wedge \; j1 \neq j2 ) $} %\ENSURE { $ \forall \; j2 \; \in J ( \forall \; j1 \; \in J | tc_{j1} \neq tc_{j2} \; \wedge \; j1 \neq j2 ) $}
\ENSURE { $\forall j1,j2 \in J \; such\; that\; tc_{j1} \neq tc_{j2} \; \wedge \; j1 \neq j2 $} \ENSURE { $\forall j1,j2 \in J \; such\; that\; tc_{j1} \neq tc_{j2} \; \wedge \; j1 \neq j2 $}
\COMMENT { Test cases must be unique } \COMMENT { Test cases must be unique }
\ENDFOR \ENDFOR
%
% \IF{Single fault checking}
\IF{Single fault checking} % \STATE { let $f$ represent a component failure mode }
\STATE { let $f$ represent a component failure mode } % %\ENSURE { That all failure modes are represented in at least one test case }
%\ENSURE { That all failure modes are represented in at least one test case } % \ENSURE { $ \forall f \;such\;that\; (f \in F)) \wedge (f \in \bigcup TC) $ }
\ENSURE { $ \forall f \;such\;that\; (f \in F)) \wedge (f \in \bigcup TC) $ } % \COMMENT { This corresponds to checking that at least each failure mode is considered at
\COMMENT { This corresponds to checking that at least each failure mode is considered at % least once in the analysis; more rigorous cardinality constraint
least once in the analysis; more rigorous cardinality constraint % checks may be required for some safety standards}
checks may be required for some safety standards} % \ENDIF
\ENDIF %
% \IF{Double fault checking}
\IF{Double fault checking} % \STATE { let $f1,f2$ represent component failure modes, and $c$ any component in the functional group }
\STATE { let $f1,f2$ represent component failure modes, and $c$ any component in the functional group } % %\ENSURE { That all failure modes are represented in at least one test case }
%\ENSURE { That all failure modes are represented in at least one test case } % \ENSURE { $ \forall f1,f2 \;where\; (f1,f2) \not\in c\;such\;that\; (f1,f2 \in F)) \wedge ( \{f1,f2\} \in \bigcup TC) $ }
\ENSURE { $ \forall f1,f2 \;where\; (f1,f2) \not\in c\;such\;that\; (f1,f2 \in F)) \wedge ( \{f1,f2\} \in \bigcup TC) $ } % \COMMENT { This corresponds to checking that each possible double failure mode is considered
\COMMENT { This corresponds to checking that each possible double failure mode is considered % as a test case; more rigorous cardinality constraint
as a test case; more rigorous cardinality constraint % checks may be required for some safety standards. Note if both failure modes
checks may be required for some safety standards. Note if both failure modes % in the check are sourced from the same component $c$, the test case is impossible
in the check are sourced from the same component $c$, the test case is impossible % under unitary state failure mode conditions}
under unitary state failure mode conditions} % \ENDIF
\ENDIF %
\RETURN $TC$ \RETURN $TC$
% some european standards % some european standards
% imply checking all double fault combinations\cite{en298} } % imply checking all double fault combinations\cite{en298} }