1. balance 잔액 / account 계좌
2. 화이트박스 / 블랙박스
1) 블랙박스 : 안이보이지 않는 박스
- 내부 로직, 처리과정이 불투명하게 외부개발자에게 숨겨져 있어 해당 시스템이나 모듈의 내부 작동방식을 이해하기 어렵다. (입력과 출력 결과만 볼수 있다)
- 단순한 인터페이스를 통해 서비스를 이요하며 내부 로직이 비공개 되어있어 보안이 강화되어 악의적 해킹이나 경쟁사로 부터 보호가 가능하다.
- 인터페이스의 복잡성과 반대 되어 사용법이 간단하고 직관적, 지적 재산 보호기능
- 오류 발생시 원인을 찾고 해결하기 어려운 편. 사용자와 제휴사는 내부 작동원리를 알수 없어 신뢰구축이 힘들수 있ㅇㅁ
2) 화이트박스 : 투명박스
- 내부 작동원리가 명확하게 공개되어 동작, 데이터 처리 등을 이해할수 있다.
- 투명성, 신뢰성, 규제 준수, 개발효율성, 사용자 경험의 개선
3. API와 화이트 박스의 차이점
1) 화이트박스 : 시스템, 모델의 내부 구조, 로직, 코드가 투명하고 이해할수 있도록 공개된 상태. 다 OPEN!!!
2) 공개 API : 외부개발자가 특정 서비스, 플랫폼의 기능을 사용할수 있도록 공개된 인터페이스를 뜻하며 API로 공개된 기능은 사용가능하나 그 기능을 내부적으로 구현하는 방식은 알수 없는 경우가 많다. 내부 비공개, 정해진 인터페이스로 공개한 기능 OPEN!!
4. 화이트박스 테스팅 / 블랙박스 테스팅
1) 화이트 박스 테스트는 소프트웨어의 내부 구조와 로직을 이해하고 조건에 따른 동작 등을 검사하여 해당 코드가 원하는대로 동작하는지, 적절하게 테스트 되었는지 확인한다. (시스템의 작동원리, 각 코드가 정상 작동하는가?)
단위테스트에 자주 사용되나, 내부로직을 철저히 테스트 하기위해서 통합 및 시스템 테스트에 적용 가능
2) 블랙박스 테스트 : 내부 구조나 동작 방식을 모르는 상태에서 테스트. 요구사항, SW사양에 기반한 입력값에 따른 출력을 확인하고 기대하는대로 동작여부를 평가함. 내부 구현 지식 없이 이 SW가 요구사항대로 기능이 동작하는데 검증
(사용자의 관점에서 예상대로 잘 작동하는가?)
단위, 통합, 시스템 테스트 모두 적용. 입력/출력만 포커스.
5. 통합테스트 / 단위테스트 / 시스템 테스트
1) 단위테스트 : 개별 구성요소, 코드 조각을 테스트. 소프트웨어를 기준으로 각각의 부부이 독립적으로 설계된대로 잘 돌아가는지 확인한다. 일반적으로 개발자가 코드 짜면서 작성 실행, 화이트박스의 한 형태가 될 수 있다.
2) 통합테스트 : 구성요소나 시스템간의 인터페이스, 상호작용을 테스트. 소프트웨어 여러부분이 예상대로 함께 잘 작동하는지 검증. 테스터의 시스템 내부의 이해도에 따라 화이트박스 및 블랙박스 테스트 모두가 포함될수 있음.
3) 시스템테스트 : 통합 소프트웨어 테스트의 단계. 위 단위 및 통합테스트와 다르게 시스템 테스트는 전체 시스템의 기능과 성능을 평가한다. 최종 사용자 관점에서 수행되는 높은 수준의 단계.
system test 특징>>
- End-to-End Testing
애플리케이션 전체를 테스트 (실제 시나리오, 환경 기반 예상대로 잘 동작하는가?)
- Requirement Verification
요구사항을 준수하였는가?
- Black Box Approach
블랙박스 테스트의 한 형태로 수행된다. 입력/출력만 초점에 맞춰져있고 테스터는 소프트웨어의 내부작동을 알 필요 없다.
- Performed in an Enviroment that Mimics Production
유형>>
- 기능 테스트
- 성능 테스트 (부하테스트, 스트레스테스트, 확장성 테스트) : 다양한 조건에서 성능 평가
- 보안 테스트 : SW의 취약점, 위협, 위험을 검사
- 사용성 테스트 : 사용하기 쉬운지
- 호환성 테스트 : 브라우저, OS, 다양한 디바이스, 환경에서 잘 돌아가는가?
- 회귀 테스트 : 새 코드 변경이 기존 기능에 오류 및 부정적 영향이 갔는가? (일부러 코드 수정)
효과>>
초반 테스트에서 발견되지 않을수 있는 결함, 문제를 검출할수 있다. 실제 사용자에게 릴리즈 되기 전에 모두 잘 동작하는지 사용자가 이용하는데 문제가 없는지 기대한 만큼 충족이 되는지 확인이 가능핟,
SW품질을 높이고 릴리즈한 뒤 수정을 줄이고(수정비용), 이후 발생할수 있는 여러가지 위험을 줄인다.