본문 바로가기

Testing Tools

(19)
Jenkins :: VirtualBox Slave 관리 (2/2) Jenkins :: VirtualBox Slave 관리 (1/2) 3. Virtualbox Node 추가 VirtualBox Cloud 설정이 완료되었다. VirtualBox Node를 추가하도록 한다. Jenkins 서버에서 "Jenkins 관리" >> "노드 관리" 를 선택한다. 좌측의 "신규 노드"를 선택하여 아래와 같이 작성한다. VirtualBox Slave로 노드를 등록한다. 노드가 추가되었다. Jenkins 서버의 좌측에 새로운 노드가 추가된 것을 확인할 수 있다. 4. Virtualbox Node 설정 추가된 노드를 선택하고, 좌측의 메뉴에 노드 설정을 할 수 있는 메뉴를 선택한다. 아래와 같이 VirtualBox Node를 설정한다. VirtualBox Host를 선택하면 방금 추가한 V..
Jenkins :: VirtualBox Slave 관리 (1/2) Jenkins :: VirtualBox Slave 관리 (2/2) 0. 개요 Jenkins는 가상머신을 원격 노드로 사용할 수 있다. 개발환경 및 시험환경을 가상머신으로 관리하는 것이 관리하기 쉽기 때문이다. 이를 위하여 Jenkins 서버를 설정하는 방법과 가상머신(Virtualbox 4.3.20를 사용하였음.) 노드와 연결하는 방법을 설명하도록 한다. 전체적인 구성도는 아래와 같다. 편의를 위하여 Jenkins가 설치된 곳을 Jenkins 서버, 가상머신이 설치되어 가상머신 노드들을 관리하게 될 곳을 가상머신 서버라고 칭하도록 한다. 1. VBoxWebSrv 시작 웹 인터페이스로 Virtualbox를 관리하기 위하여 VBoxWebSrv 라는 서비스를 제공하고 있다. Jenkins는 가상머신 Cloud..
Windows에서 HANDLE 사용 관련... 윈도우즈 프로그래밍에서 HANDLE을 리턴하는 함수를 사용시 최근에 봤던 문제점들을 보자.(의외로 많이 봤다.) 아래와 같이 CreateFile을 사용하는 상황에서 제대로 자원이 할당되었다면, 할당된 자원에 대한 HANDLE이 리턴이 될 것이다. Line 7에서는 제대로 할당되지 않았을때를 대비한 방어코드가 들어가 있어서 별 문제가 없는 것처럼 보인다. 하지만, 해당 코드에 대한 분석을 하게 되면, Line 7에서 Redundant Condition과 Line 10에서 Free Null Pointer 오류를 볼 수 있다. 이유는 간단하다. CreateFile이 자원 할당 실패시 NULL을 반환하는게 아니라 INVALID_HANDLE_VALUE(-1로 정의되어 있음.)를 반환하기 때문이다.(MSDN 참조)..
Jolt Awards: The Best Testing Tools http://www.drdobbs.com/joltawards/jolt-awards-the-best-testing-tools/240155296?pgno=1
new 메모리 할당 연산자 사용시 유의할 점 C에서 malloc를 사용하여 메모리를 할당할 경우, NULL을 반환하는지 아닌지에 대한 여부로 메모리 할당 성공 여부를 판단하였다. C++에서 new 연산자를 사용하여 할당할 경우, 동일하게 NULL 반환 여부를 판단하는 코드를 작성하여(예시1의 코드와 같이) 정적분석(Codesona 등) 자동화 도구로 분석하면 Redundant Condition과 Unreachable Call의 두가지 오류를 보게 될 것이다.C++에서 new 연산자는 기본적으로 자원할당 실패 시 std::bad_alloc를 발생하고 있기 때문이다.(http://www.cplusplus.com/reference/new/bad_alloc/ 참고) 만약, C에서의 방식대로 NULL 반환여부로 판단하고 싶다면, 예시2) 와 같이 수정하면 ..
LDRA TBrun :: C++ 인터페이스의 메쏘드 Stub 처리하기 Rhapsody 로 개발된 프로젝트를 TBrun으로 동적시험 할때 가장 난감할 때가 PORT에 연결된 인터페이스에 대한 처리일 것이다. 예를 들어 아래와 같이 Calculator 클래스의 포트에 IException이 Required Interface로 연결되어 있을 경우, 해당 포트에 적정한 객체를 연결시켜주지 않는다면, Null 참조 오류가 발생하게 될 것이다. 또한, IException 만으로는 객체를 만들수가 없다!!(모른다면... C++을 다시 공부하자.) 1. 아래와 같이 Post-Include기능을 활용하여 IException를 상속받는 TestClass를 만들어준다. 생성자 / 소멸자의 몸체는 빈 함수로 구성하고, 스텁처리할 calculationFailed는 선언만 한다. 2. 스텁 함수로 ..
LDRA TBrun :: Input / Output Value / Code Inserts 에서 객체에 접근하기 C++로 진행하다보면, 특정 테스트 케이스에서 생성한 객체에 접근해야 할 필요가 있다.이럴때는 tbrun_qq_tc_return 와 같이 접근하면 된다. 예를 들어 Input Value에 Test Case 1번에서 생성된 객체의 멤버의 값을 대입하고 싶다면, tbrun_qq_tc1_return->m_Val 와 같이 접근하면 된다.
LDRA TBrun :: VC2008에서 디버깅(debugging) 하기 LDRA TBrun을 사용하여 SW단위시험 수행 시, 설계한 Test Case가 예상한대로 수행되지 않는다면 원인을 파악하기 위해 보통 디버깅을 수행하게 된다. 즉, 테스트 케이스 설계가 잘못되었는지, 소스 코드에 문제가 있는지 판단할 필요가 있는 것이다. 가장 쉽게는 printf 문을 이용하여 구간구간 찍을 수 있어서 확인할 수도 있지만, 여간 귀찮은게 아니다. 그래서 만약 Visual Studio 환경에서 개발 및 시험을 수행한다면 보다 효율적으로 디버깅을 수행할 수 있을 것이다. 이 글을 쓰는 현재 LDRA 9.1.0을 사용하고 있으며, Visual Studio 2008 프로젝트를 SW단위시험을 수행하였다.(참고로 LDRA 9.1.0에서 제공하는 메뉴얼에서도 디버깅 방법이 나와있긴 하지만, 그다지 ..