ݺߣ

ݺߣShare a Scribd company logo
IoT 개발자를 위한
Embedded C에서 TDD를 해보자
nRF51-DK에서 TDD test result 추출하기
• 평범한 학부생이 Embedded C에서 TDD를 실천하기 위해 시도했던 경험과 결과물입니
다.
• 정답이 아닐 수도 있지만, 임베디드 개발을 하면서 느꼈던 폐쇄적인 정보 공유가 조금이
라도 개방 되었으면 하는 바람으로 작성하였습니다.
• 개발 환경
• Windows 10
• 타깃 보드 : nRF51-DK
• 타깃 시스템 환경
■ SDK version : SDK 10
■ Soft Device version : soft device 110
■ Compiler : arm-none-eabi-gcc 4.9.3
• TDD를 시작하기에 앞서 타깃 시스템 개발 환경이 구축되어있지 않다면, 먼저 다른 예제
를 통해 환경을 구축하고 시작 하시는 것을 권장합니다.
• nRF51-DK 환경 구축(Link1, Link2)
TDD 실행에 앞서 Embedded C에서 쓰이는 unit test framework는 뭐가 있을까요?
TDD Framwork
UNITY
사이트
Embedded C에는 대표적으로 2가지 unit test framwork가 있습
니다.
Cpputest
사이트
TDD Framwork
UNITY
Unity는 C언어 기반의 framwork 이고
Cpputest는 C++언어 기반의 framwork 입니다.
C C++
Cpputest
TDD Framwork
Cpputes
t
사이트
UNITY
사이트
Unity는 테스트 결과를 확인하기 위해서 4개의 파일이 필요하고,
main.c
LedDriver
.c
LedDriver
Test
.c
LedDriver
Test
Runner
.c
TDD Framwork
UNITY
사이트
Cpputest
사이트
Cpputest는 3개의 파일을 만들면 됩니다.
main.c
LedDriver
.c
LedDriver
Test
.c
TDD Framwork
UNITY
여기서는 Unity를 사용합니다.
Unity는 Ceedling이라는 훌륭한 Bootstrapping tool을 지원하고
Embedded C와 호환이 좋기 때문입니다.
Bootstrapping Tool인 Ceedling이란 무엇일까요?
Ceedling - TDD Bootstrapping tool
• Ceedling은 명령 프롬프트 창에서 TDD 실행 자동화를 지원합니다.
• 여기를 참고해서 설치를 완료해주세요.
CEEDLING
설치를 완료하셨다면 앞으로 “30초”, TDD 테스트 결과를 확인할 수 있습니다.
Ceedling - 프로젝트 생성
• 명령 프롬프트 창에서 프로젝트를 관리하는 임의의 폴더로 이동한 뒤,
• $ceedling new TDD
Ceedling – TDDModule 모듈 생성
• $cd TDD
• $rake module:create[TDDModule/TDDModule]
Ceedling - 테스트
● $rake test:all
이제 호스트 시스템(PC)에서 테스트 결과를 확인할 수 있습니다!
앞에서 사용한 Ceedling에 대해 조금 더 설명을 드리자면,
Ceedling - 명령어 도움말
• $rake -T
Ceedling - 테스트
• 테스트 코드 입니다.
• ..../TDD/test/test_LedDriver.c
Ceedling - TDD
• ..../TDD/test/support에 테스트에 필요한 파일을 추가 해주면 별도의 경로
지정 없이 code 내에서 include 가능합니다.
• Assert 함수는 ..../TDD/vendor/ceedling/vendor/unity/src/unity.h에서
확인 가능합니다.
• SUT와 Test code를 수정하면서 TDD를 진행하면 됩니다.
• Ceedling의 자세한 사용법은 여기를 참고해주세요.
Ceedling은 프로젝트 생성, 모듈 추가 그리고 테스트 환경 구축까지
빠른 주기로 실행 가능한 강력한 Bootstrapping Tool입니다.
그렇다면, 호스트 시스템(PC)이 아닌 타깃 시스템(nRF51-DK)에서 실행되는 테스트 코드는
어떻게 실행 결과를 확인할 수 있을까요?
타깃 시스템 - Unity framework
• 복잡한 동작 방식과는 관계없이 최종적으로 Unity framework는 출력 함수
putchar() 를 통해 테스트 결과를 출력하는 기능을 가지고 있습니다.
UNITY
타깃 시스템 - 출력 함수
• 그렇기 때문에, 테스트 결과를 PC에서 출력하는 방법은 간단합니다.
• 타깃 시스템이 putchar() 함수를 지원하도록 하거나,
• Unity framwork에서 출력 함수 putchar() 를 타깃 시스템이 지원하는 출력 함수로 대체 합
니다.
UNITY
putchar() write()
타깃 시스템 - nRF51-DK
• nRF51-DK는 <stdio.h> 파일을 include 하여 putchar()함수를 지원합니
다.
putchar()
nRF51-DK에서 putchar() 함수로 출력 되는 테스트 결과를 어떻게 PC에서 확인하면 될까요?
• putchar() 함수를 통해 출력 되는 결과는 UART 통신을 통해 호스트 시스템
(PC)에서 확인이 가능하게 됩니다.
UART 통신
UNITY
시리얼 터미널
• 시리얼 통신이 가능한 프로그램을 자유롭게 설치해주세요.
• 여기서는 Teraterm을 사용하도록 하겠습니다.
시리얼 터미널
• nRF51-DK를 연결하고,
• Teraterm 메뉴에서 설정 - 시리얼 포트를 클릭 한 뒤에 위와 같이 설정합니
다.
• 포트는 동일하지 않을 수 있습니다.
이제 nRF51-DK에서 구동 가능한 프로젝트 구성을 하고,
최종적으로 nRF51-DK를 통해 테스트 결과를 PC에서 확인해보도록 하겠습니다.
프로젝트 구성
• https://github.com/KimmTY/nRF51_Unit_Testing 에서 repository를 다운 받거나,
• 명령 프롬프트창에서 원하는 폴더로 이동 후,
• git clone https://github.com/KimmTY/nRF51_Unit_Testing.git 입력합니다.
프로젝트 구성 - 환경구축
• https://github.com/KimmTY/nRF51_Unit_Testing 에서 Need section은 모두 충족
시켜주세요.
nRF51-DK에서 TDD를 해보자 - Compile
• nRF51-DK를 연결한 상태에서,
• 명령 프롬프트 창을 실행하고,
• $cd nRF51_Unit_Testing
• $make all
nRF51-DK에서 TDD를 해보자 - Soft Device
• $make flash_softdevice
nRF51-DK에서 TDD를 해보자 - Application
• $make flash nrf51422_xxac_s110
Application까지 Flash하고 Teraterm 터미널을 확인해보면,
테스트 결과
마지막 절차인 타깃 시스템이 보낸 테스트 결과를 시리얼 터미널로 확인 가능하게 되었습니다!
이제는 하드웨어에 의존적인 부분까지도 TDD를 실천할 수 있습니다.
Text color, 출력 옵션, Test code 추가 등 TDD를 진행하면서 궁금한 점은 여기를 참고해주세
요.
임베디드 시스템에서 TDD를 실천하는 것은 도전적이라고 생각합니다.
열악한 디버깅 환경에서
SW로부터 발생하는 문제인지,
HW로부터 발생하는 문제인지,
확인조차 되지 않는 일이 매일 같이 발생합니다.
TDD를 실천함으로써 HW와 SW 경계가 명확해지고,
설계는 더욱 개선됩니다.
이 자료가 정답이 아닐 수도 있지만,
조금이라도 도움이 되어 즐거운 TDD 라이프가 만들어지면 좋겠습니다.
또한, 임베디드 개발자는 컴파일러, 타깃 시스템 등 특성을 많이 타고
범용적이지 않은 상황을 자주 마주하게 됩니다.
그때마다 서로의 경험을 공유하고 지식을 나눈다면,
더 많은 임베디드 개발자분들이 더 신뢰가 가고 안정적인 프로젝트를 만들지 않을까 싶습니다.
감사합니다.
김태엽
ktim610sw@gmail.com

