1. 버그
: 소프트웨어가 의도와 다르게 동작하거나 오류를 일으키는 현상
2. 오류(Error)
: 코드 실행 중 발생하는 문제
3. 결함(Defect)
: 코드의 설계나 논리적 문제
4. 버그 발생의 주요 원인
- 코딩 실수: 사람이 작성한 코드는 종종 작은 실수로 인해 큰 문제를 발생시킴
- 요구사항 미스매치 : 요구사항이 정확히 전달되지 않으면 버그가 발생
- 복잡한 시스템 : 하나의 테이블 변경이 여러 다른 테이블에 영향을 미쳐 오류 발생

5. 버그가 만드는 사용자 불만
- 사용자는 시스템이 안정적이고 기대에 부합하길 원함
- 사용자 기대를 충족하지 못하게 만들어 불만을 유발함
6. 버그로 인한 매출 손실
- 결제 오류, 상품 정보 오류 등은 직접적으로 매출 손실로 이어집니다
7. 브랜드 신뢰의 하락
8. 버그는 연쇄적으로 문제를 일으킨다
- 하나의 버그가 다른 문제를 유발하며, 시스템 전반에 영향을 미침
- 해결을 위한 비용과 시간이 필요함
9. 사용자의 만족도를 보장하는 QA
- QA는 사용자가 제품을 문제 없이 사용할 수 있도록 하는 것
10. QA는 제품 개발의 방향을 제시한다
- QA는 테스트 결과를 통해 프로세스를 개선
- 반복적인 실수를 줄이고 개발 효율성을 높힘
11. QA는 조직의 연결고리
- QA는 개발팀과 운영팀 간의 가교 역할을 합니다
- 문제를 분석하고 해결책을 제안하며 모든 팀이 같은 목표를 향해 협력하도록 조력자의 역할을 한다
12. QA의 주요 역할
- 품질 보증 : QA는 제품이 안정적으로 작동하도록 품질을 보증합니다
- 문제 탐지 : QA는 다양한 테스트를 통해 SW의 문제를 탐지합니다
- 테스트 설계 : 효율적인 테스트 설계는 QA의 중요한 업무중 하나입니다
- 요구 사항 전달 : QA는 명확한 요구사항을 개발팀에게 전달합니다
- 테스트 결과 문서화 : QA는 테스트 결과를 문서화하여 개발팀과 공유합니다
- 개발프로세스 개선 : QA는 반복적으로 발생하는 문제를 분석하여, 개발 프로세스를 개선합니다
- 사용자 관점 대변 : QA는 사용자 관점에서 문제를 발견하고 해결합니다
- 버그 예방 : QA는 사전에 문제를 발견하여, 출시 후 발생할 문제를 예방합니다
13. 버그 리포팅
: 문제를 개발팀에게 전달하는 핵심 과정

