ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
6 мая
48364
Evgeny_CD (13.01.2006 19:35, просмотров: 2256)
Продвинутая система тестирования софта: Есть идеи? Готовлю я тут потихоньку платфому для новых проектов, и возникла вот такая задача. Есть код на 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. Какие вообще существуют продвинутые методики проверки С программ?