More Related Content

What's hot (20)

Git
GitGit
Git
Mayank Patel
How to build a Salesforce DevOps process with Gearset
How to build a Salesforce DevOps process with GearsetHow to build a Salesforce DevOps process with Gearset
How to build a Salesforce DevOps process with Gearset
Thierry TROUIN ☁
New relic
New relicNew relic
New relic
Pablo Molnar
Git & GitLab
Git & GitLabGit & GitLab
Git & GitLab
Gaurav Wable
Webinar - Unbox GitLab CI/CD
Webinar - Unbox GitLab CI/CD Webinar - Unbox GitLab CI/CD
Webinar - Unbox GitLab CI/CD
Annie Huang
12-Factor Apps
12-Factor Apps12-Factor Apps
12-Factor Apps
Siva Rama Krishna Chunduru
ISO 29119 -The new international software testing standards
ISO 29119 -The new international software testing standardsISO 29119 -The new international software testing standards
ISO 29119 -The new international software testing standards
Fareha Nadeem
Devops Porto - CI/CD at Gitlab
Devops Porto - CI/CD at GitlabDevops Porto - CI/CD at Gitlab
Devops Porto - CI/CD at Gitlab
Filipa Lacerda
Gitlab ci, cncf.sk
Gitlab ci, cncf.skGitlab ci, cncf.sk
Gitlab ci, cncf.sk
Juraj Hantak
Comparison of SVN and Git
Comparison of SVN and GitComparison of SVN and Git
Comparison of SVN and Git
Daniel Wieth
Python unit testing
Python unit testingPython unit testing
Python unit testing
Darryl Sherman
Configuration Management: What, Why, and How?
Configuration Management: What, Why, and How?Configuration Management: What, Why, and How?
Configuration Management: What, Why, and How?
Joseph Karns
Lorawan - Webinar on New Age of Agriculture IoT
Lorawan - Webinar on New Age of Agriculture IoTLorawan - Webinar on New Age of Agriculture IoT
Lorawan - Webinar on New Age of Agriculture IoT
BIS Research Inc.
TMMi Implementation Guideline
TMMi Implementation GuidelineTMMi Implementation Guideline
TMMi Implementation Guideline
STAG Software Private Limited
CICD with Jenkins
CICD with JenkinsCICD with Jenkins
CICD with Jenkins
Vietnam Open Infrastructure User Group
Agile Testing and Test Automation
Agile Testing and Test AutomationAgile Testing and Test Automation
Agile Testing and Test Automation
Naveen Kumar Singh
Salesforce: CI,CD & CT
Salesforce: CI,CD & CTSalesforce: CI,CD & CT
Salesforce: CI,CD & CT
Agile Testing Alliance
GitLab for CI/CD process
GitLab for CI/CD processGitLab for CI/CD process
GitLab for CI/CD process
HYS Enterprise
A brief introduction to version control systems
A brief introduction to version control systemsA brief introduction to version control systems
A brief introduction to version control systems
Tim Staley
The Power of GitOps with Flux & GitOps Toolkit
The Power of GitOps with Flux & GitOps ToolkitThe Power of GitOps with Flux & GitOps Toolkit
The Power of GitOps with Flux & GitOps Toolkit
Weaveworks

