
f73f36324f06b1b4c16d838d67c509a6.ppt
- Количество слайдов: 19
Uni. Tes. K технология тестирования ПО Е. Бритвина, Н. Казакова, В. Кулямин, А. Петренко
Что такое тестирование? Тестирование – это поиск ошибок n Как искать ошибки? n Как их распознавать? n Когда прекращать их искать?
Как искать ошибки? Выполняя тестируемую программу в разных ситуациях Тестовые воздействия Целевая система Когда прекращать? Когда разные ситуации кончатся ?
Как распознавать ошибки? n Ошибка – различие между тем, что программа делает, и тем, что она должна делать ¨ То, что должно делаться, оформляем в виде спецификаций или модели ¨ По модели автоматически строим тестовый оракул – программу, которая без участия человека определит, была ошибка или нет
Тестирование с оракулом Тестовые воздействия Модель Целевая система Тестовый оракул ?
Контрактные спецификации specification double sqrt(double x) { pre { return x >= 0; } post { return sqrt*sqrt == x; } } invariant Triangle() { return x + y >= z && x + z >= y && y + z >= x; }
Что такое «разные ситуации» ? Можно считать все ситуации разными исчерпывающее тестирование случайное тестирование n Можно считать разными ситуации, при которых в программе выполняются разные строки кода структурное тестирование n Мы считаем разными ситуации, отвечающие разным видам поведения, описанным в модели n
Выделение ситуаций specification double sqrt(double x) { pre { return x >= 0; } post { if(x == 0) { return sqrt == 0; } else { return sqrt > 0 && abs((sqrt*sqrt – x)/x) < epsilon; } } }
Построение тестов n На основе выделенных ситуаций определяем тестовый сценарий ¨ Структура состояния системы ¨ Набор воздействий, которые можно оказывать в состоянии общего вида
Построение сценария параметры область определения операции 2 3 цели покрытия 1 состояния
Пример сценария scenario class Test. Scenario { Model model = new Model(new Impl()); object State() { return new Int. State(model. a. number()); } scenario method 1() { model. method 1(); } scenario method 2() { iterate(int i = 0; i < MAX; i++) model. method 2(i); } static void main() { … } }
Решения n n Модели – контрактные спецификации на расширениях языков программирования (C, C#, Java) Различие между ситуациями определяется ветвями или дизъюнктами постусловия По требуемому покрытию строим сценарий (неявно описывает конечный автомат) В ходе теста на основе сценария генерируется последовательность тестовых воздействий
Демонстрация инструмента
Картина в целом Тестируемая система Модель поведения Сценарий Модель покрытия Проверка воздействия Генерация воздействий
Возможности n n Тестирование параллелизма и асинхронно работающих потоков/процессов Тестирование компиляторов и любых программ, работающих со сложно структурированными данными Адаптеры для привязки спецификаций к меняющимся интерфейсам – переиспользование тестов Возможности переиспользования спецификаций и сценариев
Применения Uni. Tes. K n n Ядро операционной системы коммутатора (KVEST – прообраз Uni. Tes. K) Реализации IPv 6 ¨ ¨ ¨ n n - 2001 -2003 Microsoft Research Мобильный IPv 6 (в Windows CE 4. 1) Октет Компиляторы Intel Стардарт AVS-IPMP IPSec Пилотные проекты ¨ ¨ ¨ - 1994 -1997 - 2001 -2003 - 2004 -… - 2003 Гос. НИИАС Банковская система ведения данных о клиентах (Luxoft) Библиотека классов для разработки приложений уровня предприятия Биллинговая система Tiny OS
Контакты Сайт группы http: //www. ispras. ru/groups/rv/rv. html n Сайт проектов Uni. Tes. K http: //www. unitesk. com n Электронный адрес petrenko@ispras. ru n
Литература n n n I. Burdonov, A. Kossatchev, A. Petrenko, H. Wong. Overview of the Kernel Verification project. BNR Reports, 1997 И. Б. Бурдонов, А. В. Демаков, А. С. Косачев, А. В. Максимов, А. К. Петренко. Формальные спецификации в технологиях обратной инженерии и верификации программ. Труды ИСП, т. 1, 1999, стр. 35 -47 I. Bourdonov, A. Kossatchev, A. Petrenko, D. Galter. KVEST: Automated Generation of Test Suites from Formal Specifications. Proc. FM’ 99, LNCS 1708, Springer-Verlag, 1999, pp. 608 -621 И. Б. Бурдонов, А. С. Косачев, В. В. Кулямин. Использование конечных автоматов для тестирования программ. Программирование, т. 26, №. 2, 2000, стр. 61 -73 A. K. Petrenko, I. B. Bourdonov, A. S. Kossatchev, V. V. Kuliamin. Experiences in using testing tools and technology in real-life applications. Proc. SETT’ 2001, Pune, India, 2001 A. Petrenko. Specification Based Testing: Towards Practice. Proc. PSI’ 2001, LNCS 2244, 2001 I. Bourdonov, A. Kossatchev, V. Kuliamin, A. Petrenko. Uni. Tes. K Test Suite Architecture. Proc. FME 2002, LNCS 2391, pp. 77 -88, Springer-Verlag, 2002 И. Б. Бурдонов, А. С. Косачев, В. В. Кулямин. Асинхронные автоматы: классификация и тестирование. Труды ИСП РАН, т. 4, 2003, стр. 7 -84 V. Kuliamin, A. Petrenko, N. Pakoulin, A. Kossatchev, I. Bourdonov. Integration of Functional and Timed Testing of Real-time and Concurrent Systems. Proc. PSI’ 2003. A. Kossatchev, A. Petrenko, S. Zelenova. Using Model-Based Approach for Automated Testing of Optimizing Compilers. Proc. Intl. Workshop on Program Undestanding, Gorno-Altaisk, 2003 В. В. Кулямин, А. К. Петренко, А. С. Косачев, И. Б. Бурдонов. Подход Uni. Tes. K к разработке тестов. Программирование, т. 29, № 6, 2003, стр. 25 -43
Спасибо за внимание
f73f36324f06b1b4c16d838d67c509a6.ppt