TIL(Today I Learned)
1️⃣ISTQB 1강
1.1 테스트가 왜 필요한가
- 소프트웨어에는 *결함(버그)*이 존재할 수밖에 없음
- 결함 → 실행 시 오류 → 실패로 이어질 수 있음
- 테스트의 목적:
- 결함을 발견
- 품질 향상
- 리스크 감소
1.2 테스트란 무엇인가
테스트 = 단순히 실행이 아니라 다음을 포함함
- 요구사항 검증 (이게 맞게 만들어졌나?)
- 결함 탐지
- 품질 평가
핵심 개념
- 검증(Verification): “제대로 만들었나?”
- 확인(Validation): “올바른 걸 만들었나?”
1.3 7가지 테스트 원칙
- 테스트는 결함이 있음을 보여줄 수 있다 (없음을 증명 못함)
- 완전 테스트는 불가능하다
- 조기 테스트가 중요하다
- 결함은 특정 부분에 집중된다 (결함 집중)
- 살충제 패러독스 (같은 테스트 반복하면 효과 down)
- 테스트는 상황에 따라 다르다
- 오류 부재의 궤변 (버그 없어도 쓸모없으면 의미 없음)
1.4 테스트 활동 / 프로세스
테스트 진행 단계
- 테스트 계획
- 테스트 설계
- 테스트 구현
- 테스트 실행
- 평가 및 보고
- 종료 활동
1.5 테스트의 심리학
- 개발자는 자신의 코드 결함을 찾기 어렵다.
- 테스트는 “깨보려는” 관점 필요
- 협업 중요 (갈등 X, 품질 향상 목적 O)
핵심: 테스트는 결함을 찾고, 품질을 높이며, 리스크를 줄이기 위한 활동이다
2️⃣데이터 분석 팀 과제
데이터 전처리 및 목적별 데이터 생성
1.컬럼 순서 재배치 및 컬럼명 변경
df = df[
[ 'ra_report', 'start_date','age','gender','products_role',
'products_name','products_types','Outcomes','symptoms','Age_Year']]
2.단위가 다른 나이 통일
# 나이 단위 통일 컬럼 생성
def convert_age(x):
age = x['age']
unit = x['age_unit']
if unit == 'Day(s)':
result = 0
elif unit == 'Week(s)':
result = int(age / 52)
elif unit == 'Month(s)':
result = int(age / 12)
elif unit == 'Year(s)':
result = age
elif unit == 'Decade(s)':
result = age * 10
else:
return None # Not Available 등 결측치 처리
# 이상치 처리(120세 초과)
if result > 120:
return None
return result
df['Age_Year'] = df.apply(convert_age, axis=1)
3.문자열로 구성 된 날짜 DateTime 형식으로 변경
# 부작용 발생 시작 날짜(03/23/17) datetime 형식으로 변환
df['start_date'] = pd.to_datetime(df['start_date'], format='%m/%d/%Y')
4.단위 통일 된 나이 구간별 분류
# 나이를 구간 별로 나누기
bins=[0,2,12,18,65,120]
labels=['영유아(0-2)','소아(3-12)', '청소년(13-18)', '성인(19-65)', '노인(66+)']
df_Symtoms_by_age['Age_Group'] =pd.cut(df['Age_Year'],bins=bins,labels=labels)
진행 목표
2026/04/06: 분류된 데이터를 목적에 따라 시각화하고 인사이트 도출 후 가설과 비교
3️⃣Python 알고리즘 주요 문제
문제1
- 문제 설명: 코딩테스트 연습 - 기사단원의 무기 | 프로그래머스 스쿨
- 제한 사항:
- 1 ≤ number ≤ 100,000
- 2 ≤ limit ≤ 100
- 1 ≤ power ≤ limit
- 입출력 예

- 문제 접근: numbers 배열의 요소를 순회하고 내부의 반복문을 통해 1부터 n의 제곱근까지의 범위에서 약수를 구한 뒤 제한 범위 조건에 따라 값을 구하면 될 것이다.
- 코드
def solution(number, limit, power):
answer = 0
for n in range(1, number + 1):
count = 0
for i in range(1, int(n**0.5)+1):
if n % i == 0:
if i*i == n:
count += 1
else:
count += 2
if count > limit:
answer += power
else:
answer += count
return answer
💡 느낀점
자격증 공부를 시작하게 되면서 이론적으로 테스팅에 대해 학습할 수 있었다. 데이터 단위의 팀 프로젝트를 진행하며 데이터를 분석할 때 가설과 목표를 세우는 것이 많은 비중을 차지하고, 실제로 데이터를 들여다 보았을 때 다양한 형식의 결측치를 발견할 수 있었고 결측 데이터의 의미 유무를 판단하는 것 또한 중요할 것이라는 생각이 들었습니다.
'데이터 분석 프로젝트' 카테고리의 다른 글
| Chapter.3 데이터 분석 팀 과제 (6) (0) | 2026.04.09 |
|---|---|
| Chapter.3 데이터 분석 팀 과제 (5) (0) | 2026.04.08 |
| Chapter.3 데이터 분석 팀 과제 (4) (0) | 2026.04.07 |
| Chapter.3 데이터 분석 팀 과제 (3) (1) | 2026.04.06 |
| Chapter.3 데이터 분석 팀 과제(1) (1) | 2026.04.02 |