14. 잘못된 리포팅으로 인한 문제
- 문제 해결 지연
- 개발팀의 불필요한 시간 낭비
- 추가 비용 발생
15. 나쁜 리포트, 문제를 더 복잡하게 만들 수 있음
- 불명확한 제목 : 문제를 제대로 요약하지 못함
- 재현 단계 누락 : 개발자가 문제를 재현할 수 없음
- 기대 결과와 실제 결과 구분이 없음
- 스크린샨 등 추가 자료 누락
16. 기능 버그의 유형
- 입력 오류
- 사용자 입력이 올바르게 처리되지 않음
- 프로세스 오류
- 여러 단계로 이루어진 기능이 중간에서 끊김
- 계산 오류
- SW가 수치를 잘못 계산하여 잘못된 결과를 반환하는 문제
- 주로 금융, 통계, 이자 계산, 할인 적용 등에서 치명적
- UI/UX 버그
- SW의 화면 구성(UI)과 사용자 경험 (UX)에 영향을 주는 문제
- 기능에는 문제가 없지만, 사용자가 불편함을 느낌
4-1. UI/UX 버그는 왜 생길까?
1. 반응형 디자인 오류 : 모바일/태블릿/PC 화면 크기에 따라 달라짐
2. 사용자 테스트 부족 : 실제 사용자가 불편한지 확인하지 않음
3. 디자인 가이드 미준수 : 버튼 크기, 글자 크기 등의 표준을 따르지않음
17. 성능 버그의 유형
- 속도 지연
- 사용자가 버튼을 클릭했을 떄 응답이 느리거나 멈추는현상
- 주로 서버, DB, 코드 최적화 부족 등이 원인
- 서버 과부하
- 사용자가 많아질수록 응답 속도가 느려지거나 서버가 다운되는 현상
- 트래픽 증가 시 서버가 처리할 수 있는 한계를 초과할 때 발생
18. 성능 테스트
- SW가 다양한 환경에서 얼마나 안정적으로 실행되는지 평가하는 과정
- 응답 속도, 처리 속도, 메모리 사용량 등을 테스트하여 성능 버그를 찾아냄
19. 대표적인 성능 테스트 유형
- 부하 테스트 : 동시 접속 시 속도가 어떻게 변하는지 확인
- 스트레스 테스트 : 극한의 조건에서도 시스템이 견딜 수 있는지 확인
- 반응 속도 테스트 : 사용자의 요청에 대한 응답 시간을 측정
20. 코드 최적화를 통한 성능 개선 방법
- 불필요한 연산 줄이기 -> 코드에서 반복되는 계산 최소화
- DB 쿼리 최적화 -> 불필요한 호출 제거
- 이미지 및 리소스 최적화 -> 웹 페이지 로딩 속도를 빠르게 하기 위해 압축된 이미지 사용
21. 성능 버그 예방
- 정기적인 성능 모니터링 -> 서버 부하, 응답 속도 체크
- 트래픽 증가 대비 서버 확장 준비 -> 클라우드 환경에서 자동 확장 적용
- 배포 전 성능 테스트 필수 진행 -> 실사용 환경과 유사한 조건에서 성능 검증
22. 보안 버그
- 시스템이 사용자의 정보나 데이터 보호에 실패하는 문제
- 권한 없는 접근, 데이터 유출, 악성 코드 실행 등이 포함됨
23. 데이터 암호화 오류
- 중요한 정보가 암호화되지 않고 저장되는 문제
24. XSS(크로스 사이트 스크립팅)
- 공격자가 악성 스크립트를 웹 사이트에 삽입하여 사용자 정보 탈취
- 로그인 정보 유출, 피싱 공격이 가능
25. CSRF(사이트 간 요청 위조)
- 사용자가 모르는 사이 공격자가 특정 요청을 실행하도록 유도
- 비밀번호 변경, 계좌 이체 등 무단 요청 실행
26. SQL Injection(인젝션)공격
- 공격자가 입력창을 이용해 DB에 직접 명령어를 입력하는 방식
- 데이터 유출, 관리자 계정 탈취가 가능
27. 패킷 스니핑(Packet Sniffing)
- 해커가 네트워크에서 주고받는 데이터를 몰래 훔쳐보는 공격
- 로그인 정보, 신용카드 번호가 탈취될 수 있음
28. 보안 사고 발생 시 대응
- 사고 감지 및 초기 대응 -> 이상 징후 감지 후 즉시 차단
- 원인 분석 및 복구 -> 해킹 경로 및 피해 분석 후 패치 적용
- 보안 강화 및 재발 방지 대책 마련 -> 추가 보안 정책 적용
- 표준 기술 사용 -> HTML, CSS, JavaScript 최신 표준을 준수
- 반응형 디자인 적용 -> 다양한 해상도에서 UI가 정상적으로 보이도록 개발
- OS/브라우저별 예외 처리 -> 환경에 따라 다르게 동작해야 하는 부분을 고려
29. 완벽한 테스트가 불가능 한 이유
- 테스트 환경과 실제 환경의 차이
- 사용자 데이터 및 트래픽 증가
- 예기지 못한 사용자의 행동