소프트웨어공학

테스트(Part1)

chlqhrud0208 2024. 12. 16. 20:58
  • 테스팅이 왜 중요한가?
    1) 결함 예방
    2) 품질과 안정성 보장
    3) 소프트웨어의 신뢰성 향상

 

  • 검증과 확인
    - 검증
       -> 각 단계의 일들을 잘하고 있는가? (요구분석, 설계 등)
    - 확인
       -> 결과가 요구사항에 맞게 잘 만들어졌는가? (요구와 최종 릴리스 사용)

 

  • 테스트의 원리 (5가지)
    - 테스트는 오류를 찾기 위해서 하는 것
       -> 잘 작동한다는 것을 보여주는 것이 아님
    - 완벽한 테스트는 있을 수 없음
       -> 테스트를 통과한다고 해서 완벽한 프로그램이 아님
       -> 효율적인 부분집합을 테스트해야함
    - 테스트는 창조적이며 어려운 일임
    - 테스트는 오류의 유입을 방지할 수 있음
       -> 오류를 빠르게 알 수록 수정 비용이 적어짐
    - 테스트는 독립적인 팀에 의해서 이루어져야함
       -> 객관적인 시선에서 보는 것이 필요

 

  • 테스트의 작업 과정
    1) 목표 설정
       -> 테스트로 무엇을 점검할 것인지
    2) 방법 결정
       -> 블랙 박스 / 화이트 박스
    3) 테스트 케이스 선택
       -> 테스트 케이스 : 잘 안될 것 같은 입력
    4) 테스트 케이스 작성
        -> 예상되는 테스트 케이스의 결과를 작성
    5) 테스트 구현
       -> 예상 결과와 실제 결과를 비교

 

  • 테스트의 단계
    - 단위테스트
    - 통합테스트
    - 시스템테스트
    - 유닛테스트
    - 리그레션 테스트
       -> 유지보수 단계에서 이루어지는 테스트 (수정 부분에 집중)

 

  • 블랙박스 테스트 장점
    - 테스트 하기 위한 기술적인 배경이 필요하지 않음 (사용자 입장)
    - 코딩이 다 끝난뒤에 테스트를 진행할 수 있음 (개발팀과 테스트팀의 독립적인 작업 가능)
    - 크고 복잡한 응용 프로그램에 더욱 효과적
    - 테스트 초기에 결함이나 불일치를 식별할 수 있음

 

  • 블랙박스 테스트 단점
    - 사전 지식이 없어 테스트할 시나리오의 가능한 조건을 무시할 수 있음
    - 가능한 모든 입력과 출력을 테스트해볼 수 없음
    - 완전한 테스트 범위설정 불가능

 

  • 블랙박스 테스트의 종류
    - 동등 분류 기법
    - 경계값 분석
    - 원인과 결과 그래프
       -> 노드 : 원인, 결과
       -> 기호 : ^ (and), v (or), ~(not)
       -> 장점 : 좋은 테스트케이스를 만들어줌
                      시스템의 기능을 이해하는데 도움이 됨
    - 결정 테이블
       -> 참 : 1, 거짓 : 0, 상관없음 : X
    - 오류 예