brunch

You can make anything
by writing

C.S.Lewis

by Ruth Hyojin Nam Sep 19. 2023

네트워크 조작하여 소프트웨어 검증하기

네트워크 테스트(Network Test)


네트워크 테스트 (Network Test)


  네트워크 테스트는 제품 개발 기간 중에 진행되는 기술 검증 테스트 중 하나로 네트워크 단절/전환, 약한 네트워크, 국가별 네트워크 상황, 네트워크 성능 등을 의도적으로 세팅하여 여러 네트워크 환경에서 서비스할 제품의 작동상 오류가 없는지, 의도하지 않은 동작이 발생되지 않는지 등 문제 및 오류를 발견하기위한 활동입니다. 



 개발된 소프트웨어를 좋은 네트워크 환경에서 작동시 노출되지 않는 숨은 결함을 찾기위한 일련의 테스트 절차로 결함과 문제 식별에만 목적을 두지 않고 여러 네트워크 환경에서 품질을 개선하기 위한 활동까지 포함하여 테스트를 진행하는 것이 중요합니다. 


이유는, 테스트 주체가 선정한 네트워크 범위가 정량 수준을 벗어나거나 매우 제한적인 상황에서만 발생되는 오류가 발견될 경우 발견된 결함을 수정하는데 소비되는 리소스와 시간적 비용이 높아지면 효율적이고 효과적인 개발활동을 했다고 보기 어렵기때문입니다. 이런 경우 결함을 수정하는데 초점을 두기보다 예외상황에서 발생될 수 있는 개선 활동과 대안에 초점을 두고 문제 발생시 즉각적으로 대응할 수 있는 방안을 준비하는 활동이 더 나은 결과를 얻을 수 있습니다. 


네트워크 테스트 전 서비스할 제품의 타겟 국가와 해당 국가의 네트워크 상황 조사, 네트워크 목표수준과 한계수치에서 제품 동작과 데이터 보호 안정성이 요구되는 수준을 만족하는지 품질 검증 목표 선정, 예상되는 문제를 예측하고 식별하기위한 테스트 시나리오/예상결과치 준비, 테스트 상황에 적합한 테스트 도구 선정 등 철저한 사전 준비가 필요합니다. 



네트워크 테스트 종류

1) 네트워크 단절

    네트워크를 사용하지 못하는 상황  (ex_비행기모드, wifi/LTE/3~5G off)

단절테스트 목적 : 네트워크 단절 상태에서 제품의 반응을 확인하여 타임아웃 정책 수립 및 발생될 네트워크 이슈에 대한 대비 시나리오 확립

     ex) 타임아웃 정책 : 1) 제품 이용 중 네트워크 단절시 n회 접속 시도 후 네트워크 오류 팝업 노출

                              2) 데이터 다운로드 중 네트워크 단절 시 n회 접속 시도 ‣ 네트워크 재연결시 데이터가
                                 이어서 다운로드 된다. 

         예외처리 대응 : 단절 상황에서 크래시, 프리징 등 의도하지 않은 동작이 발생되는지 확인한다. 


2) 네트워크 전환

   WIFI ↔ LTE/3~5G로 전환되는 상황 (ex_wifi 연결상태에서 wifi 사용을 중지 시 인터넷이 잠시 단절되고 LTE/3~5G로 연결된다)


3) 네트워크 부하 

      Edge Network : 상시 네트워크 통신이 없을때 큰 문제없이 제품 이용 가능해야 한다.    

      Bad Network : 네트워크 상황이 좋지 않은 상태. 제품 이용 가능/불가능 상황이 상시로 존재한다. 제품의 가장 주요기능에서 발생되는 이슈가 없는지, 의도하지 않은 동작이 발생되지 않는지 확인한다.     

Delay / Loss : 제품 이용이 불가능한 상황. 제품의 가장 주요 기능에서 발생되는 이슈가 없는지, 의도하지 않은 동작이 발생되지 않는지 확인한다.

네트워크 상태별 수치 세팅 가이드 













