brunch

You can make anything
by writing

C.S.Lewis

by 호뎡 Jun 28. 2024

SW 결함을 가장 무서워하는 분야 pt.2

눈만 있어도 할 수 있는 화이트박스 테스트


여러분들, 구글링 많이 하시죠?

챗gpt 사용을 즐겨하시는 분들도 있을 거예요...!

개발자분들도 많이들 사용하실 텐데요.

코딩 문장 자체를 짓는 데 어려움이 조금 덜어졌다면, 이제는 소스코드 전체의 로직을 어떻게 구성할지 고민하시는 분들이 많으실 거 같습니다.


개발 시 소스코드를 짜는 도중 계속해서 머릿속에서 구현을 시도하시는 분들도 있을 겁니다.

동시에 이왕 코드를 만진 김에 정확도를 같이 올려주면 좋으니까 결함 포인트를 머릿속에서 한번 찾아보기도 하구요.

그래서 개발자분들은 보통 화이트박스 테스트를 많이 하시죠.

화이트박스 테스트를 진행하고 소스코드의 문제점을 미리 파악해서 수정하면 장애나 기능문제로 인한 고객 컴플레인을 다소 제거할 수 있겠죠?


이 과정도 나름의 의미가 있는데요. 테스트 엔지니어가 진행하는 사용성 또는 매뉴얼 테스트를 통해 문제를 발견하는 게 더욱 효과적일 수도 있겠지만, 어떤 런칭 프로젝트의 개발, 테스트 실무 관계자분들은 야심 차게 만들어놓은 서비스의 서버를 올리기 전에 오류를 발견하고 싶어 합니다. 


때문에 수상~한 낌새를 감지하는 매의 눈도 장착하고 계셔요.



아무리 냄새를 맡으려고 해도 맡을 수 없다면, 우리가 주목해야 하는 게 무엇인지 지표를 보고 싶어 하기 마련입니다. 이렇듯 상당수의 엔지니어들이 실행률에 집착하는 광경을 볼 수가 있습니다.


눈알 빠지도록 찾다가 완벽해 보이나 싶어서 빌드해 보면 멀끔하게 바로 실행되기는 개뿔 문제가 발생합니다.

또 디버깅을 진행해야 하는 상황이 오는 거죠.


디버깅이라는 게 동적인 업무라고는 하지만 요즘에는 꼭 프로그램을 실행하지 않아도 디버깅이 가능하죠.

많은 사람들이 동적 테스팅을 정의하는 데 프로그램을 실행하는지, 안 하는지를 핵심으로 두고 있거든요.

그래서 디버깅을 정적 분석으로 분류하곤 하죠.


여기서 오해의 소지가 생기는 이유가 뭐냐면

디버깅이라는 개념을 청자가 어떻게 이해하냐에 따라 다르게 나타날 수도 있습니다.(..!)


그렇다면 디버깅은 조금 애매한 범주 안에 들어가게 되는데요, 개념이 만들어진 초기부터 프로그램 실행을 통해 문제나 오류를 발견하고 이를 해결하기 위해 코드를 고치는 행동을 디버깅으로 이해한다면 동적 테스팅으로 볼 수 있지만, 


시간이 흘러 현재 개발자가 일련의 실행 없이 코드가 문제 되는 부분을 찾아서 디버깅을 하거나, 디버깅 전용 

툴을 통해 디버깅을 한다면 이는 정적 테스팅으로 보는 게 올바르다고 생각되지 않나요?


무엇을 디버깅하냐에 따라서 다를 수도 있겠네요. 실행을 통해 발견할 수 있는 오류라면 동적 테스트를 통해 해결해야 하고, 실행 이전에 발견할 수 있으면 정적 테스팅을 통해서도 해결할 수 있겠죠.



자 그러면 다시 큰 주제로 돌아가서

테스트 커버리지 목표치를 맞추기 위한 테스팅 수행 중에 코드 커버리지를 측정하게 될 텐데요.

TC를 설계하던 테스터나 개발자도 어느 라인의 커버리지 비율이 높게 나타날지 감을 잡는 것 정도는 수월하게 할 수 있습니다.


다만 엔지니어 분들이라면 꼼꼼하고 완벽한 업무를 수행하기 위해 정확한 실행률을 원하시기도 하고,

분석 진행 과정을 유추하는 정도가 아니라 가시적인 지표로 보길 원하시더라구요.


조금 적당한 단위결함의 예시를 들어보자면, 루프 오류라던지 분기문 오류라던지 여러 가지 오류가 존재할 텐데요. 특히 이 부분들은 실행은 되지만 논리적 오류가 일어난 부분으로 볼 수 있죠.


물론 어떤 코드들은 그냥 읽어보고 문제점을 캐치한 뒤 바로 고칠 수 있기도 합니다.

그리고 루프를 돌리는 수 자체가 많은 코드는 별로 건강하지 않은 코드이기에

개발자들은 조건문에 여러모로 힘을 빼려고 합니다.


다만 어떤 기능 이후 해당 루프가 실행되는 분기(실행 예시)는 백 개는 거뜬히 넘겠죠.

이 실행 예시가 사용자, 시간, 장소에 따라서 다르게 발생하고

이 루프 안에서의 문제점을 찾아내기 위해 실행하지 않고 동작들을 하나하나 따라가 보려고 한다면......



확률과 통계 수능 문제 손수 풀기 체험을 하실 수 있습니다^^ 이거 좋아하는 사람(변태)은 없죠?

사람은 도구를 사용하면서 진화했는데

우리 엔지니어 분들도 도구를 사용해야 하지 않겠어요??


그래서 준비했습니다...!

여러분의 수고로움을 덜어드리기 위해

몇 가지 단위 검증 툴을 조금 비밀스럽게 알려드리려구요..! 광고 아닙니다


COYOTE(코드마인드)


단위검증 툴 코드마인드 코요테입니다..!

화이트박스 테스팅 도구인데요, 분석 후 논리상 테스트케이스 자동 생성은 물론

코드 실행률을 시각화해 주고, 어떤 구문의 분기 값을 임의로 할당해 보는 식의 테스트 서비스도 지원해 줍니다!


슈어소프트 ct2023


슈어소프트테크 CT라는 도구도 위와 비슷한 서비스를 제공하는 제품이에요.

사용법을 익히시려면 조금 시간이 걸리시겠지만, 이런 것도 배워보는 게 저는 정말 나쁘지 않다고 생각해요 :)


사실 제품 런칭 관계자들이 진심으로 우려하는 것은

실제 사용자가 사용하는 와중에 결함을 통한 오류가 발생해서 이슈화되는 것이기 때문이죠.

그렇다면 이 사실도 간과할 수 없겠죠?

이는 바로 동적 테스팅이 스타트업 런칭 과정에서 떼려야 뗄 수 없는 관계라는 것이죠!!


작가의 이전글 SW 결함을 가장 무서워하는 분야(feat. 정부24)
작품 선택
키워드 선택 0 / 3 0
댓글여부
afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari