본문 바로가기

QA 업무

[제로베이스에서 취업까지 QA편] 4.1 호환성 테스트

클라이언트 성능 테스트

FPS, CPU/GPU, 메모리 사용량 등을 측정하여 응답성, 안정성, 신뢰성, 병목성 구간을 확인하는 테스팅 활동

 

서버 부하 테스트

서버의 임곗값이 한계에 도달할 때까지 시스템 부하를 지속적으로 증가시켜 특정 부하 상황에서 서버의 동작을 확인하는 테스팅 활동

부하 발생 중 유저가 경험할 수 있는 상황을 확인하여 안정적으로 확인 및 개선 포인트 도출

 

4.1 호환성 테스트 

타깃 유저 : 사용 숙련도, 제품 이용 횟수, 서비스 비용 및 콘텐츠 민감도

 

디바이스 지원 사양

애플리케이션을 설치하기 위한 최소 시스템 요구사항

안드로이드 5.1 iOS 11 이상

 

왜 디바이스별 지원 사양이 존재하는지?

테스트할 디바이스 범위 선정 시 애플리케이션이 설치되지 않는 사양까지 테스트 범위에 포함할 필요가 없음

국가별로 사용하는 디바이스랭킹(statcounter.com) 확인 가능

 

운영체제 버전
윈도우 11 10 9 8 7
애플 맥 catalina high sierra mojave sierra 10.10
           
           
           
           
           

 

 

macOS 운영체제는 각각의 버전 이름이 지역명 또는 자연과 관련된 이름을 따온 것입니다.

Catalina (카탈리나)미국 캘리포니아의 카탈리나 섬에서 유래.

High Sierra (하이 시에라) 미국 시에라 네바다 산맥에서 유래.

Mojave (모하비)미국 캘리포니아의 모하비 사막에서 유래.

Sierra (시에라) 시에라 네바다 산맥에서 유래.

 

테스트 수행 주 확인 기능

애플리케이션 설치와 실행, 로그인 , 주요 기능 및 콘텐츠의 이용 원활도 확인

이후 UI 해상도별 이미지의 크기 조정과 국가별 언어 노출 및 줄 바꿈 처리 그리고 국가에 특화된 UI 제공 시 해상도에 따라 적절히 노출되는지 확인

 

Tip

HW 별 업,다운그레이드 테스트는 애플리케이션이 설치된 상태에서 서로 다른 디바이스 HW의 운영체제 버전과 기기 버전을 하위 호환과 순방향 호환으로 업/다운그레이드를 진행하여 환경에 따른 기능 작동 오류와 애플리케이션의 이식성을 확인

 

4.2 앱 공존성 테스트

공존성이란?

공통 자원을 공유하는 공동 환경에서 다른 독립적인 SW와 공존할 수 있는 SW의 능력(ISO/IEC 9126 품질특성)
다른 애플리케이션에 나쁜 영향을 미치지 않고, 공통된 자원(HW) 을 공유하면서 필요한 기능을 효율적으로 수행하는 능력을 보장해야 함

 

앱 공존성 테스트(Other Apps Co-existence Test)

다른 독립적인 애플리케이션과 서비스할 제품 간 상호 작용으로 인해 의도치 않은 동작이 발생할 수 있는 가능성이 높은 상황을 예측하여 의도한 환경으로 간섭을 도입함으로 애플리케이션의 반응을 확인

 

공존성 실패 시 나타나는 현상

서비스할 제품 내부 모듈에서 백신 애플리케이션이 바이러스로 인지하여 애플리케이션이 설치되지 않거나 설치는 되지만 실행/주요 기능이 작동되지 않는 이슈

제품에서 제공하는 사운드(알람, 음악)이 다른 애플레케이션 실행/전화 수신 발신시 또는 애플리케이션 백그라운드 처리 시에도 일시정지 되지 않고 계속 발생하여 사용에 불편함 발생

다른 애플리케이션 간 충돌로 서비스할 제품이 설치되지 않거나 작동되지 않는 이슈

공존의 영향으로 기능 손실, 데이터 손상, 신호 중단 발생

