-
2021년 베스트콘 후기, 성공적!Tech 2021. 11. 17. 15:57
안녕하세요~
코드마인드 입니다.
저희는 지난주 12일 코엑스에서 열린 제7회 국제 품질 테스팅 콘퍼런스 "베스트 콘"을
성공적으로 마쳤습니다!
우선 코로나로 인하여 어려운 시국에도 저희 기업에 관심을 갖고 찾아와주신 모든 분들께 진심으로 감사드립니다.
저희는 금요일 오전 오픈 시간부터 대기하여 고객들을 만날 준비를 하였습니다.
자동 테스팅 도구 코요테의 연구원님과 영업팀 대리님께서 부스에 상주하며 고객들과 현장에서 직접 만나 소통하는 유의미한 시간을 가지셨습니다.



많은 분들께서 저희 자동 테스팅 도구 코요테에 관심을 갖고 부스에 찾아와 질문과 관심을 보여주셨습니다.
그중 일부 업체와는 기술미팅을 진행할 예정입니다.
베스트콘이라는 좋은 행사를 통해 국내 소프트웨어 품질 테스팅에 대해 더 알릴 수 있었고, 고객들과 직접 만나 의미 있는 결과를 도출할 수 있어 좋은 기회였습니다.
그리고 코요테를 이끌어 가시는 노상훈 공학박사께서 화이트 박스 테스팅 완전 자동화의 현 수준에 관한 설명을 하고 계십니다.
화이트 박스 테스팅 자동화가 꼭 필요한지, 심볼릭 테스팅 기술은 어떤 원리인지, 완전 자동 도구란 어느 수준인가에 대해 설명했습니다.
궁극적으로 화이트박스 테스팅은 민감한 SW 테스팅에서는 필수 요소이며 수작업 테스팅은 코드마인드의 완전 자동 SW 테스팅 도구인 코요테를 사용하여 그만할 수 있다고 설명했습니다. (본 기술은 자동차 전장 SW 등 임베디드 SW에서 입증되었습니다.)


