SlideShare una empresa de Scribd logo
1 de 14
Тестирование встроенного ПО:Альтернатива  классическому TDD 1 Dmitry Ovechkin Director of Product Development at Innova Systems Dmitry_ov@yahoo.com
Что такое test driven development? 2 result_tTestCalc(void) {      if (13 == Calc(5; 8))       return SUCCESS;    else       return FAIL; } Сначала ТЕСТ short Calc(int A, int B) {    return A + B; } Потом КОД
Плюсы TDD 3 Unit Tester Unit Схема Unit Test-а
Минусы TDD 4 Unit Tester Unit Схема Unit Test-а
Что такое Feature test driven development? 5 result_tTestCalc(void) {      if (13 == Calc(5; 8))       return SUCCESS;    else       return FAIL; } Сначала FEATURE ТЕСТ short Calc(int A, int B) {    return A + B; } Потом КОД
Feature Test driven development 6 Unit 1 Feature Tester Unit 2 Unit 3 Схема Feature Test-а
Схема FTDD для встроенного ПО Serial Interface Serial Interface Device PC Serial Manager Test Engine Кнопка Логирование Feature Tester Компонент 1 Компонент 2 Скрипт XML Команда Компонент 3 Список скриптов 7
Диаграмма последовательности Скрипт Test Engine Serial Manager Компонент Компиляция кода Прошивка имиджа Нажать кнопку Сериализация команды Посылка команды в сериал интерфейс Загрузка ожидаемой команды Де-сериализация команды Вызов метода компоненты Статус вызова метода Лог Сериализация команды Посылка статуса в сериал интерфейс Сравнение результата с ожидаемым Логирование результата 8
Описание команды – Reset_req.xml <?xml version="1.0" ?>  <struct> <length type="uint8" />    <const name="id" type="uint8">0x10</const>  <list name="resetType" type="uint8"> <alias value="0x00">Hard</alias>  <alias value="0x01">Soft</alias>    </list> </struct> 9
Описание команды – Reset_conf.xml <?xml version="1.0" ?>  <struct> <length type="uint8" />    <const name="id" type="uint8">0x11</const>  <list name="status" type="uint8">   <alias value="0x00">Success</alias>   <alias value="0x01">Invalid parameter</alias>    <alias value="0x02">Unsupported attribute</alias>    <alias value="0x03">Not Success</alias>    </list> </struct> 10
Проверка команды - Reset.py """ @parameters   port - port (ports list) to use   resetType - resetType   status - expected status """ for port in ports:   port.send('SysResetReq',     resetType = resetType   ) for port in ports:   cmd, conf = port.receive()   check(cmd == 'SysResetConf')   check(conf['status'] == status) 11
Вызов reset команды – testcase1.py # Parameters list port1=‘COM1’ port2=‘COM2’ cmdStatus=‘Success’ rType=‘Soft’, #calling reset writeLog('1. Resetting nodes') function('reset',   port = [port1, port2],   resetType=rType,   status=cmdStatus ) 12
логирование Case      : testcase1Description: Resetting devices 1. Resetting nodes  Send command RESET_REQ    length 0x02    id 0x10    resetType 0x01 (Soft)  Receive command RESET_CONF    length 0x02    id 0x11    status 0x00 (Success) 13
14 Thank You! Dmitry Ovechkin Director of Product Development at Innova Systems Dmitry_ov@yahoo.com

Más contenido relacionado

La actualidad más candente

Регрессионное тестирование
Регрессионное тестированиеРегрессионное тестирование
Регрессионное тестирование
Marat Akhin
 
Тестирование программного обеспечения: что, зачем и почему?
Тестирование программного обеспечения: что, зачем и почему?Тестирование программного обеспечения: что, зачем и почему?
Тестирование программного обеспечения: что, зачем и почему?
Marat Akhin
 
Тестовый оракул: что, где, когда
Тестовый оракул: что, где, когдаТестовый оракул: что, где, когда
Тестовый оракул: что, где, когда
Marat Akhin
 
обработка исключений в Java
обработка исключений в Javaобработка исключений в Java
обработка исключений в Java
metaform
 
модуль 14 введение в generics
модуль 14 введение в genericsмодуль 14 введение в generics
модуль 14 введение в generics
Yevgeniy Gertsen
 
Проблема наблюдаемости
Проблема наблюдаемостиПроблема наблюдаемости
Проблема наблюдаемости
Marat Akhin
 
Проблема тестовых входных данных
Проблема тестовых входных данныхПроблема тестовых входных данных
Проблема тестовых входных данных
Marat Akhin
 
Полнота тестирования ПО
Полнота тестирования ПОПолнота тестирования ПО
Полнота тестирования ПО
Marat Akhin
 
