Beizer의 소프트웨어 테스트 진화 과정.
레벨1 (Debugging oriented)
- 테스트와 디버깅의 차이가 없다.
- 즉, 우연히 발견된 오류를 수정하는 디버깅에 중점을 두며, 프로그램의 오류를 찾기위한 별도의 노력을 기울이지 않는다.
- 테스트를 안하는 조직.
레벨2 (Demonstration oriented)
- 프로그램이 올바르게 동작한다는 사실을 입증하기 위해 테스트를 수행한다.
- 단순히 동작기능만 테스트하는 조직
레벨3 (Destruction oriented)
- 프로그램에 결함이 존재함을 보여주기 위해 테스트를 수행한다.
- 결함을 발견하기 위한 의지를 가지고 테스트
레벨4 (Evaluation oriented)
- 소프트웨어 개발 후에 결함을 찾는 것이 아닌, 개발 전 단계에 발생하는 결함을 발견하는 개념으로 확장.
- 초기 단계 부터 테스트를 수행
레벨5 (Prevertion oriented)
- 프로그램의 오류를 사후에 발견하는 것이 아닌, 아예 결함이 발생하지 않도록 사전에 방지하자는 개념.
- 프로그램을 개발할때 처음부터 테스트가 용이하게 시스템을 설계.
- 테스트 용이성을 고려하여 프로그램을 설계.
- 이상적인 조직.
SW 테스트 한계
테스트는 결함이 존재함을 보일 수 있지만, 결함이 없다는 것을 보일 수는 없다.
현실적으로 모든 것을 테스트할 수는 없다.
SW 테스트 고려사항.
- 테스트는 반드시 프로그램을 개발한 프로그래머나 팀과는 무관한 그룹에 의해서 수행되어야 한다.
- 테스트 작업을 가장 능력이 뛰어난 사람에게 할당해야 한다.
- 오류가 발견되지 않을 것이란 가정하에서 테스트 계획을 수립해서는 안된다.
- 타당한 경우 뿐만 아니라 타당하지 않고 예상하지 못한 경우들에 대해서도 테스트를 수행해야 한다.
- 프로그램의 어떤 부분에 오류가 남아있을 확률은 이미 발견된 오류의 수에 직접적으로 비례한다.
- 테스트 케이스를 체계적으로 관리해야 한다.
- 각각의 테스트 결과를 철저하게 점검해야 한다.
테스트 용이성 (test ability) 7가지
: 프로그램이 테스트가능한지를 나타내는 특성 도는 요구사항이 테스트로 증명 가능한지를 나타내는 특성.
- 제어용이성 (controllability)
: 프로그램의 실행을 제어하기 용이한가? 용이하면 테스트 자동화가능성이 높아짐
- 관찰가능성 (observability)
: 프로그램 내부 상태 (중간결과, 최종결과) 를 쉽게 파악할 수 있는가
- 단순성 (simplicty)
: 시스템 구조 등을 가능한 한 단순하게 설계되어 있는가
- 분할 용이성 (decomposablilty)
: 테스트 대상 모듈을 분리하여 독립적으로 테스트하기 용이한가
- 운영 용이성 (operability)
: 프로그램이 오적동하여도 테스트 작업을 계속할 수 있는가
- 안정성 (stability)
: 테스트 동안에 소프트웨어 변경이 자주 발생되지 않도록 설계했는가
- 이해 용이성 (understandability)
: 소프트웨어 설계 정보가 잘 조직화 되어 쉽게 이해할 수 있는가.
품질특성예
- 기능적합성
: 시험 대상 제품의 기능 정상작동 여부.
ex) 화면에서 웹 접속현화에 대한 통계 데이터가 0으로 표시됨.
- 성능효율성
: CPU, Memory 사용량의 목표 성능정의
ex) 웹페이지 링크 클릭시 1분 후에 화면 표시가 시작됨.
- 호환성
: 다른제품과 충돌없이 동작 가능한가 확인
ex) 결재모듈의 보고서 표시를 위한 한글 2015와 연동되지 않음.
- 이식성
: 버전업 제품의 경우 이전버전과 데이터 호환여부 확인
ex) Window10 OS에서 제공된 설치파일로 프로그램이 설치안됨.
- 신뢰성
: 비정상종료 발생을 확인, 이중화 및 데이터 복구기능도 확인
ex) 관리맵에서 단말노드 변경시, 자산 관리 맵이 비정상적으로 삭제됨.
- 유지보수성
: 프로그램 운영 중 발생할 수 있는 문제에 대한 해결 정보 여부 확인
ex) 사용자 메뉴얼에 SW사용 중 발생할 수 있는 오류의 증상과 원인에 대한 정보가 제공되지 않음.
- 일반적요구사항
: 제품 운영을 위한 정보 제공 여부 확인 (제품설명서 정보제공, 공급자/고객지원 정보제공 여부 등)
ex) 고객지원센터 연락처 정보가 제공되지 않음.
- 사용성
: 용어 일관성, 화면 깨짐 등 확인
ex) 화면에 표시되는 환자 첫진료와 환자 초진이라는 용어가 일관되지 않음
- 보안성
*기밀성: 접근통제, 입력값 검사, 데이터 암호화, 내부노출방지, 권고 암호 알고리즘 사용
ex) 관리자가 미사용인데 관리자계정으로 로그인됨
*무결성: 파일 무결성 검사, 데이터 파손 방지
*부인방지성: 전자서명 사용
*책임성: 감사 로그 기록, 감사 로그 보유
*인증성: 인증 방법, 인증규칙
'개발 > QA' 카테고리의 다른 글
5. 소프트웨어 프로세스 (0) | 2020.07.07 |
---|---|
4. 개발 단계별 테스트 (단위, 시스템, 통합, 인수 테스트) (0) | 2020.07.03 |
2. 결함(defect), Error, Fault, Failure 이란? (0) | 2020.07.03 |
1. SW품질이란? (0) | 2020.07.03 |
소프트웨어 테스팅과 AI (0) | 2019.12.24 |