아래는 자동 테스팅 도구 COYOTE 관련 온라인 세미나를 듣고 참관자님들께서 질문해 주신 내용입니다.
주요 질문사항과 답변 공유해 드리오니 궁금하신 분들은 참고 바랍니다.
[질문] 화이트박스 테스트는 개발자가 하게되는 것인가요? 테스트를 수행하는 주체는 누가되나요?
[답변] 화이트박스 테스트가 이루어지는 것은 여러 단계가 있으며, 이는 회사의 개발 정책에 따라서 달라집니다. 기본적인 형태는 개발자와 테스터가 모두 수행하는 형태가 많습니다.
개발 정책에 따라서는 각 개발자들은 본인이 담당한 코드에 대해서 기본적인 유닛 테스트나 검증등이 통과 되어야지만 형상관리에 커밋을 할 수 있도록 허용하는 형태도 있으며, 이렇게 커밋된 코드들에 대해서 테스트 전담 조직에서는 더 집중적인 테스트를 통해서 개발자가 놓친 오류들을 찾아내는 형태도 있습니다.
요약하자면, 화이트박스 테스트는 개발자와 테스터 양쪽 모두 그 주체가 될 수 있습니다.
[질문] API 등을 활용한 Legacy 시스템과 연계한 효율적인 업무 향상 방안이 있을까요? 그리고 버전 Update 시, 안정적인 서비스의 경우 어려운 PM 등 변경작업이 많아질 수 있을 것으로 우려되는데요. 어떻게 하면 효율적인 관리가 가능할까요?
[답변] COYOTE 제품의 경우 CLI 를 통해 DevOps 상에서 연계해서 사용할 수 기능을 제공합니다.
[질문] Whitebox 검증 Target이 함수단위의 Unit Test 인가요?
[답변] 기본적으로 함수 단위이긴 하지만, 동일한 파일내에서는 스텁 함수를 호출하는 대신 실제 코드를 호출하도록 되어 있습니다. 이 부분은 커버리지 개선을 위해 실제 코드 대신 스텁을 호출하는 형태로 조정이 가능합니다.
[질문] 코드마인드의 화이트박스 자동테스트는 기존에 나와있는 오픈소스 화이트박스 테스트와 가장 큰 차이점은 무엇인가요? 또 해당 툴로 개발자가 아닌QA나 테스터가 좀더 쉽게 화이트박스 테스트를 할 수 있을까요?
[답변] 오픈소스 화이트박스 기술들은 다양하게 존재하지만, 기반 기술이 다양해서 딱 말씀드릴 수는 없습니다. 단, 유사한 콘콜릭 실행 기반의 도구들과 비교할 때 상용화된 도구와 아카데믹하게 연구되는 도구의 사용법에서 차이가 많이 납니다. 오픈소스 도구의 경우 하네스 생성과 같은 부분은 관심 분야가 아니라서 별도로 사용하게 편리하게 만들어진 UI 가 존재하지 않고 엔진만 존재하는 경우가 많아 일반사용자가 사용하기에는 좀 어려움이 있을 겁니다.
그리고 동일한 콘콜릭 실행 기술 기반이더라도 기술의 차이에 의해서 결과물의 품질에 차이도 발생합니다.
[질문] SMT Solver를 직접 개발하신건가요?
[답변] SMT Solver는 현재 가장 실용적으로 사용되고 있는 Z3 를 사용하고 있습니다.
[질문] 과거 연구 결과들에서는 Test Harnes의 문제로 False Alarm이 많은 사례를 보았습니다. 자동화 도구를 만드실때 어떤 효과적인 방법으로 harnes 문제를 해결하셨나요?
[답변] 유닛 테스팅을 하게 될 경우 실제 실행에서는 불가능한 입력값들이 생성되어 false alarm들이 많이 발생하게 됩니다. 이러한 부분들을 완전히 해결할 수는 없지만, 실제 코드의 실행에 가깝게 함으로써 개선할 수 있습니다.
[질문] 간단한 예를 보여주실때는 굉장히 빠르게 결과가 나왔는데 하이트박스 자동테스팅의 속도는 어느 정도인가요?
[답변] 실제 테스트해 본 코드 중에는 (2천 라인, 파일 60개, 함수 560개) 정도의 C++ 코드의 사례에서는 15분 정도로 짧은 테스트시간이 소요되었습니다.
자동 테스트에 소요되는 시간은 실제 코드의 특성 및 설정에 따라서 달라질 수 있습니다.
[질문] Test 수행시간은 어떻게 되나요? Line 수와 Complexity 기준으로 Coverage 100% 달성 시간을 알고 싶습니다.
[답변] 자동 테스트만으로 테스트 커버리지를 100%로 달성하기에는 한계가 있습니다.
스텁의 파라미터가 입력값으로 간주되어야 하는지를 판단하기 어려운 부분도 있으며, 코드에 실제로는 실행이 불가능한 데드 코드들도 존재하기 때문입니다. 특히, 실제로는 불가능한 입력들에 대해서 방어적인 코드를 작성할 경우 이런 현상이 빈번하게 발생합니다. 또한, SMT 문제해결기의 계산 한계로 인해서 계산이 불가능한 경우도 존재합니다.
(2천 라인, 파일 60개, 함수 560개) 규모의 C++ 오픈소스의 경우 완전 자동 테스트로 15분 정도의 시간이 소요되었습니다.
[질문] 1. 지원하는 개발언어에 대해 알고 싶습니다. 2. 테스트 케이스 생성까지는 이해 가는데 테스팅 수행시 오류 여부는 어떻게 알 수 있는지 궁금합니다. 기대값에 대한 작성이 없어도 테스팅 수행이 되는지요?
[답변]
1. 현재 COYOTE 도구는 C/C++ 코드에 대한 자동 테스트를 지원하고 있습니다.
2-a. 기대값에 대한 검증을 위해서는 스펙 검증 기능이 별도로 제공됩니다.
2-b. 스펙을 별도로 설정하지 않는 경우에도 프로그램 실행 공통오류를 검출해줍니다. 자동 테스트 과정에서 메모리 오류, 0 으로 나누기 오류, 널포인터 접근 오류등과 같이 프로그램을 비정상 종료하게 만드는 오류들이 검출 될 수 있습니다.
[질문] 기존의 수동 테스팅과 화이트박스 자동 테스팅을 융합해서 효율적으로 활용할 수 있는 방법에 대해서 질문드립니다.
[답변] 이러한 도구의 활용 방안으로 가장 일반적인 시나리오는 자동테스팅을 통해 자동으로 달성할 수 있는 커버리지들을 달성 후, 자동으로 달성하기 어려운 커버리지 영역들을 수동 테스팅을 통해 보완하는 형태입니다.
수동 테스팅에서는 커스텀 스텁, 커스텀 드라이버, 테스트 케이스 수동 입력 및 코드 삽입과 같은 것이 가능합니다.
수동 테스팅의 경우도 기존의 수동 테스팅에서 상수로 입력값을 설정했던 것과 다르게 자동 테스트의 혜택을 볼 수 있도록 특정 입력값에 대해서 심볼들을 설정하는 형태가 가능합니다. 이 경우 수동으로 생성해야 하는 스텁과 같은 부분을 최소화 할 수 있습니다.제품/강연 관련하여 질문 있으신 분들은 marketing@codemind.co.kr로 연락 주시기 바랍니다.
그럼 모두 환절기 감기 조심하시고 건강하세요. :)
'Tech' 카테고리의 다른 글
최신 시큐어 코딩 트렌드 (0) 2021.07.08 화이트박스 자동테스팅 어디까지 왔을까 (0) 2021.05.26 코드마인드 COYOTE 현 위치 어디? (0) 2021.03.25