4) 네트워크 성능 테스트 (업/다운 속도, 부하 발생시 지연)

   (1) 다운로드/업로드 속도

        데이터 업/다운로드 시 속도를 측정한다. 

        나쁜 네트워크 환경에서 데이터 업/다운로드시 발생되는 이슈가 없는지, 의도하지 않은 동작(ex_무한
        로딩)이 발생되지 않는지 확인한다.

        정상 속도 = 다운로드-18Mbps이상/업로드-8Mbps이상 

(2) Ping 속도 : 반응속도 (데이터 교환 속도)

    정상 속도 = 0~60ms    

    눈에띄는 딜레이 : 100ms 이상

    제품사용불가/연결안됨 : 170ms 이상


5)  Network Latency 테스트(네트워크 지연)

  Latency는 데이터가 네트워크의 한 지점에서 다른 지점에 도달하는데 필요한 시간으로 일반적으로 데이터가 어플리케이션 서버를 떠나 사용자 기기에 도달할 때까지 시간 차이를 말합니다.
Latency 테스트는 부하 상태에서 아무 문제없이 여러 사용자가 동시에 제품을 사용하는 상황을 시뮬레이션하여 제품의 반응 시간을 측정하고 메모리 누수 상황에 따른 제품의 내구성을 테스트하는 것입니다. Latency 테스트 핵심은 기대하지 않은 입력(delay) 발생시 hang이 발생하지 않는지를 측정합니다. 

Latency 수치 세팅 가이드








네트워크 테스팅

◻︎ Network 테스트 도구  

인터넷 속도 체크 : SPEEDTEST (SpeedTest.net APP)

    네트워크 성능 체크 (부하, 지연상황 세팅)
- Mac : Network Link Conditioner
- Window : NEWT(Network Emulator Toolkit (MSDN))


◻︎ Network Link Conditioner (for Mac)  

1) 설치 및 다운로드

   (1) https://developer.apple.com/download/more/?q=Network%20Link%20Conditioner 
         >  OS 버전따라 패키지 선택하여 다운로드 

   (2) 다운로드된 파일에서 dmg 파일을 열고 ‘Network Link Condition.prefPane’을 더블 클릭하여 설치

   (3) 설치가 완료되면 Mac 시스템 환경설정의 ‘Network Link Conditioner’ 로 네트워크 속도를 조절할 수 있다.








2) 네트워크 세팅

    (1) preset profiles에서 테스트할 네트워크를 선택하거나
   (2) Custom Profiles에서 각 속성값을 직접 입력하여 속도조절/부하/지연 상태를 세팅

          Custom Profiles에 [+] 클릭하여 프로파일 생성 후 각 속성 값 입력








   (3) Network Emulator가 적용된 PC 를 hotspot으로 사용 > mac 인터넷 공유
        (3-1) MAC에 연결된 wifi를 단말기에 연결하기 위해 mac의 인터넷 공유를 활성화

        (3-2) 단말기 > wifi > 사용가능한 네트워크에서 나의 macbook wifi를 선택합니다.
        (3-3) network latency 속성값이 적용된 네트워크로 접근

      # 참고 : 공유된 wifi에 최대 접속 가능 단말기 = 총 5대


3) 테스트 실행 

네트워크 상태별로 세팅 후 제품의 주요 기능이 큰 문제없이 이용 가능한지, 제품 이용에 불가능한 상황이 발생되지 않는지, 의도하지 않은 동작이나 이슈가 발생되지 않는지 확인합니다. 

   예) 결제 기능에 대한 테스트 수행 Checklist








◻︎ NEWT(Network Emulator Toolkit) (for Window)  