20100321 virtualization igotti_lecture08
20100321 virtualization igotti_lecture0820100321 virtualization igotti_lecture08
20100321 virtualization igotti_lecture08
Computer Science Club
 
XP.Party (iOS) - unit tests frameworks overview
XP.Party (iOS) - unit tests frameworks overviewXP.Party (iOS) - unit tests frameworks overview
XP.Party (iOS) - unit tests frameworks overview
Anton Katkov
 

La actualidad más candente (20)

Регрессионное тестирование
Регрессионное тестированиеРегрессионное тестирование
Регрессионное тестирование
 
Тестирование программного обеспечения: что, зачем и почему?
Тестирование программного обеспечения: что, зачем и почему?Тестирование программного обеспечения: что, зачем и почему?
Тестирование программного обеспечения: что, зачем и почему?
 
Тестовый оракул: что, где, когда
Тестовый оракул: что, где, когдаТестовый оракул: что, где, когда
Тестовый оракул: что, где, когда
 
обработка исключений в Java
обработка исключений в Javaобработка исключений в Java
обработка исключений в Java
 
модуль 14 введение в generics
модуль 14 введение в genericsмодуль 14 введение в generics
модуль 14 введение в generics
 
Проблема наблюдаемости
Проблема наблюдаемостиПроблема наблюдаемости
Проблема наблюдаемости
 
Проблема тестовых входных данных
Проблема тестовых входных данныхПроблема тестовых входных данных
Проблема тестовых входных данных
 
Способы расширения зоны влияния вашей системы автотестов
Способы расширения зоны влияния вашей системы автотестовСпособы расширения зоны влияния вашей системы автотестов
Способы расширения зоны влияния вашей системы автотестов
 
C language lect_10_basics
C language lect_10_basicsC language lect_10_basics
C language lect_10_basics
 
Golang WTF talks
Golang WTF talksGolang WTF talks
Golang WTF talks
 
Полнота тестирования ПО
Полнота тестирования ПОПолнота тестирования ПО
Полнота тестирования ПО
 
TMPA-2015: The Application of Static Analysis to Optimize the Dynamic Detecti...
TMPA-2015: The Application of Static Analysis to Optimize the Dynamic Detecti...TMPA-2015: The Application of Static Analysis to Optimize the Dynamic Detecti...
TMPA-2015: The Application of Static Analysis to Optimize the Dynamic Detecti...
 
WTF Code @ jug.lv
WTF Code @ jug.lvWTF Code @ jug.lv
WTF Code @ jug.lv
 
Алгоритмы
АлгоритмыАлгоритмы
Алгоритмы
 
КГТУ Лекция 6: Обеспечение Качества Программного Обеспечения
КГТУ Лекция 6: Обеспечение Качества Программного Обеспечения КГТУ Лекция 6: Обеспечение Качества Программного Обеспечения
КГТУ Лекция 6: Обеспечение Качества Программного Обеспечения
 
20100321 virtualization igotti_lecture08
20100321 virtualization igotti_lecture0820100321 virtualization igotti_lecture08
20100321 virtualization igotti_lecture08
 
QA Fest 2017. Яна Кокряшкина. Интеграция автоматизированных тестов с инструме...
QA Fest 2017. Яна Кокряшкина. Интеграция автоматизированных тестов с инструме...QA Fest 2017. Яна Кокряшкина. Интеграция автоматизированных тестов с инструме...
QA Fest 2017. Яна Кокряшкина. Интеграция автоматизированных тестов с инструме...
 
XP.Party (iOS) - unit tests frameworks overview
XP.Party (iOS) - unit tests frameworks overviewXP.Party (iOS) - unit tests frameworks overview
XP.Party (iOS) - unit tests frameworks overview
 
JS Lab2017_Евгений Сафронов_Тестирование Javascript кода. Инструменты, практи...
JS Lab2017_Евгений Сафронов_Тестирование Javascript кода. Инструменты, практи...JS Lab2017_Евгений Сафронов_Тестирование Javascript кода. Инструменты, практи...
JS Lab2017_Евгений Сафронов_Тестирование Javascript кода. Инструменты, практи...
 
Unit тесты java
Unit тесты javaUnit тесты java
Unit тесты java
 

Destacado

8th alg -l10.6
8th alg -l10.68th alg -l10.6
8th alg -l10.6
jdurst65
 
Good Friday Breakfast
Good Friday BreakfastGood Friday Breakfast
Good Friday Breakfast
Beth Seal
 

Destacado (12)

Globalización
GlobalizaciónGlobalización
Globalización
 