Similar to IoT 개발자를 위한 Embedded C에서 TDD를 해보자 (20)

빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)
YEONG-CHEON YOU
TDD
TDDTDD
TDD
Henry Lee
청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기
Chris Ohk
Bdd 개요 및 Karma 도입 예
Bdd 개요 및 Karma 도입 예Bdd 개요 및 Karma 도입 예
Bdd 개요 및 Karma 도입 예
Seulgi Choi
Remote-debugging-based-on-notrace32-20130619-1900
Remote-debugging-based-on-notrace32-20130619-1900Remote-debugging-based-on-notrace32-20130619-1900
Remote-debugging-based-on-notrace32-20130619-1900
Samsung Electronics
CI in the Mobile World (한글번역)
CI in the Mobile World (한글번역)CI in the Mobile World (한글번역)
CI in the Mobile World (한글번역)
DONGSU KIM
[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트
Chanwoong Kim
강좌 03 개발환경 구축
강좌 03 개발환경 구축강좌 03 개발환경 구축
강좌 03 개발환경 구축
chcbaram
메이븐 기본 이해
메이븐 기본 이해메이븐 기본 이해
메이븐 기본 이해
중선 곽
Visual studio 사용 설명서(기초 과정)
Visual studio 사용 설명서(기초 과정)Visual studio 사용 설명서(기초 과정)
Visual studio 사용 설명서(기초 과정)
Lusain Kim
델파이 소스코드의재발견
델파이 소스코드의재발견델파이 소스코드의재발견
델파이 소스코드의재발견
Devgear
[데브루키] 게임 엔진 아키텍쳐_2장_도구 (Game Engine Architecture Chapter.2-Tools)
[데브루키] 게임 엔진 아키텍쳐_2장_도구 (Game Engine Architecture Chapter.2-Tools)[데브루키] 게임 엔진 아키텍쳐_2장_도구 (Game Engine Architecture Chapter.2-Tools)
[데브루키] 게임 엔진 아키텍쳐_2장_도구 (Game Engine Architecture Chapter.2-Tools)
MinGeun Park
DevOps - CI/CD 알아보기
DevOps - CI/CD 알아보기DevOps - CI/CD 알아보기
DevOps - CI/CD 알아보기
SeungYong Baek
개발 생산성 향상 기법 V1.2
개발 생산성 향상 기법 V1.2개발 생산성 향상 기법 V1.2
개발 생산성 향상 기법 V1.2
Daniel Lim
Deploying Hyperledger Fabric on Kubernetes.pptx
Deploying Hyperledger Fabric on Kubernetes.pptxDeploying Hyperledger Fabric on Kubernetes.pptx
Deploying Hyperledger Fabric on Kubernetes.pptx
wonyong hwang
Tdd ver.2
Tdd ver.2Tdd ver.2
Tdd ver.2
Henry Lee
Kubernetes on GCP
Kubernetes on GCPKubernetes on GCP
Kubernetes on GCP
Daegeun Kim
Android Native Module 안정적으로 개발하기
Android Native Module 안정적으로 개발하기Android Native Module 안정적으로 개발하기
Android Native Module 안정적으로 개발하기
hanbeom Park
[123] electron 김성훈
[123] electron 김성훈[123] electron 김성훈
[123] electron 김성훈
NAVER D2
빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)
YEONG-CHEON YOU
청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기
Chris Ohk
Bdd 개요 및 Karma 도입 예
Bdd 개요 및 Karma 도입 예Bdd 개요 및 Karma 도입 예
Bdd 개요 및 Karma 도입 예
Seulgi Choi
Remote-debugging-based-on-notrace32-20130619-1900
Remote-debugging-based-on-notrace32-20130619-1900Remote-debugging-based-on-notrace32-20130619-1900
Remote-debugging-based-on-notrace32-20130619-1900
Samsung Electronics
CI in the Mobile World (한글번역)
CI in the Mobile World (한글번역)CI in the Mobile World (한글번역)
CI in the Mobile World (한글번역)
DONGSU KIM
[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트
Chanwoong Kim
강좌 03 개발환경 구축
강좌 03 개발환경 구축강좌 03 개발환경 구축
강좌 03 개발환경 구축
chcbaram
메이븐 기본 이해
메이븐 기본 이해메이븐 기본 이해
메이븐 기본 이해
중선 곽
Visual studio 사용 설명서(기초 과정)
Visual studio 사용 설명서(기초 과정)Visual studio 사용 설명서(기초 과정)
Visual studio 사용 설명서(기초 과정)
Lusain Kim
델파이 소스코드의재발견
델파이 소스코드의재발견델파이 소스코드의재발견
델파이 소스코드의재발견
Devgear
[데브루키] 게임 엔진 아키텍쳐_2장_도구 (Game Engine Architecture Chapter.2-Tools)
[데브루키] 게임 엔진 아키텍쳐_2장_도구 (Game Engine Architecture Chapter.2-Tools)[데브루키] 게임 엔진 아키텍쳐_2장_도구 (Game Engine Architecture Chapter.2-Tools)
[데브루키] 게임 엔진 아키텍쳐_2장_도구 (Game Engine Architecture Chapter.2-Tools)
MinGeun Park
개발 생산성 향상 기법 V1.2
개발 생산성 향상 기법 V1.2개발 생산성 향상 기법 V1.2
개발 생산성 향상 기법 V1.2
Daniel Lim
Deploying Hyperledger Fabric on Kubernetes.pptx
Deploying Hyperledger Fabric on Kubernetes.pptxDeploying Hyperledger Fabric on Kubernetes.pptx
Deploying Hyperledger Fabric on Kubernetes.pptx
wonyong hwang
Android Native Module 안정적으로 개발하기
Android Native Module 안정적으로 개발하기Android Native Module 안정적으로 개발하기
Android Native Module 안정적으로 개발하기
hanbeom Park
[123] electron 김성훈
[123] electron 김성훈[123] electron 김성훈
[123] electron 김성훈
NAVER D2

IoT 개발자를 위한 Embedded C에서 TDD를 해보자

  • 1. IoT 개발자를 위한 Embedded C에서 TDD를 해보자 nRF51-DK에서 TDD test result 추출하기
  • 2. • 평범한 학부생이 Embedded C에서 TDD를 실천하기 위해 시도했던 경험과 결과물입니 다. • 정답이 아닐 수도 있지만, 임베디드 개발을 하면서 느꼈던 폐쇄적인 정보 공유가 조금이 라도 개방 되었으면 하는 바람으로 작성하였습니다.
  • 3. • 개발 환경 • Windows 10 • 타깃 보드 : nRF51-DK • 타깃 시스템 환경 ■ SDK version : SDK 10 ■ Soft Device version : soft device 110 ■ Compiler : arm-none-eabi-gcc 4.9.3 • TDD를 시작하기에 앞서 타깃 시스템 개발 환경이 구축되어있지 않다면, 먼저 다른 예제 를 통해 환경을 구축하고 시작 하시는 것을 권장합니다. • nRF51-DK 환경 구축(Link1, Link2)
  • 4. TDD 실행에 앞서 Embedded C에서 쓰이는 unit test framework는 뭐가 있을까요?
  • 5. TDD Framwork UNITY 사이트 Embedded C에는 대표적으로 2가지 unit test framwork가 있습 니다. Cpputest 사이트
  • 6. TDD Framwork UNITY Unity는 C언어 기반의 framwork 이고 Cpputest는 C++언어 기반의 framwork 입니다. C C++ Cpputest
  • 7. TDD Framwork Cpputes t 사이트 UNITY 사이트 Unity는 테스트 결과를 확인하기 위해서 4개의 파일이 필요하고, main.c LedDriver .c LedDriver Test .c LedDriver Test Runner .c
  • 8. TDD Framwork UNITY 사이트 Cpputest 사이트 Cpputest는 3개의 파일을 만들면 됩니다. main.c LedDriver .c LedDriver Test .c
  • 9. TDD Framwork UNITY 여기서는 Unity를 사용합니다. Unity는 Ceedling이라는 훌륭한 Bootstrapping tool을 지원하고 Embedded C와 호환이 좋기 때문입니다.
  • 11. Ceedling - TDD Bootstrapping tool • Ceedling은 명령 프롬프트 창에서 TDD 실행 자동화를 지원합니다. • 여기를 참고해서 설치를 완료해주세요. CEEDLING
  • 12. 설치를 완료하셨다면 앞으로 “30초”, TDD 테스트 결과를 확인할 수 있습니다.
  • 13. Ceedling - 프로젝트 생성 • 명령 프롬프트 창에서 프로젝트를 관리하는 임의의 폴더로 이동한 뒤, • $ceedling new TDD
  • 14. Ceedling – TDDModule 모듈 생성 • $cd TDD • $rake module:create[TDDModule/TDDModule]
  • 15. Ceedling - 테스트 ● $rake test:all
  • 16. 이제 호스트 시스템(PC)에서 테스트 결과를 확인할 수 있습니다! 앞에서 사용한 Ceedling에 대해 조금 더 설명을 드리자면,
  • 17. Ceedling - 명령어 도움말 • $rake -T
  • 18. Ceedling - 테스트 • 테스트 코드 입니다. • ..../TDD/test/test_LedDriver.c
  • 19. Ceedling - TDD • ..../TDD/test/support에 테스트에 필요한 파일을 추가 해주면 별도의 경로 지정 없이 code 내에서 include 가능합니다. • Assert 함수는 ..../TDD/vendor/ceedling/vendor/unity/src/unity.h에서 확인 가능합니다. • SUT와 Test code를 수정하면서 TDD를 진행하면 됩니다. • Ceedling의 자세한 사용법은 여기를 참고해주세요.
  • 20. Ceedling은 프로젝트 생성, 모듈 추가 그리고 테스트 환경 구축까지 빠른 주기로 실행 가능한 강력한 Bootstrapping Tool입니다.
  • 21. 그렇다면, 호스트 시스템(PC)이 아닌 타깃 시스템(nRF51-DK)에서 실행되는 테스트 코드는 어떻게 실행 결과를 확인할 수 있을까요?
  • 22. 타깃 시스템 - Unity framework • 복잡한 동작 방식과는 관계없이 최종적으로 Unity framework는 출력 함수 putchar() 를 통해 테스트 결과를 출력하는 기능을 가지고 있습니다. UNITY
  • 23. 타깃 시스템 - 출력 함수 • 그렇기 때문에, 테스트 결과를 PC에서 출력하는 방법은 간단합니다. • 타깃 시스템이 putchar() 함수를 지원하도록 하거나, • Unity framwork에서 출력 함수 putchar() 를 타깃 시스템이 지원하는 출력 함수로 대체 합 니다. UNITY putchar() write()
  • 24. 타깃 시스템 - nRF51-DK • nRF51-DK는 <stdio.h> 파일을 include 하여 putchar()함수를 지원합니 다. putchar()
  • 25. nRF51-DK에서 putchar() 함수로 출력 되는 테스트 결과를 어떻게 PC에서 확인하면 될까요?
  • 26. • putchar() 함수를 통해 출력 되는 결과는 UART 통신을 통해 호스트 시스템 (PC)에서 확인이 가능하게 됩니다. UART 통신 UNITY
  • 27. 시리얼 터미널 • 시리얼 통신이 가능한 프로그램을 자유롭게 설치해주세요. • 여기서는 Teraterm을 사용하도록 하겠습니다.
  • 28. 시리얼 터미널 • nRF51-DK를 연결하고, • Teraterm 메뉴에서 설정 - 시리얼 포트를 클릭 한 뒤에 위와 같이 설정합니 다. • 포트는 동일하지 않을 수 있습니다.
  • 29. 이제 nRF51-DK에서 구동 가능한 프로젝트 구성을 하고, 최종적으로 nRF51-DK를 통해 테스트 결과를 PC에서 확인해보도록 하겠습니다.
  • 30. 프로젝트 구성 • https://github.com/KimmTY/nRF51_Unit_Testing 에서 repository를 다운 받거나, • 명령 프롬프트창에서 원하는 폴더로 이동 후, • git clone https://github.com/KimmTY/nRF51_Unit_Testing.git 입력합니다.
  • 31. 프로젝트 구성 - 환경구축 • https://github.com/KimmTY/nRF51_Unit_Testing 에서 Need section은 모두 충족 시켜주세요.
  • 32. nRF51-DK에서 TDD를 해보자 - Compile • nRF51-DK를 연결한 상태에서, • 명령 프롬프트 창을 실행하고, • $cd nRF51_Unit_Testing • $make all
  • 33. nRF51-DK에서 TDD를 해보자 - Soft Device • $make flash_softdevice
  • 34. nRF51-DK에서 TDD를 해보자 - Application • $make flash nrf51422_xxac_s110
  • 35. Application까지 Flash하고 Teraterm 터미널을 확인해보면,
  • 37. 마지막 절차인 타깃 시스템이 보낸 테스트 결과를 시리얼 터미널로 확인 가능하게 되었습니다! 이제는 하드웨어에 의존적인 부분까지도 TDD를 실천할 수 있습니다. Text color, 출력 옵션, Test code 추가 등 TDD를 진행하면서 궁금한 점은 여기를 참고해주세 요.
  • 38. 임베디드 시스템에서 TDD를 실천하는 것은 도전적이라고 생각합니다. 열악한 디버깅 환경에서 SW로부터 발생하는 문제인지, HW로부터 발생하는 문제인지, 확인조차 되지 않는 일이 매일 같이 발생합니다. TDD를 실천함으로써 HW와 SW 경계가 명확해지고, 설계는 더욱 개선됩니다. 이 자료가 정답이 아닐 수도 있지만, 조금이라도 도움이 되어 즐거운 TDD 라이프가 만들어지면 좋겠습니다.
  • 39. 또한, 임베디드 개발자는 컴파일러, 타깃 시스템 등 특성을 많이 타고 범용적이지 않은 상황을 자주 마주하게 됩니다. 그때마다 서로의 경험을 공유하고 지식을 나눈다면, 더 많은 임베디드 개발자분들이 더 신뢰가 가고 안정적인 프로젝트를 만들지 않을까 싶습니다.