SlideShare uma empresa 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

Mais conteúdo relacionado

Mais procurados

Регрессионное тестирование
Регрессионное тестированиеРегрессионное тестирование
Регрессионное тестированиеMarat Akhin
 
Тестирование программного обеспечения: что, зачем и почему?
Тестирование программного обеспечения: что, зачем и почему?Тестирование программного обеспечения: что, зачем и почему?
Тестирование программного обеспечения: что, зачем и почему?Marat Akhin
 
Тестовый оракул: что, где, когда
Тестовый оракул: что, где, когдаТестовый оракул: что, где, когда
Тестовый оракул: что, где, когдаMarat Akhin
 
обработка исключений в Java
обработка исключений в Javaобработка исключений в Java
обработка исключений в Javametaform
 
модуль 14 введение в generics
модуль 14 введение в genericsмодуль 14 введение в generics
модуль 14 введение в genericsYevgeniy Gertsen
 
Проблема наблюдаемости
Проблема наблюдаемостиПроблема наблюдаемости
Проблема наблюдаемостиMarat Akhin
 
Проблема тестовых входных данных
Проблема тестовых входных данныхПроблема тестовых входных данных
Проблема тестовых входных данныхMarat Akhin
 
Способы расширения зоны влияния вашей системы автотестов
Способы расширения зоны влияния вашей системы автотестовСпособы расширения зоны влияния вашей системы автотестов
Способы расширения зоны влияния вашей системы автотестовSQALab
 
C language lect_10_basics
C language lect_10_basicsC language lect_10_basics
C language lect_10_basicsRoman Brovko
 
Полнота тестирования ПО
Полнота тестирования ПОПолнота тестирования ПО
Полнота тестирования ПОMarat Akhin
 
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...Iosif Itkin
 
Алгоритмы
АлгоритмыАлгоритмы
АлгоритмыSchool 242
 
КГТУ Лекция 6: Обеспечение Качества Программного Обеспечения
КГТУ Лекция 6: Обеспечение Качества Программного Обеспечения КГТУ Лекция 6: Обеспечение Качества Программного Обеспечения
КГТУ Лекция 6: Обеспечение Качества Программного Обеспечения Iosif Itkin
 
20100321 virtualization igotti_lecture08
20100321 virtualization igotti_lecture0820100321 virtualization igotti_lecture08
20100321 virtualization igotti_lecture08Computer Science Club
 
QA Fest 2017. Яна Кокряшкина. Интеграция автоматизированных тестов с инструме...
QA Fest 2017. Яна Кокряшкина. Интеграция автоматизированных тестов с инструме...QA Fest 2017. Яна Кокряшкина. Интеграция автоматизированных тестов с инструме...
QA Fest 2017. Яна Кокряшкина. Интеграция автоматизированных тестов с инструме...QAFest
 
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 overviewAnton Katkov
 
JS Lab2017_Евгений Сафронов_Тестирование Javascript кода. Инструменты, практи...
JS Lab2017_Евгений Сафронов_Тестирование Javascript кода. Инструменты, практи...JS Lab2017_Евгений Сафронов_Тестирование Javascript кода. Инструменты, практи...
JS Lab2017_Евгений Сафронов_Тестирование Javascript кода. Инструменты, практи...GeeksLab Odessa
 

Mais procurados (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
 

Destaque

YANKEE SCOUT -- KILLING OF GENERAL SEDGWICK
YANKEE SCOUT -- KILLING OF GENERAL SEDGWICKYANKEE SCOUT -- KILLING OF GENERAL SEDGWICK
YANKEE SCOUT -- KILLING OF GENERAL SEDGWICKRoch Steinbach
 
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 civilB&R Consultoria Empresarial
 
8th alg -l10.6
8th alg -l10.68th alg -l10.6
8th alg -l10.6jdurst65
 
Good Friday Breakfast
Good Friday BreakfastGood Friday Breakfast
Good Friday BreakfastBeth Seal
 
TREINAMENTO METODOLOGIA STRATEGIC SOURCING
TREINAMENTO METODOLOGIA STRATEGIC SOURCINGTREINAMENTO METODOLOGIA STRATEGIC SOURCING
TREINAMENTO METODOLOGIA STRATEGIC SOURCINGCilene Bim
 
3 fabricació dels robots
3   fabricació dels robots3   fabricació dels robots
3 fabricació dels robotsopaula80
 

Destaque (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
 

Semelhante a Testing of Embedded SW – Alternative to Classic TDD

Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...Yandex
 
Использование хранимых процедур в MySQL (Константин Осипов)
Использование хранимых процедур в MySQL (Константин Осипов)Использование хранимых процедур в MySQL (Константин Осипов)
Использование хранимых процедур в MySQL (Константин Осипов)Ontico
 
Модульное тестирование iOS-приложений.
Модульное тестирование iOS-приложений.Модульное тестирование iOS-приложений.
Модульное тестирование iOS-приложений.MageCloud
 
лабораторная работа №6
лабораторная работа №6лабораторная работа №6
лабораторная работа №6Gulnaz Shakirova
 
поиск узких мест в производительности My sql ботанический определитель. г. ру...
поиск узких мест в производительности My sql ботанический определитель. г. ру...поиск узких мест в производительности My sql ботанический определитель. г. ру...
поиск узких мест в производительности My sql ботанический определитель. г. ру...rit2011
 
C++ осень 2012 лекция 9
C++ осень 2012 лекция 9C++ осень 2012 лекция 9
C++ осень 2012 лекция 9Technopark
 
«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...
«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...
«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...Mail.ru Group
 
Zen Coding
Zen CodingZen Coding
Zen Coding404fest
 
алг и прогр (11кл)
алг и прогр (11кл)алг и прогр (11кл)
алг и прогр (11кл)isva69
 
алг и прогр (11кл)
алг и прогр (11кл)алг и прогр (11кл)
алг и прогр (11кл)isva69
 
6.3 Специализация шаблонов
6.3 Специализация шаблонов6.3 Специализация шаблонов
6.3 Специализация шаблоновDEVTYPE
 
Igor Khotin - Domain Specific Languages
Igor Khotin - Domain Specific LanguagesIgor Khotin - Domain Specific Languages
Igor Khotin - Domain Specific LanguagesIgor Khotin
 
C++ STL & Qt. Занятие 10.
C++ STL & Qt. Занятие 10.C++ STL & Qt. Занятие 10.
C++ STL & Qt. Занятие 10.Igor Shkulipa
 
Cтиль программирования
Cтиль программированияCтиль программирования
Cтиль программированияConstantin Kichinsky
 

Semelhante 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