유저의 데이터 손상, 애플리케이션 기능 손실, 애플리케이션 설치 또는 동작하지 않음

여러 개의 애플리케이션을 화면 분할로 띄울 경우 애플리케이션이 *크래시/프리징이 되는 경우

 


"크래시(Crash)"와 "프리징(Freezing)"은 소프트웨어가 예상대로 동작하지 않을 때 발생하는 두 가지 주요 문제를 의미합니다. 

 

1. 크래시 (Crash)

의미: 애플리케이션이 실행 도중 오류가 발생하여 갑자기 종료되는 현상입니다. 프로그램이 더 이상 실행되지 않고 사용자가 제어할 수 없는 상태가 됩니다.

 

원인

메모리 부족 또는 잘못된 메모리 접근

치명적인 코드 오류 (예: Null Pointer Exception, Segmentation Fault)

디바이스 리소스 부족 (CPU, RAM 등)

외부 애플리케이션 충돌 (예: 화면 분할 시 리소스 경쟁)

 

증상

앱이 갑자기 닫힘.

"앱이 응답하지 않습니다." 메시지가 뜬 후 종료.

로그에서 에러 메시지 출력.

 

2. 프리징 (Freezing)

의미: 애플리케이션이 실행 중이지만 응답하지 않는 상태입니다. 화면이 멈추거나 버튼이나 입력이 전혀 반응하지 않습니다.

 

원인:

메인 스레드가 과도한 작업을 수행하여 UI 업데이트 불가

무한 루프 또는 데드락 발생

화면 분할 시 과도한 리소스 사용으로 애플리케이션 정지

네트워크 응답 대기 시간 초과

 

증상:

화면이 멈춤.

클릭, 입력 등 사용자 액션에 대한 응답 없음.

"앱이 응답하지 않습니다." 경고 후 앱이 종료되거나 멈춘 상태로 유지.

 

크래시와 프리징의 차이점


앱 공존성 테스트 유형

1. 애플리케이션 파일에 포함되지 않아야 할 맬웨어나 바이러스

2. 사용이 금지된 URL 도메인(피싱)이 포함되지 않았는지 확인하고 애플리케이션의 유해성 검증

3. 다른 애플리케이션과의 상호작용과 공존능력에 문제 없는지 확인

 

앱 공존성 테스트 방법

1. *안티 바이러스 검사

VirusTotal(아래 url) 과 같은 안티 바이러스 엔진을 활용하여 ipa와 apk 파일에 맬웨이 및 바이러스가 포함되어 있는 것은 아닌지 or 애플리케이션 내부 URL에 사용이 금지되거나 의심스러운 링크가 적용되지 않았는지 검사

 

새로운 서비스 출시를 앞두고 구글, 애플 마켓 심사 받기 전 제출하는 애플리케이션 파일의 유해성을 사전 검증하기 위해 테스트를 수행

 

안티바이러스 엔진(Anti-Virus Engine)이란?

컴퓨터 시스템, 네트워크, 또는 모바일 기기에서 악성 소프트웨어(맬웨어)를 탐지하고 제거하기 위해 설계된 소프트웨어의 핵심 구성 요소입니다. 이를 통해 사용자는 바이러스, 웜, 트로이 목마, 랜섬웨어, 스파이웨어와 같은 다양한 보안 위협으로부터 보호받을 수 있습니다.

 

* 관련 url : https://www.virustotal.com/gui/home/upload

 

VirusTotal

 

www.virustotal.com

=> VirusTotal는 파일이나 URL을 분석하여 악성 소프트웨어(맬웨어) 여부를 확인할 수 있는 무료 온라인 보안 서비스입니다.

 

 

안티바이러스 엔진의 주요 구성 요소

스캔 모듈(Scanner)

파일 및 시스템을 검사하여 맬웨어를 탐지.

바이러스 정의 데이터베이스(Virus Definition Database)

알려진 맬웨어의 시그니처 정보를 저장.

실시간 보호 모듈(Real-Time Protection)

파일 실행, 다운로드, 네트워크 트래픽 등을 실시간으로 모니터링.

업데이트 시스템(Update System)

새로운 위협에 대응하기 위한 데이터베이스 및 엔진 업데이트 제공.