YANKEE SCOUT -- KILLING OF GENERAL SEDGWICK
YANKEE SCOUT -- KILLING OF GENERAL SEDGWICKYANKEE SCOUT -- KILLING OF GENERAL SEDGWICK
YANKEE SCOUT -- KILLING OF GENERAL SEDGWICK
 
Workclass
WorkclassWorkclass
Workclass
 
Lobby de planos de saúde individuais pressiona casa civil
Lobby de planos de saúde individuais pressiona casa civilLobby de planos de saúde individuais pressiona casa civil
Lobby de planos de saúde individuais pressiona casa civil
 
Print_your_certificate
Print_your_certificatePrint_your_certificate
Print_your_certificate
 
MILJOSCREENING_2
MILJOSCREENING_2MILJOSCREENING_2
MILJOSCREENING_2
 
8th alg -l10.6
8th alg -l10.68th alg -l10.6
8th alg -l10.6
 
Good Friday Breakfast
Good Friday BreakfastGood Friday Breakfast
Good Friday Breakfast
 
TREINAMENTO METODOLOGIA STRATEGIC SOURCING
TREINAMENTO METODOLOGIA STRATEGIC SOURCINGTREINAMENTO METODOLOGIA STRATEGIC SOURCING
TREINAMENTO METODOLOGIA STRATEGIC SOURCING
 
3 fabricació dels robots
3   fabricació dels robots3   fabricació dels robots
3 fabricació dels robots
 
Product manager mind
Product manager mindProduct manager mind
Product manager mind
 
Salud pública NUTRICIÓN
Salud pública NUTRICIÓN Salud pública NUTRICIÓN
Salud pública NUTRICIÓN
 

Similar a Testing of Embedded SW – Alternative to Classic TDD

Использование хранимых процедур в MySQL (Константин Осипов)
Использование хранимых процедур в MySQL (Константин Осипов)Использование хранимых процедур в MySQL (Константин Осипов)
Использование хранимых процедур в MySQL (Константин Осипов)
Ontico
 
Модульное тестирование iOS-приложений.
Модульное тестирование iOS-приложений.Модульное тестирование iOS-приложений.
Модульное тестирование iOS-приложений.
MageCloud
 
лабораторная работа №6
лабораторная работа №6лабораторная работа №6
лабораторная работа №6
Gulnaz Shakirova
 
поиск узких мест в производительности My sql ботанический определитель. г. ру...
поиск узких мест в производительности My sql ботанический определитель. г. ру...поиск узких мест в производительности My sql ботанический определитель. г. ру...
поиск узких мест в производительности My sql ботанический определитель. г. ру...
rit2011
 
C++ осень 2012 лекция 9
C++ осень 2012 лекция 9C++ осень 2012 лекция 9
C++ осень 2012 лекция 9
Technopark
 
Zen Coding
Zen CodingZen Coding
Zen Coding
404fest
 
алг и прогр (11кл)
алг и прогр (11кл)алг и прогр (11кл)
алг и прогр (11кл)
isva69
 
алг и прогр (11кл)
алг и прогр (11кл)алг и прогр (11кл)
алг и прогр (11кл)
isva69
 
6.3 Специализация шаблонов
6.3 Специализация шаблонов6.3 Специализация шаблонов
6.3 Специализация шаблонов
DEVTYPE
 

Similar a Testing of Embedded SW – Alternative to Classic TDD (20)

XML Schema
XML SchemaXML Schema
XML Schema
 
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
 
Использование хранимых процедур в MySQL (Константин Осипов)
Использование хранимых процедур в MySQL (Константин Осипов)Использование хранимых процедур в MySQL (Константин Осипов)
Использование хранимых процедур в MySQL (Константин Осипов)
 
Модульное тестирование iOS-приложений.
Модульное тестирование iOS-приложений.Модульное тестирование iOS-приложений.
Модульное тестирование iOS-приложений.
 
лабораторная работа №6
лабораторная работа №6лабораторная работа №6
лабораторная работа №6
 
лабораторная работа №6
лабораторная работа №6лабораторная работа №6
лабораторная работа №6
 
лабораторная работа №6
лабораторная работа №6лабораторная работа №6
лабораторная работа №6
 
поиск узких мест в производительности My sql ботанический определитель. г. ру...
поиск узких мест в производительности My sql ботанический определитель. г. ру...поиск узких мест в производительности My sql ботанический определитель. г. ру...
поиск узких мест в производительности My sql ботанический определитель. г. ру...
 
C language. Introduction
C language. IntroductionC language. Introduction
C language. Introduction
 
C++ осень 2012 лекция 9
C++ осень 2012 лекция 9C++ осень 2012 лекция 9
C++ осень 2012 лекция 9
 
