뱅킹 애플리케이션 테스팅 by VIJAY SHINDE
출처: Software Testing Career Package by VIJAY SHINDE & CONTRIBUTING AUTHORS, 58~61페이지, 2015년
뱅킹 시스템의 테스팅 전략 및 계획 수립 시 참고할 수 있는 내용
뱅킹 애플리케이션 테스트
아래 나열된 10가지 사항은 뱅킹 애플리케이션의 가장 중요한 특성이다.
- 수천 개의 동시(concurrent) 사용자 세션을 지원하는 멀티 티어 기능성
- 대규모 통합(일반적으로 뱅킹 애플리케이션은 청구서 지불 유틸리티, 트레이딩 어카운트, 온라인 정기 예금 등과 같은 수많은 다른 애플리케이션과 통합된다).
- 복잡한 비즈니스 워크플로
- 실시간 프로세싱 및 배치 프로세싱
- 높은 초당 트랜잭션율(High rate of transactions per seconds)
- 안전한 트랜잭션(Secure transactions)
- 그날그날의 트랜잭션을 추적할 수 있는 강력한 보고(reporting) 섹션
- 고객 문제 해결을 위한 강력한 감사(auditing)
- 대용량 스토리지 시스템(Massive storage system)
- 재해 관리(Disaster management)
뱅킹 애플리케이션에는 오퍼레이션 수행과 관련된 여러 계층(tiers)이 있다. 예를 들어 일반적인 뱅킹 애플리케이션에 다음이 있을 수 있다.
- 웹 브라우저를 통해 최종 사용자와 인터액션하는 웹 서버
- 웹 서버의 입력 및 출력을 검증하는 미들 티어
- 데이터 및 프로시저를 저장하는 데이터베이스
- 초당 수조 건의 트랜잭션을 수행하는 트랜잭션 프로세서(대용량 메인프레임 또는 기타 레거시 시스템)
뱅킹 애플리케이션 테스트는 아래를 보장하기 위한 여러 소프트웨어 테스트 기법을 포함하는 엔드-투-엔드 테스트 방법론이 필요하다.
- 모든 뱅킹 워크플로 및 비즈니스 요구사항에 대한 커버리지
- 애플리케이션의 기능적 측면
- 애플리케이션의 보안 측면
- 데이터 무결성(Data integrity)
- 동시성(Concurrency)
- 사용자 경험(User experience)
뱅킹 애플리케이션 테스트와 관련된 일반적인 단계가 아래와 같다.
1) 요구사항 수집(Requirement Gathering)
요구사항 수집 단계에는 기능 사양서(functional specifications) 또는 유스케이스(use cases) 같은 요구사항 문서화가 포함된다. 요구사항은 고객 요구(customer needs)에 따라 수집되고, 뱅킹 전문가(Banking Experts) 또는 비즈니스 분석가(Business Analyst)가 문서화한다. 뱅킹 자체에 여러 하위 도메인이 있고 이들이 하나의 뱅킹 애플리케이션에 모두 통합되므로, 요구사항을 작성하려면 여러 도메인 전문가(subject experts)가 관여하게 된다. 예를 들어 하나의 뱅킹 애플리케이션이 송금(Money Transfers), 신용 카드(Credit Cards), 보고서(Reports), 대출 계정(Loan Accounts), 청구서 지불(Bill Payments), eTrading 등을 위한 별도의 모듈을 가질 수 있다.
2) 요구사항 검토(Requirement Review)
요구사항 수집 결과물을 QA 엔지니어, 개발 리드 및 동료 비즈니스 분석가 같은 모든 이해관계자가 검토한다. 기존 비즈니스 워크플로나 새로운 워크플로를 위반하지 않았는지 교차 확인한다.
3) 비즈니스 시나리오 준비(Business Scenario Preparations)
이 단계에서는 QA 엔지니어가 요구사항 문서(기능 사양서 또는 유스케이스)에서 비즈니스 시나리오를 도출한다. 비즈니스 시나리오는 모든 비즈니스 요구사항이 포함(커버)되도록 도출한다. 비즈니스 시나리오는 세부 단계가 없는 상위 수준의 시나리오이며, 비즈니스 분석가(Business Analyst)가 검토하여 모든 비즈니스 요구사항이 충족되는지 확인한다.
4) 기능 테스트(Functional Testing)
이 단계에서는 기능 테스트를 위해 다음과 같은 일반적인 소프트웨어 테스트 활동이 수행된다.
- 테스트케이스 준비(Test case preparation): 비즈니스 시나리오로부터 테스트케이스를 도출한다. 하나의 비즈니스 시나리오에서 다수의 긍정적 및 부정적 테스트케이스가 나올 수 있다. 일반적으로 이 단계에서 사용되는 도구는 Microsoft Excel, Test Director 또는 Quality Center이다.
- 테스트케이스 검토(Test case review): 동료 QA 엔지니어에 의한 검토가 이루어진다.
- 테스트케이스 실행(Test case execution): 테스트케이스 실행은 수동 또는 자동(QC, QTP, Selenium 또는 기타 도구 사용)일 수 있다.
5) 데이터베이스 테스트(Database Testing)
뱅킹 애플리케이션은 UI 수준과 데이터베이스 수준에서 모두 수행되는 복잡한 트랜잭션을 포함하므로 데이터베이스 테스트가 기능 테스트만큼 중요하다. 데이터베이스 자체는 완전히 별개의 계층이므로 대개 데이터베이스 전문가에 의해 수행되며, 아래와 같은 기술이 사용된다.
- 데이터 로딩(Data Loading)
- 데이터베이스 마이그레이션
- DB 스키마 및 데이터 타입 테스트
- 규칙 테스트(Rules Testing)
- 저장 프로시저(Stored Procedures) 및 함수(Functions) 테스트
- 트리거 테스트
- 데이터 무결성
6) 보안 테스트(Security Testing)
기능 및 비기능 테스트를 완료하는 것이 보안 테스트를 시작하기 위한 진입 기준(entry criteria)이므로 보안 테스트는 일반적으로 테스팅 사이클의 마지막 단계이다. 보안 테스트는 애플리케이션이 연방 및 산업 표준(Federal and Industry standards)을 준수하는지 확인하는 단계이므로 전체 애플리케이션 테스팅 사이클의 주요 단계 중 하나이다. 보안 테스팅 사이클은 애플리케이션 프로그램에 침입자나 공격자에게 민감한 데이터를 노출할 수 있는 웹 취약성(web vulnerability)이 없고 OWASP와 같은 표준을 준수하는지 확인한다. 이 단계의 주요 작업으로 IBM Appscan 또는 HP Weblnspect와 같은 도구를 사용하여 수행되는 전체 애플리케이션 스캔이 있다. 스캔이 완료되면 스캔 보고서(Scan Report)가 게시되고 가양성(false positives)이 필터링된다. 나머지 취약점은 그 심각도에 따라 수정을 위해 개발팀에 보고된다. 보안 테스트를 위해 사용되는 다른 도구는 Paros Proxy, Http Watch, Burp Suite, Fortify 등이다.
위의 단계들 외에도 통합 테스트 및 성능 테스트와 같은 다른 단계가 포함될 수도 있다.