제거 및 격리 모듈(Quarantine)

감염된 파일을 안전한 공간으로 옮기거나 삭제.

 

주요 안티바이러스 엔진

Kaspersky Engine

강력한 시그니처 기반 탐지 및 휴리스틱 분석.

Avast/AVG Engine

경량화된 엔진으로 휴리스틱 및 클라우드 기반 분석 제공.

Norton (Symantec) Engine

행동 기반 탐지와 함께 강력한 방화벽 통합.

McAfee Engine

클라우드 통합 및 기업용 보안 기능 강점.

Windows Defender Engine

Windows에 기본 내장된 엔진으로, 실시간 보호 제공.

 

안티바이러스 엔진 사용 시 주의 사항

정기적인 업데이트

새로운 위협을 탐지하려면 바이러스 정의 데이터베이스와 엔진 업데이트 필수.

복수 엔진 사용 금지

여러 안티바이러스 프로그램을 동시에 사용하면 충돌과 성능 저하를 유발.

오탐 관리

정상 파일이 맬웨어로 잘못 탐지되었을 경우 예외 처리 기능 활용.

백그라운드 실행 최소화

시스템 자원 사용을 최적화하기 위해 설정 조정 필요.

안티바이러스 엔진은 맬웨어로부터 시스템을 보호하는 데 중요한 도구이지만, 추가적으로 방화벽, 네트워크 보안 도구와 함께 사용하면 더욱 강력한 보안 환경을 구축할 수 있습니다. 😊

 

 

 

 

 


* 맬웨어(Malware)란?

Malicious Software의 약자로, 사용자의 컴퓨터나 디바이스에 악의적인 목적으로 만들어진 소프트웨어를 뜻합니다.

맬웨어는 시스템을 손상시키거나, 데이터 탈취, 불법적인 접근, 사용자 활동 감시 등의 부정적인 결과를 초래합니

 

맬웨어 예방 방법

1. 안티바이러스 소프트웨어 설치 및 업데이트 : 신뢰할 수 있는 보안 소프트웨어를 설치하고 정기적으로 스캔.

2. 출처가 불분명한 이메일이나 링크 클릭 금지 : 의심스러운 파일이나 웹사이트를 열지 않도록 주의.

3. 운영 체제 및 소프트웨어 최신 상태 유지 : 보안 패치를 적용하여 취약점을 제거.

4. 강력한 비밀번호 사용 및 이중 인증 설정 : 계정을 보호하고 무단 접근 방지.

5. 중요 데이터 백업 : 랜섬웨어 공격 등에 대비해 외부 저장소나 클라우드에 주기적으로 백업.

 

 


cf. ipa, apk 란?

- ipa : iOS App Store Package의 약자

 

읽는 방법

IPA 파일은 기본적으로 ZIP 형식으로 압축되어 있습니다.
이를 해제하면 앱의 구조를 확인할 수 있습니다.

 

압축 해제하기

IPA 파일의 확장자를 .zip으로 변경.

압축 해제 도구(예: WinRAR, 7-Zip)를 사용해 파일 내용 확인.

 

파일 구조

Payload/: 실제 애플리케이션 폴더.

앱 실행 파일 (.app).

리소스 파일 (이미지, 오디오, UI 설정 등).

 

내용 분석

iOS 바이너리 파일을 열려면 전문 디버깅 도구가 필요합니다:

Xcode

Hopper Disassembler (역공학 도구)

 

주의

IPA 파일은 iOS 디바이스에 직접 설치할 수 없으며, 애플의 TestFlight나 Xcode를 통해 설치 및 실행해야 합니다.

 

APK: Android Package의 약자

사용: Android 기기에서 실행되는 애플리케이션 패키지 파일.

 

읽는 방법

APK 파일도 ZIP 형식으로 되어 있어 쉽게 압축을 해제할 수 있습니다.

 

압축 해제하기

파일 확장자를 .zip으로 변경.

압축 해제 도구(예: WinRAR, 7-Zip) 사용.

 

파일 구조

META-INF/: 인증 정보.

res/: 애플리케이션 리소스 (이미지, 레이아웃 등).

