인터럽트에 따른 어플리케이션의 동작 관찰하기
단말기 기능 연동 테스트 (Device Function Interruption Test) 인터럽트 테스트는 모바일 어플리케이션 사용 중 단말기의 자체 기능을 고의적으로 조작하여 어플리케이션이 인터럽트에 어떻게 반응하는지 응답을 관찰하고 어플리케이션의 기능/성능상 변화를 확인하는 비기능 테스트입니다. ----- ✣ ---- 앱 공존성 테스트가 다른 어플리케이션과의 상호작용과 관련된 테스트라면 단말기 기능 연동 테스트는 스마트폰 자체 기능과 서비스할 제품 간 상호작용에 의해 의도치 않은 동작이 발생되거나 단말기의 기능과 성능에 나쁜 영향을 미치지 않는지 확인하고 단말기 기능을 고의적으로 조작했을때 모바일 어플리케이션이 요구된 기능을 효율적으로 수행하는지 확인하는 테스트입니다. 일상생활에서 모바일 어플리케이션 사용 중 여러가지 상황이 인터럽트 될 수 있습니다. 예를들면 모바일 게임 도중 전화가 오거나, 쇼핑앱에서 결제를 시도하는 중 단말기 배터리가 없어서 폰이 꺼져버리거나, 음악앱 이용 중 이어폰을 부착 또는 해제하거나, 동영상 공유 플랫폼 이용 중 단말기 화면을 세로/가로로 회전하는 등과 같은 예시를 들 수 있습니다. 의도된 상황이든 또는 예기치 않은 상황이 발생되든 상관없이 고객은 내가 이용중인 앱의 기능상 오류는 없을 것과 유저 데이터 손실 또는 재산상 피해나 불편이 발생되지 않을 것이라고 믿고 제품을 사용할 것입니다. 제품에 대한 고객의 신뢰를 만족시켜주기 위해 새로운 서비스를 오픈하거나 단말기 기능 연동상 영향을 끼칠수 있는 변경사항이 있을 경우 인터럽트 테스트를 수행해보시길 권장해드립니다. ✻ 모바일 애플리케이션 이용 중 발생될 수 있는 인터럽트 유형 * 전화/SMS 수신 * 단말기 알림(push, 경보, airdrop 등) 발생 * 배터리 충전을 위한 케이블 연결/해제 * 단말기 화면 회전, 다크/라이트 모드 전환, 화면 확대/축소 * 단말기 볼륨 up/down * 진동/무음 전환 * 이어폰 또는 블루투스 연결/해제 etc. ✻ 인터럽트 테스트 시나리오 예시 인터럽트 테스트 시나리오 예시는 실제 현장에서 발생되었던 라이브 이슈를 참고하여 테스트 케이스화 해보았습니다. 인터럽트로 인해 발생될 수 있는 이슈의 종류를 확인하고 테스트 수행 절차를 참고해보시기 바랍니다. 케이스 1) [사전조건] 모바일 어플리케이션의 사운드 ON 상태+음악 재생 중 [수행절차] 어플리케이션 사용 중 전화 수신 [기대결과] 전화 수신 중 사용 중이던 앱의 사운드는 자동으로 pause되고 사운드가 발생되지 않아야 한다. 케이스 2) [사전조건] 모바일 어플리케이션 사용 중 다른 앱의 push 알림 수신 [수행절차] push 알림 발생시 모바일 어플리케이션의 기능 확인 및 알림 확인 후 어플리케이션으로 복귀 [기대결과] (1) push 알림으로 인해 이용 중이던 어플리케이션의 기능상 문제(앱 멈춤, 기능 작동 불가 등)가 발생되지 않아야 한다. (2) 알림 확인 후 이용 중이던 어플리케이션으로 복귀 시 이전 진행 중이던 화면으로 복귀되고 앱 사용 및 기능에 문제가 없어야 한다. 케이스 3) [사전조건] 모바일 어플리케이션에서 동영상(사운드ON) Play 중 [수행절차] 블루투스 이어폰 연결 [기대결과] 이어폰 연결 후 이전 진행중이던 동영상 이어서 Play되고, 사운드가 이어폰으로 출력된다. 케이스 4) [수행절차] 모바일 어플리케이션 사용 중 단말기 Home Key 선택 후 앱 복귀 [기대결과] 단말기 홈 키 선택하여 어플리케이션을 백그라운드로 이동 후 다시 복귀시 이용중이던 어플리케이션이 중단되기 전 화면으로 복귀되고 기능 문제없이 재개되는지 확인한다. 인터럽트 테스트 시나리오가 다른 검증 유형과 차이가 있다면 기대결과에 해당되는 인터럽트에 따른 어플리케이션의 동작이 사내 정책이나 기능적 요구사항으로 정해져있지 않은 경우들이 많고 모든 어플리케이션의 동작이 동일할 필요도 없어서 내부에서 자체적으로 결정된 방침에 따라 기대결과가 달라질 수 있습니다. 따라서 테스트 시나리오 작성 시 정의된 인터럽트에 따른 기대 동작이 있을 경우 어플리케이션이 이를 만족하는지 조건별로 확인하도록 설계하는 것이 중요합니다. 내부 정책이나 요구사항이 별도로 존재하지 않는다면, 어플리케이션 기능 동작에 집중하여 테스트를 수행하거나(예: 인터럽트 조작이 없을 때와 동일하게 기능이 작동되어야 함) 테스트 담당자의 경험상 별도 정책이 필요하다 판단될 때 유사 타 서비스 애플리케이션의 사례를 조사 및 참고하여 정책을 마련할 수 있도록 관련자에 의견을 공유하도록 합니다. 예시로 작성해드린 케이스를 참고하여서 테스트할 제품의 상황과 내부 정책에 맞추어 실무에 활용해보기 바랍니다.