A Benchmark Problem for Model Based Control System Tests - 001

A benchmark problem for model based control system testing
1,6K téléchargements
Mise à jour 6 oct. 2010

Afficher la licence

Today safety critical flight control systems are tested using model based approach. The model blocks are proprietary and seldom shared in the open. A benchmark problem was designed as part of a research activity to test out certain test case generation techniques. This model was also used as a problem for the test case generation methodology training classes. Trainees, normally fresh graduates from colleges, were asked to design manual test cases to find out the errors embedded in the model. The control system blocks are typical of the ones used in a flight control system or an automobile control system. It is a combination of linear filters, integrators, non-linear blocks like rate limiters and lookup table. There is a combination of logic and time dependency in terms of persistence blocks. These are however more complex for generating test cases as explained below. The blocks have been selected and placed to ensure that the students exercise some thought process and understand the underlying functionality of the control system blocks.

This problem is being provided as open source to the Control System test community. This we believe is a first of its kind and we hope to provide more benchmark problems as we go along comparing Taguchi method of testing. Users are free to try out the Matlab or other commercial test tools against this model. We would like to hear about your experience in using this benchmark problem.

Benchmark Problem

The benchmark model is called compete_2010.mdl. This is a Simulink model with a test harness, which takes in 10 inputs from the workspace named Inp1 to Inp10. It has 7 outputs, which come out as a vector in a variable simout (refer Figure 1). There is a Matlab code, which is an exact replica of the model in code form (file model00001.m). This has undergone more than 20,000 test runs and both model and code match very well. There is a variation of this with instrumentation for coverage called model00001_c.m. This file has a variable COVERAGE, which collects the line, condition and logic coverage. There is a Simulink model with 17 mutants injected into the model subsystems called compete.mdl. This has the model and the mutants in the same file. Each mutant block has a single mutant embedded into it. The output of the mutant block and the original model is compared and is available as error in the scope. The model output is Output in workspace and the mutant outputs are available as Output1 to Output17 in the workspace.

Automated mutant generation

The model was used as a benchmark problem to verify random test case generation techniques. A novel method of test case generation using Taguchi was also used to generate test cases. An automated mutant generator was developed for the Simulink and Matlab code. These Matlab scripts generate all combinations of mutants for the Simulink and Matlab code. An OR gate, as an example, would be replaced by an AND gate, XOR gate etc in each mutant file. Each mutant file will have only one mutant. The mutant description is provided as a text file for the Simulink mutant models. The mutant Matlab code has the change description as the first line in the mutant. The script could generate 414 Simulink mutant and 7592 mutants for the Matlab code.

Citation pour cette source

Yogananda Jeppu (2024). A Benchmark Problem for Model Based Control System Tests - 001 (https://www.mathworks.com/matlabcentral/fileexchange/28952-a-benchmark-problem-for-model-based-control-system-tests-001), MATLAB Central File Exchange. Extrait(e) le .

Compatibilité avec les versions de MATLAB
Créé avec R2008b
Compatible avec toutes les versions
Plateformes compatibles
Windows macOS Linux
Catégories
En savoir plus sur Collect Coverage for Models dans Help Center et MATLAB Answers

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!
Version Publié le Notes de version
1.0.0.0