classes.dex: Dalvik/ART 실행 파일 (Java 바이트코드).

AndroidManifest.xml: 애플리케이션 구성 정보.

 

내용 분석

Java 코드 디컴파일:

디컴파일러: JADX, Apktool 사용.

Smali 코드 분석 도구 사용.

 

테스트 및 실행

Android Emulator 또는 실제 Android 기기에 설치:

adb install yourfile.apk

ipa, apk 차이점


2. 백신 애플리케이션과 공존성 검증

백신 애플리케이션과의 공존성은 마켓 출시 이후 백신 애플리케이션을 통해 파일이 악성으로 탐지되지 않는지 확인하고 미처 검증되지 못한 최신 바이러스가 존재하는지 확인하기 위한 목적으로 진행

 

테스트 방법 : 백신 애플리케이션 설치 또는 디바이스 자체에 설치되어 있는 백신 프로그램의 스캔 기능을 사용하여 서비스할 제품에 이상이 있거나 바이러스 검사에 탐지되지 않는지 확인합니다.

정확한 백신 스캔을 위해 테스트 전 설정에서 악성 코드 검사와 파일 시스템 모니터링 설정이 활성화되어 있는지 확인합니다.

 

3. 다른 애플리케이션과 공존성 확인

sns 소셜, 메신저, 동영상 공유 플랫폼, 이커머스, 모바일 게임 등 다수의 유저가 사용하는 애플리케이션과 서비스할 제품 간 상호작용 능력을 확인

 

서비스할 제품이 디바이스와 다른 애플리케이션에 영향을 미치지 않는지, 반대로 외부 환경의 간섭이 우리 제품에 영향이 없는지 제품 공존성 능력 검증

 

모바일 백신 프로그램

 

Avast Mobile Security 운영 체제: Android, iOS 특징: 맬웨어 방지, 앱 잠금, Wi-Fi 보안 검사.

 

4.3 디바이스 기능 연동 테스트

디바이스 기능 연동 테스트 Device Function Interruption 

디바이스 자체 기능과 서비스할 제품 간 상호작용

 

모바일 게임을 하는 중 전화 오거나, 쇼핑 애플리케이션에서 결제하는 중 배터리 충전을 위해 케이블 연결하거나 음액 애플리케이션 이용 중 블루투스 이어폰 끼는 등 의도하거나 의도하지 않은 동작이 발생

=> 인터럽트 유형이라고 함

 

디바이스 운영체제 업데이트가 있을 경우 인터럽트 테스트 수행 권장

 

인터럽트로 발생하는 이슈의 유형

- 디바이스 소프트웨어 업데이트 후 튕김 현상 발생

- 전화 수신 후 애플리케이션 강제 종료 현상

- 기능 조작 후 오류 현상 : 진동/무음 상태로 전환 후에 애플리케이션의 사운드가 계속 노출되는 이슈와 디바이스의 화면을 세로/가로로 전환 시에 애플리케이션의 UI가 화면 전환되지 않고 깨지는 문제 발생

- 화면 분할 시 애플리케이션 오류 현상 : 멀티 윈도우 제공하는 디바이스에서 여러 개의 애플리케이션을 화면 분할로 띄울 경우 애플리케이션이 강제 종료되거나 작동하지 않는 현상이 발생

 

테스트 시나리오 작성 예시

사전 조건 + 정책X : 모바일 애플리케이션 사용 중 전화 수신

수행 절차 : 수신 종료 후 애플리케이션 복귀

기대 결과 : 이전 진행 중이던 화면으로 복귀되고 애플리케이션 사용에 문제가 없는지 확인한다.

 

cf. 배터리 잔량 1%일때 전원 꺼진 뒤 장바구니에 저장한 목록이 삭제되지 않고 유지되어 있는지 확인한다!

cf. 타사 애플리케이션에서 발송된 푸시가 수신되면 진행 중인 게임이 중단되지 않고 계속 이용 가능한지 확인한다!

cf. 다중 디스플레이(z 플립, 갤럭시 폴드) 에서 모바일 애플리케이션 사용 중 폴더를 접으면 이전에 이용 중이던 기능이 이어서 동작한다!