Продвинутая система тестирования софта: Есть идеи? Готовлю я тут потихоньку платфому для новых проектов, и возникла вот
такая задача.
Есть код на C. Plain ANSI C, все чин-чинарем. Система функций, из
которых снаружи виден только вход и выход.
Часто возникает задача оттестировать этот код в режиме симуляции (т.е.
запускаем его, на вход данные от программного генератора, на выход -
интеллектуальных анализатор). Ну и так на пару суток :)
Например, есть у меня код распознавания DTMF. Его много гуляет по
инету :) Но для серьезного приложения мне хочется как следует все
оттестировать: подать на вход (методом монте-карло, например) разные
наборы данных (шум, абсолютная амплитуда несущих, разность амплитуд,
различных длительности паузы и пр.) и посмотреть, что получится.
Тестировщик довольно прост: задаем данные, генерируем отсчеты, и на
вход. Он пишет лог: в какой последовательности мы чего на вход
подавали.
"Приниматель" данных просто пишет лог - в какой последовательности
чего приняли.
Ну и анализатор этих логов - где чего взглюкнуло.
Лично я (может, я старомоден?) после такой проверки спал бы куда
спокойнее, чем даже после такого замечательного моделирования, как тут
http://aly.projekt …/DTMFDecoderEvanse.htm
Собственно, тут нет никакого противоречия - MATLAB совершенно
замечательная вещь для разработки, я же говорю о полностью
автоматизированное методике тестирования.
Возникает вопрос, как это сделать? Если использовать нормальную
embedded OS (типа eCos) в режиме синтетического порта (когда OS и
подчиненные ей задачи живут под Linux), то понятно. Устраиваем связь
наших функций с тестером посредством Linux IPC (Inter Proces
Commnunication) и тестируем до посинения.
Но возникает вопрос, на чем писать сам тестер?
С не очень катит, т.к. быстродействие "тестера" не так важно (IMHO), а
вот простота его разработки и ошибкоустойчивость куда важнее. IMHO,
Python (или другой высокоуровневый скриптовый ООП язык - например,
RUBY тоже хорош) подойдет куда лучше.
Скритовый тестер можно прикрутить по описанной методе без проблем. Но
хочется максимально просто. :)
Нашлась вот такая штука
http://www.swig.org/
SWIG is a software development tool that connects programs written in
C and C++ with a variety of high-level programming languages. SWIG is
used with different types of languages including common scripting
languages such as Perl, PHP, Python, Tcl, Ruby and PHP. The list of
supported languages also includes non-scripting languages such as C#,
Common Lisp (CLISP, Allegro CL, UFFI), Java, Modula-3 and OCAML. Also
several interpreted and compiled Scheme implementations (Guile,
MzScheme, Chicken) are supported. SWIG is most commonly used to create
high-level interpreted or compiled programming environments, user
interfaces, and as a tool for testing and prototyping C/C++ software.
SWIG can also export its parse tree in the form of XML and Lisp
s-expressions. SWIG may be freely used, distributed, and modified for
commercial and non-commercial use.
http://codeguru.co …ng/article.php/c11103/
статья по теме
Я пока толком не разобрался, но по доке выглядит просто супер!
Вопросы:
1. Кто-нибудь этот SWIG юзал? Как оно?
2. Какие вообще существуют продвинутые методики проверки С программ?
-
- Поковырять конечно можно, но... AlexandrY(1504 знак., 15.01.2006 00:29, )
- Хочется большего! Evgeny_CD(4525 знак., 15.01.2006 20:28, )
- Ну так вы описали идею пакета "MATLAB Link for Code Composer Studio" AlexandrY(1721 знак., 15.01.2006 23:49, )
- Большое спасибо! Но я как-то интуитивно недолюбливаю всякие визарды, кодогенераторы и пр. Может, я и не прав... - Evgeny_CD(16.01.2006 00:47, )
- Ну так вы описали идею пакета "MATLAB Link for Code Composer Studio" AlexandrY(1721 знак., 15.01.2006 23:49, )
- Хочется большего! Evgeny_CD(4525 знак., 15.01.2006 20:28, )
- Поковырять конечно можно, но... AlexandrY(1504 знак., 15.01.2006 00:29, )