1) 설치 및 다운로드

    (1) https://network-emulator-for-windows-toolkit.software.informer.com/ 설치 & 실행      

    (2) Configuration 메뉴 선택 > New Filter 추가 

    (3) Filter List Property 창 














    (4) Local IP 세팅

    (5) Protocol - TCP 선택 / Adapters - 사용할 물리적 주소 선택(AP) or All

    (6) Add - click / Modify – click 

        해당 물리적 주소or세팅된 IP에 연결된 이미지가 노출된다









    (7) Configuration 메뉴 선택 > New Link 추가 

        생성된 Link 마우스 우클릭 > Set UpStream









    (8) 부하세팅

          (8-1) Random Loss > 패킷Packet N/100 입력 (ex. 30%의 Packet Loss 상황 부여 시 0.3을 입력)













            (8-2) Latency 탭 (업로드, 다운로드에 대한 패킷 Delay, Loss 등 값 세팅) > Latency 입력
















            (8-3) BW & Queue 탭 > Bandwidth : 대역폭 입력 후 [적용] 클릭
















            (8-4) 재생 버튼 (Start) 클릭 & 재생 중 발자국 버튼 (Toggle Tracing) 클릭









  

    (9) Window PC 를 hotspot으로 사용하여 제품 실행 & 테스트 실행




네트워크 테스트 Q&A


Q.  네트워크 테스트를 해야하는 이유

A.  회사에서 서비스하는 제품이 한국 뿐만 아니라 대만, 일본, 미국 등 글로벌 국가를 타겟으로 서비스할 예정이라면 한국의 좋은 네트워크 환경에서만 테스트가 진행된다면 글로벌 국가의 나쁜 네트워크 환경에서 제품이 어떻게 동작하는지, 어떤 오류를 발생시키는지 등 환경에따른 제한적 장애나 리스크를 모른채 서비스하게 될 것입니다. 이는 유지보수 비용을 증가시키는 원인이 될 수 있습니다. 

윌리엄 C. 헷젤Willian C. Hetzel은 “테스트는 프로그램이나 시스템이 예상대로 작동 할 것이라는 확신을 증진시키는 과정이다"라고 했습니다. 서비스할 제품을 서비스할 국가의 네트워크 상황에서 테스트 하지 않는다면 스스로 품질에 대한 확신을 얻을 수 있다고 자신할 수 없을 것입니다. 


Q. 출시를 앞둔 회사의 제품은 한국에서만 서비스할 예정인데 그럼에도 네트워크 테스트가 필요할까요?

A. 한국의 네트워크 환경은 세계 최고라고 말해도 과언이 아닐정도로 네트워크 상태가 우수합니다. 하지만 이것은 네트워크가 반드시 연결되어있는 환경에 국한됩니다. 아무리 좋은 환경의 네트워크라 할지라도 LTE ↔ WIFI 간 전환, 지하나 엘리베이터 등 닫힌 공간에서의 단절, 도시를 벗어나 산이나 바다 등 약한 네트워크 환경에서 발생될 수 있는 지연 등 상황을 벗어날 수는 없습니다. 이런 예외상황에서 발생될 수 있는 숨은 결함을 찾기위한 테스트 절차를 필요없다고 할 수 있을까요. 숨은 결함이 가진 이슈 영향범위를 예측할 수 없기때문에 개발단계의 제품 검증 절차에서는 ‘가급적' 테스트를 수행해보시길 권장합니다. 


Q. 네트워크로 인해 발생된 이슈 사례가 궁금합니다.

A. (1) 게임 내 콘텐츠 중 일부 레벨을 달성하면 게임에서 사용할 수 있는 재화와 같은 아이템을 보상으로 지급하는 경우가 있습니다. 아이템 보상을 지급하는 시점에 네트워크 단절 ↔ 연결을 여러번 시도할 경우 보상이 무한으로 지급되는 이슈

    (2) 굉장히 희귀하고 비싼값을 지불하고 산 아이템으로 보스몹을 잡는 중 네트워크 상태가 급격히 나빠져서 아이템만 사용하고 보스몹을 잡지 못하는 이슈


둘 다 테스트 과정에서 이슈를 발견하지 못했다면 유저가 나쁜의도를 갖고 어뷰징할 수 있거나 회사의 재산적 손해 / 이미지 실추가 발생될 수 있는 이슈입니다. 


작가의 이전글 개발초기 API 품질을 확보하는 방법
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari