1. TDD에 관한 조사 A. 테스트 주도 개발이란? 테스트 주도 개발(test-driven development, TDD)은 소프트웨어 개발 방법론 중의 하나로, 선 개발 후 테스트 방식이 아닌 선 테스트 후 개발 방식의 프로그래밍 방법을 말한다. 다시 말해 먼저 자동화된 테스트 코드를 작성한 후 테스트를 통과하기 위한 코드를 개발하는 방식의 개발 방식을 말한다.[1] TDD에서는 제품의 기능 구현을 위한 코드와 별개로, 해당 기능이 정상적으로 움직이는지 검증하기 위한 테스트 코드를 작성한다. 이를 통해 테스트가 실패할 경우, 테스트를 통과하기 위한 최소한으로 코드를 개선한다. 최종적으로 테스트에 성공한 코드를 리팩토링 하는 과정을 거친다.[2]TDD를 잘 사용하면, 전체 코드를 완성하기 전에 기능 단..
MDE를 활용한 사례 중, Lockheed Martin의 항공 소프트웨어 사례를 분석해보면, F-16을 개발하기 위해서 OMG의 MDA를 활용하여, 여러 플랫폼에 사용이 가능하고 생산성과 품질을 높이는 소프트웨어 개발을 하였다. 이때, 사용한 툴은 Kennedy Carter’s iCCG, UML, MDA(OMG)를 사용했다. F-16은 다음과 같은 소프트 웨어 아키텍처를 가지고 있었다.[1] 이때, Application Software가 전체 소프트웨어의 80~90%를 차지하고 있었고, 아래 Hardware, Software Execution Platform, Application Software Interface는 자주 변경되는 부분이였다. 따라서, 하위의 Application Software Inte..
위의 그림은 소프트웨어 품질 생명주기를 나타낸 그림이다. 소프트웨어 제품 품질을 달성하기 위해 소프트웨어 제품을 평가하는 것은 소프트웨어 개발 생명주기의 한 과정이다. 소프트웨어 제품 품질은 내부 속성을 측정함으로써, 혹은 외부 속성에 의해 평가될 수 있으며, 그 목적은 특정한 사용용도에서 요구한 효과를 내도록 하는 것이다. 프로세스 품질 개선은 제품 품질의 개선을 가져오고, 제품 품질은 사용 품질의 개선을 가져온다. 그러므로, 프로세스를 평가하고 개선하는 것이 중요하다. 따라서, 적절한 품질 평가 프로세스는 개발 동안에 품질측정하는데 필요하다. ISO/IEC 9126의 이 부분은 품질과 관련된 문제점에 대한 점검표를 제시한다. ISO/IEC 9126은 총 4개의 부분으로 나누어져 있으며 ISO/IEC ..
i. 테스트를 위한 함수 작성하기 ii. 스위트 선언 iii. 테스트 레지스터리를 초기화 iv. 테스트 레지스터리에 스위트를 추가 v. 스위트에 테스트 추가 vi. 적절한 인터페이스 선택후 실행 테스트 vii. 테스트 레지스터 정리 테스트 진행할 코드 두 값을 더하는 add함수의 테스트를 진행해보자. int add(int a,int b){ return a+b } 1. 테스트를 위한 함수 작성하기-간단하게 더하기 함수를 작성하였다 CU_ASSERT_EQUAL([함수(,)], [예측값])를 이용하여 함수와 예측값을 넣어준다. void testAdd(void){ CU_ASSERT_EQUAL(add(1,1),2); } 2. 스위트 선언하기 CU_Psuite를 통해서 스위트를 선언해준다. CU_pSuite sui..
"가장 기본적인 실행 단위"는 C언어에서 함수(Function)에 해당한다.Unit Test Automation은 두가지로 구분된다. Blackbox Testing과Whitebox Testing으로 나뉜다. Black box testing 블랙박스 검사는 소프트웨어 검사 방법 중 하나로 어떤 소프트웨어를 내부 구조나 작동 원리를 모르는 상태에서 소프트웨어의 동작을 검사하는 방법을 이르는 말이다. 주로 올바른 입력과 올바르지 않은 입력을 일일이 다 동원하여 올바른 출력을 판별하는 방식으로 검사가 이루 어지기 때문에 검사의 진행에 있어 대상이 되는 소프트웨어의 코드나 내부 구조 및 개발 노하우에 대한 정보는 기본적으로 필요로 하지 않는다. 필요한 것은 특징, 요구 사항, 검사를 위해 공개된 설계도 등 대외적..
CMMI는 소프트웨어와 시스템 공학의 역량 성숙도를 평가하는 모델이다. CMMi와 유사한 국내의 평가모델로는 SP인증이 있다. 소프트웨어 프로세스 품질인증(SP인증)은 소프트웨어산업진흥법 제23조에 근거하여 국내 소프트웨어 기업의 소프트웨어 사업 수행능력을 강화하고 소프트웨어 사업의 부실방지를 목적으로 기업의 소프트웨어 개발단계별 작업절차 및 산출물 관리 역량 등을 분석하여 소프트웨어 개발 프로세스 역량 수준을 평가 및 인증하는 제도이다. SP인증은 대기업에 비해 상대적으로 열악한 환경에 처해있는 중소기업의 소프트웨어 품질개선 활동을 지원하고자 만들어진 제도로 CMMI를 참조하여 개발되었으나, 중소기업에서 보다 수월하게 활용할 수 있도록 내용을 축약하였다.[1] 과학기술정보통신부에서 정책을 지원, 관리,..
CUnit은 C로 작성된 소스에 대해서 Unit Test를 지원해주는 라이브러리이다. . C unit은 어떤 함수의 리턴값이 예상한 값과 맞는지 블랙박스 테스트를 하기 용이하다.CUnit의 테스트 구조는 Registry 있고 Registry 안에 Suite가 있고 그 내부에 Test들이 존재하는 구조를 가진다. Cunit에서 사용되는 헤더 파일 #include 테스트 케이스에 사용하기 위한 ASSERT 매크로 #include xml 출력이 있는 자동화된 인터페이스. #include 함수 및 데이터 유형 오류 처리 #include stdout에 대한 비대화형 출력이 있는 기본 인터페이스. #include 테스트 레지스트리, 제품군 및 테스트..
Google 테스트(gtest라고도 함)는 xUnit 아키텍처를 기반으로 하는 C 프로그래밍 언어용 단위 테스트 라이브러리이다. 가이드는 이곳을 참고하면 된다. https://google.github.io/googletest/ 설치의 같은 경우 아래 링크를 참고해서 설치하였다. https://github.com/google/googletest/tree/main/googletest git clone https://github.com/google/googletest.git -b release-1.11.0 cd googletest # Main directory of the cloned repository. mkdir build # Create a directory to hold the build output...