소프트웨어 테스트 종류와 신뢰성·이식성 테스트
1. 개요
가. 정의
소프트웨어 테스트는 결함을 발견하고 요구된 품질을 충족하는지 확인하기 위해 개발·운영 전 단계에서 수행하는 검증·확인 활동이다. 그중 ISO/IEC 25010 품질 특성 관점의 신뢰성·이식성 테스트는 각각 운영 중 안정성과 다양한 환경에 대한 적응성을 보증한다.
나. 등장 배경 및 필요성
기능이 명세대로 동작하는지만 보는 테스트로는 실제 운영에서 발생하는 장애를 막지 못한다. 시스템이 며칠간 무정지로 돌아가는지, 일부 노드가 죽어도 서비스가 유지되는지, 새 OS나 브라우저로 옮겨도 정상 동작하는지는 기능 명세에 드러나지 않는 비기능(품질) 요구이기 때문이다. 클라우드·멀티플랫폼·24/365 서비스가 보편화되면서 이러한 신뢰성·이식성은 서비스 지속가능성의 핵심 조건이 되었고, 이를 정량 목표(SLA·MTBF·RTO)로 정의하고 검증하는 테스트가 필수가 되었다.
2. 소프트웨어 테스트의 종류
flowchart LR
U[단위] --> I[통합] --> S[시스템] --> A[인수]
테스트는 여러 기준으로 분류되며, 이들은 배타적이 아니라 서로 다른 축이다. 테스트 수준은 검증 범위를 작은 것에서 큰 것으로 넓혀 가며(단위→통합→시스템→인수), 각 단계에서 앞 단계가 놓친 결함을 다른 관점으로 잡는다. 테스트 기법은 내부 구조를 보지 않고 입출력만 검증하는 블랙박스와 코드 경로를 따지는 화이트박스로 나뉜다. 비기능 테스트는 기능이 아니라 성능·신뢰성·이식성 같은 품질 특성을 대상으로 하며, 변경 대응 테스트는 수정이 기존 기능을 망가뜨리지 않았는지(회귀) 확인한다.
| 분류 기준 | 종류 | 초점 |
|---|---|---|
| 테스트 수준 | 단위·통합·시스템·인수 | 검증 범위의 확대 |
| 테스트 기법 | 블랙박스(명세)·화이트박스(구조)·경험기반 | 내부 구조 관찰 여부 |
| 비기능(품질 특성) | 성능·부하·보안·신뢰성·이식성·사용성·호환성 | 동작의 질 |
| 변경 대응 | 회귀·스모크·확인(Confirmation) | 변경 후 안정성 |
3. 신뢰성 테스트(Reliability Test)
신뢰성이란 명시된 조건에서 정해진 기간 동안 오류 없이 기능을 지속 수행하는 능력이다. 신뢰성 테스트는 이 능력을 부특성별로 검증한다.
신뢰성은 "얼마나 자주 고장 나지 않는가"와 "고장 나도 얼마나 잘 버티고 회복하는가"의 두 축으로 나뉜다. 전자를 성숙성, 후자를 결함 허용성·복구성이 담당한다. 각 부특성은 정성적 확인이 아니라 정량 지표로 판정된다는 점이 중요하다.
| 부특성 | 내용 | 검증 방법·지표 |
|---|---|---|
| 성숙성(Maturity) | 결함으로 인한 고장의 드묾 정도 | 결함 발생률·MTBF(평균고장간격), 신뢰성 성장 모델 |
| 결함 허용성(Fault Tolerance) | 장애·오입력에도 지정 성능 유지 | 이중화·페일오버 시험, 장애 주입 |
| 복구성(Recoverability) | 장애 후 데이터·상태 복구 | RTO/RPO 검증, 백업·복구 시험 |
| 가용성(Availability) | 장시간 지속 운영 능력 | Soak(내구성)·장시간 부하 시험 |
예를 들어 결함 허용성 검증은 운영과 유사한 환경에서 특정 서버를 강제로 내려(장애 주입) 페일오버가 몇 초 안에 이뤄지는지, 그동안 요청 실패가 목표치 이하인지를 측정한다. 복구성은 RTO(목표 복구 시간)·RPO(허용 데이터 손실)를 기준으로, 재해 상황을 가정해 백업에서 얼마나 빠르고 손실 없이 복원되는지를 검증한다. 이처럼 신뢰성 테스트는 "안정적으로 보인다"가 아니라 "MTBF 10,000시간, RTO 30분"처럼 수치로 합격 여부를 가른다.
4. 이식성 테스트(Portability Test)
이식성이란 소프트웨어를 다른 환경(HW·OS·브라우저·플랫폼)으로 이전·적응시키는 능력이다. 이식성 테스트는 환경 변화에 대한 적응·설치·대체·공존 능력을 검증한다.
이식성이 중요해진 이유는 오늘날 소프트웨어가 하나의 고정 환경에서만 돌지 않기 때문이다. 온프레미스에서 클라우드로, 특정 OS에서 컨테이너로, 여러 브라우저·기기로 옮겨 다니는 환경에서 이전 비용과 위험을 낮추려면 이식성이 뒷받침되어야 한다.
| 부특성 | 내용 | 검증 방법 |
|---|---|---|
| 적응성(Adaptability) | 다양한 환경에 큰 수정 없이 적응 | 서로 다른 OS·HW에서 동작 시험 |
| 설치성(Installability) | 설치·업그레이드·제거의 정상 동작 | 설치 스크립트·롤백 검증 |
| 대체성(Replaceability) | 동일 목적 기존 SW를 대체·호환 | 데이터·인터페이스 호환 시험 |
| 공존성(Co-existence) | 다른 SW·다중 환경과 충돌 없이 공존 | 크로스브라우징·다중 OS 교차 검증 |
구체적으로 웹 서비스의 공존성(호환성) 검증은 Chrome·Edge·Safari 등 여러 브라우저와 Windows·macOS·Android 기기에서 동일한 화면·기능이 나오는지 크로스브라우징으로 교차 확인한다. 설치성은 새 서버에 배포 패키지를 설치·업그레이드·제거하는 전 과정이 오류 없이 되돌릴 수 있는지를 본다. 적응성은 예컨대 x86에서 검증된 애플리케이션이 ARM 기반 클라우드 인스턴스로 옮겼을 때에도 코드 변경 없이 동작하는지를 시험한다.
5. 고려사항 및 시사점
- 정량 목표 기준 판정: 비기능 테스트는 주관이 아니라 SLA·MTBF·RTO/RPO 같은 계약·목표 수치를 합격 기준으로 삼아야 결과가 다툼 없이 수용된다.
- 환경 다양화로 이식성 중요성 증대: 클라우드·멀티플랫폼·컨테이너 확산으로 이식성·호환성 검증 범위가 넓어져, 자동화된 크로스 환경 테스트 파이프라인이 요구된다.
- 운영 연계와 카오스 엔지니어링: 신뢰성은 배포 전 테스트로 끝나지 않고 운영 중 APM 모니터링과 연계되어야 하며, 실제 운영계에 의도적으로 장애를 주입하는 카오스 엔지니어링으로 결함 허용성을 지속 검증하는 방향으로 진화하고 있다.
한 줄 요약: 테스트는 수준·기법·비기능·변경대응으로 분류되며, 신뢰성 테스트는 성숙성·결함허용성·복구성·가용성을, 이식성 테스트는 적응성·설치성·대체성·공존성을 MTBF·RTO 같은 정량 목표 기준으로 검증하고, 운영 모니터링·카오스 엔지니어링으로 확장된다.