본문 바로가기
소프트웨어 공학

애플리케이션 테스트(Application Test)의 정의와 분류

by iwuooh 2021. 12. 3.

애플리케이션 테스트(Application Test)

애플리케이션 테스트란 애플리케이션에 잠재된 오류를 찾아내는 일련의 과정 또는 행위이다. 개발이 끝난 소프트웨어가 사용자의 요구사항을 만족시키는지 확인(Validation)하고 검증(Verification)한다. 확인은 개발된 소프트웨어가 사용자의 입장에서 요구사항에 맞게 구현되었는지 확인하고 검증은 개발된 소프트웨어를 개발자의 입장에서 명세서에 알맞게 만들어졌는지 검증하는 것을 의미한다. 애플리케이션 테스트에는 기본적인 원리가 적용되는데, 애플리케이션 테스트를 통해서 소프트웨어의 잠재된 오류를 줄일 수는 있지만 아무 결함이 없다고 증명할 수는 없다. 따라서 완벽한 소프트웨어 테스트는 불가능하다. 애플리케이션의 오류의 대부분은 특정한 모듈에 집중되어 있으며, 20%에 해당하는 코드에서 나머지 80%의 결함이 발견된다는 파레토 법칙이 적용된다. 또한 동일한 테스트 방식으로 계속하여 테스트를 진행하면 더 이상 오류가 생기지 않는 현상이 발생하기 때문에 테스트 케이스를 지속해서 보안하고 개선해야 한다. 이는 살충제를 지속해서 뿌리면 벌레가 그에 대한 면역이 생겨 죽지 않는 살충제 패러독스(Pesticide Paradoz)와 일맥상통한다. 또한 애플리케이션 테스트를 통해서 소프트웨어의 결함을 모두 제거했어도 사용자의 요구사항을 만족시키지 못하면 이 소프트웨어는 품질이 낮다고 판단된다. 이를 오류-부재의 궤변이라 한다. 애플리케이션 테스트와 위험은 서로 반비례하는 관계에 있다고 볼 수 있는데, 이는 테스트를 진행하면 할수록 위험은 감소한다는 뜻이다. 또한 애플리케이션 테스트는 작은 단위에서 시작하여 점차적으로 큰 부분으로 확대해야 하며, 개발팀과는 관계가 없는 별도의 팀을 구성하여 수행해야 한다는 특징이 있다.

애플리케이션 테스트(Application Test)의 분류

애플리케이션 테스트는 분류 기준에 다르게 정의할 수 있다. 우선 프로그램의 실행 여부에 따라서 분류하면 두가지로, 정적 테스트와 동적 테스트로 분류된다. 정적 테스트는 프로그램을 실행하지 않고 요구사항 명세서와 개발 소스코드만을 분석하는 테스트로, 개발 초기에 오류를 발견할 수 있기 때문에 비용이 절감된다는 장점이 있다. 동적 테스트는 프로그램을 직접 실행하면서 오류를 찾아내는 것으로 소프트웨어 개발의 모든 단계에서 수행이 가능하다. 테스트 기반에 따라서는 세 가지로 분류할 수 있다. 첫째로 명세 기반 테스트가 있다. 이는 명세서를 작성할 때 사용자의 요구사항 명세서에 있는 내용을 빠짐없이 반영하여 테스트 케이스를 만들어서 구현하고 있는지를 확인하는 방법이다. 두 번째는 구조기반 테스트로, 소프트웨어 내부에서 논리적인 흐름에 따라서 테스트 케이스를 작성하고 확인한다. 마지막으로 경험 기반 테스트는 이미 개발된 유사한 기술이나 소프트웨어에 대한 테스터의 경험을 기반으로 수행하는 테스트이다. 마지막 방법은 사용자의 요구사항에 대한 명세서의 내용이 부족하고 테스트할 시간에 제약이 있는 경우 사용하면 유리한 방법이라 할 수 있다. 목적에 따라서 분류하면 7가지로 분류할 수 있는데, 첫째로 시스템에 여러 결함을 주어 실패를 경험하도록 한 후 소프트웨어 스스로가 올바르게 이를 처리하여 정상 작동하도록 복구하는 확인 하는 회복(Recovery) 테스트가 있다. 둘째로 외부 공격이나 불법적인 침입으로부터 시스템을 보호할 수 있는지 확인하는 안전(Security) 테스트가 있다. 셋째로 시스템에 과도한 정보량이 전달되어 과부하가 발생했을 시에도 소프트웨어가 정상 작동되는지 수행하는 강도(Stress) 테스트가 있다. 넷째로 소프트웨어의 응답 시간이나 처리량 등 실시간 성능이나 전체적인 효율성을 검사하는 성능(Performance) 테스트가 있다. 다섯번째로 내부적으로 소스코드의 복잡도나 논리성을 평가하는 구조(Structure) 테스트가 있다. 여섯번째인 회귀(Regression) 테스트는 변경 또는 수정된 코드에 새로운 결함이 없는지 확인한다. 마지막으로는 기존의 소프트웨어와 변경된 소프트웨어에 똑같은 데이터를 입력하여 결과를 비교하는 병행(Parallel) 테스트가 있다.

 

댓글