Abstract
Extended finite state machines (EFSMs) are widely used when deriving tests for checking the functional requirements for software implementations. However, the fault coverage of EFSMbased tests covering appropriate paths, variables, etc., remains rather obscure. Furthermore, these tests are known be incapable of detecting many functional faults frequently occurring in EFSM-based implementations. In this paper, an approach is proposed for deriving complete tests with the help of a proper Java EFSM implementation. Since the software is based on a template, the faults turn directly into EFSM faults. The method proposed here makes it possible to derive test suites that can detect functional faults. In the first step, the EFSM-based test suite derived by a well-known method is checked for completeness with respect to the faults generated by the μJava tool. Then, each undetected fault is easily mapped into an EFSM mutant. In the next step, some FSM abstraction is used to derive a distinguishing sequence for two finite-state machines (if such a sequence exists), which is added to the current test suite. The test derived in this way is complete with respect to the faults generated by μJava. If the corresponding FSM derived by EFSM modeling is too complex or no such FSM can be derived, the resulting test suite can be incomplete. However, the experiments performed by us clearly show that the original test suite extended by distinguishing sequences can detect many functional faults in software implementations when the given EFSM is used as a specification for the system.
Highlights
an approach is proposed for deriving complete tests with respect
an initial test suite derived against the specification Extended Finite State Machines (EFSMs) is checked with respect
to faults generated by a μJava tool
Summary
Формально [5] под расширенным автоматом M понимается пятерка M = (S, s0, X, Y, T, V ), где S – непустое конечное множество состояний автомата, X – непустое конечное множество входных символов, Y – непустое конечное множество выходных символов, V – конечное, возможно, пустое множество контекстных переменных, T – множество переходов между состояниями из S. Каждый переход в расширенном автомате есть семёрка (s, x, P, oM , y, uM , s ), где s и s суть начальное и финальное состояния перехода; x ∈ X есть входной символ и Dinp−x обозначает множество входных векторов, компонентами которых являются значения параметров, соответствующих входному символу x (далее входные параметры); y ∈ Y – выходной символ, и Dout−y обозначает множество выходных векторов, компонентами которых являются значения параметров, соответствующих выходному символу y (далее выходные параметры); P, oM и uM – функции, определенные над входными параметрами и контекстными переменными из V. Что, в отличие от построения различающих последовательностей для мутантов программного обеспечения, построение различающих последовательностей для конечных автоматов намного проще, и в следующем разделе мы кратко обсуждаем известные методы построения различающей последовательности для двух расширенных автоматов на основе различных конечно-автоматных абстракций, отмечая, для каких функциональных ошибок какие абстракции являются наиболее подходящими
Published Version (Free)
Talk to us
Join us for a 30 min session where you can share your feedback and ask us any queries you have