«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...
«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...
«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...
 
Zen Coding
Zen CodingZen Coding
Zen Coding
 
алг и прогр (11кл)
алг и прогр (11кл)алг и прогр (11кл)
алг и прогр (11кл)
 
алг и прогр (11кл)
алг и прогр (11кл)алг и прогр (11кл)
алг и прогр (11кл)
 
Peterburg meeting
Peterburg meetingPeterburg meeting
Peterburg meeting
 
6.3 Специализация шаблонов
6.3 Специализация шаблонов6.3 Специализация шаблонов
6.3 Специализация шаблонов
 
XML Magic
XML MagicXML Magic
XML Magic
 
Igor Khotin - Domain Specific Languages
Igor Khotin - Domain Specific LanguagesIgor Khotin - Domain Specific Languages
Igor Khotin - Domain Specific Languages
 
C++ STL & Qt. Занятие 10.
C++ STL & Qt. Занятие 10.C++ STL & Qt. Занятие 10.
C++ STL & Qt. Занятие 10.
 
Cтиль программирования
Cтиль программированияCтиль программирования
Cтиль программирования
 

Testing of Embedded SW – Alternative to Classic TDD

  • 1. Тестирование встроенного ПО:Альтернатива классическому TDD 1 Dmitry Ovechkin Director of Product Development at Innova Systems Dmitry_ov@yahoo.com
  • 2. Что такое test driven development? 2 result_tTestCalc(void) { if (13 == Calc(5; 8)) return SUCCESS; else return FAIL; } Сначала ТЕСТ short Calc(int A, int B) { return A + B; } Потом КОД
  • 3. Плюсы TDD 3 Unit Tester Unit Схема Unit Test-а
  • 4. Минусы TDD 4 Unit Tester Unit Схема Unit Test-а
  • 5. Что такое Feature test driven development? 5 result_tTestCalc(void) { if (13 == Calc(5; 8)) return SUCCESS; else return FAIL; } Сначала FEATURE ТЕСТ short Calc(int A, int B) { return A + B; } Потом КОД
  • 6. Feature Test driven development 6 Unit 1 Feature Tester Unit 2 Unit 3 Схема Feature Test-а
  • 7. Схема FTDD для встроенного ПО Serial Interface Serial Interface Device PC Serial Manager Test Engine Кнопка Логирование Feature Tester Компонент 1 Компонент 2 Скрипт XML Команда Компонент 3 Список скриптов 7
  • 8. Диаграмма последовательности Скрипт Test Engine Serial Manager Компонент Компиляция кода Прошивка имиджа Нажать кнопку Сериализация команды Посылка команды в сериал интерфейс Загрузка ожидаемой команды Де-сериализация команды Вызов метода компоненты Статус вызова метода Лог Сериализация команды Посылка статуса в сериал интерфейс Сравнение результата с ожидаемым Логирование результата 8
  • 9. Описание команды – Reset_req.xml <?xml version="1.0" ?> <struct> <length type="uint8" />   <const name="id" type="uint8">0x10</const> <list name="resetType" type="uint8"> <alias value="0x00">Hard</alias> <alias value="0x01">Soft</alias>   </list> </struct> 9
  • 10. Описание команды – Reset_conf.xml <?xml version="1.0" ?> <struct> <length type="uint8" />   <const name="id" type="uint8">0x11</const> <list name="status" type="uint8">   <alias value="0x00">Success</alias>  <alias value="0x01">Invalid parameter</alias>   <alias value="0x02">Unsupported attribute</alias>   <alias value="0x03">Not Success</alias>   </list> </struct> 10
  • 11. Проверка команды - Reset.py """ @parameters port - port (ports list) to use resetType - resetType status - expected status """ for port in ports: port.send('SysResetReq', resetType = resetType ) for port in ports: cmd, conf = port.receive() check(cmd == 'SysResetConf') check(conf['status'] == status) 11
  • 12. Вызов reset команды – testcase1.py # Parameters list port1=‘COM1’ port2=‘COM2’ cmdStatus=‘Success’ rType=‘Soft’, #calling reset writeLog('1. Resetting nodes') function('reset', port = [port1, port2], resetType=rType, status=cmdStatus ) 12
  • 13. логирование Case      : testcase1Description: Resetting devices 1. Resetting nodes Send command RESET_REQ    length 0x02    id 0x10    resetType 0x01 (Soft)  Receive command RESET_CONF    length 0x02    id 0x11    status 0x00 (Success) 13
  • 14. 14 Thank You! Dmitry Ovechkin Director of Product Development at Innova Systems Dmitry_ov@yahoo.com