[QA] Positive / Negative / Edge Case 개념 정리
·
Minding's Programming/Knowledge
QA 엔지니어 면접을 진행하는 도중 Positive Case, Negative Case, Edge Case에 대한 질문을 받았는데, 개념이 명확히 잡혀있지 않아 답변을 제대로 하지 못했다. TC를 작성하는 등 전체적인 테스트 설계에 핵심이 되는 개념인 만큼, 제대로 정리할 필요가 있다고 느꼈다. Positive Case정상적인 입력/상황에서 기능이 기대한 대로 동작하는 지에 대해 검증하는 테스트 케이스목적: 시스템이 정상적인 사용 흐름에서 정확히 동작하는지 확인입력값: 유효하며 일반적인 값 사용ex) 로그인 화면에서 올바른 ID, PW 입력 후 로그인 성공Positive Case는 쉽게 말해서 "정상적으로 잘 사용했을 때, 잘 동작하는가?"를 보는 테스트 케이스다. 대부분의 기능 요구사항에 대한 케이스가..
SQLAlchemy QueuePool 에러 해결하기 (sqlalchemy.exc.TimeoutError: QueuePool limit of size 5 overflow 10 reached, connection timed out, timeout 30.00)
·
Minding's Programming/에러 코드
외주 프로젝트 중 백엔드 서버로부터 SQLAlchemy TimeoutError가 지속적으로 발견되는 것을 확인했다. 에러 코드를 읽어보면, QueuePool의 limit이 5(overflow 허용치는 10)인데, 한계값에 도달했으며, timeout 30초에 도달하여 연결이 끊겼다는 설명이다. 이 경우 원인은 크게 2가지일 수 있다.1. 비동기 처리 코드 처리 중 DB 트랜잭션이 열린 채로 방지되어 커넥션이 해제되지 않는 경우2. SQLAlchemy의 커넥션 풀 크기가 너무 작게 설정되어 있는 경우 위 2가지 원인에 대한 해결 방법을 찾아보니, 아래와 같은 결과가 나왔다. 1. 비동기 처리 코드 처리 중 DB 트랜잭션이 열린 채로 방지되어 커넥션이 해제되지 않는 경우# 이전 코드async def get_d..
[Testing] SW 테스트 기본 개념들 정리
·
Minding's Programming/Knowledge
이 글은 STEN에서 공유한 '소프트웨어 테스트 실무 가이드 Part 1' 도서를 읽고 SW 테스트의 개념들을 정리한 글로, 책에서 나온 내용과 개인적으로 웹 검색 등을 통해 학습한 내용을 함께 작성했다. 1. 테스트 설계 기법명세 기반 테스트 설계 (Specification-based Testing)기능/요구사항 명세서 또는 기획서 등을 기준으로 테스트 케이스를 설계하는 방법. 시스템의 기능과 동작을 테스트하는데 중점을 두며, 블랙박스 테스트 기법이 주로 사용된다. 이 설계 기법의 테스트 케이스는 외부 동작과 기대 결과에 기반해 작성된다. 명세 기반 테스트 예시아래와 같은 요구사항 명세서(기획서)가 존재할 때, 명세 기반 테스트 기법으로 여러가지 방법을 사용할 수 있다.# 요구사항 예시 (ex. 대학교..
[OmniParserV2] LLM과 함께 사용할 수 있는 화면 인식 GUI 자동화 도구 (설치 및 실행 방법)
·
Minding's Programming/Knowledge
OmniParserV2OmniParserV2는 Microsoft에서 개발한 컴퓨터 비전(모델은 YOLO) 기반 GUI 자동화 도구로, 사용자의 UI 스크린샷을 구조화된 데이터로 변환해 LLM이 구조를 이해하고 상호작용할 수 있도록 돕는다. 이 도구를 통해 LLM과의 상호작용을 통해 GUI 테스트 등을 자동화할 수 있다. 아직은 실제 클릭과 같은 경우는 사용자의 판단이 필요하거나, 유해 콘텐츠 필터링 기능이 제공되지 않는 한계점이 존재하지만, OmniParserV2와 같은 도구를 통해 SW의 UI 테스트를 자동화하거나, 반복되는 업무를 자동화할 수 있을 것으로 기대된다. OmniParserV2의 특징상호작용 요소 탐지 및 분석: UI 스크린샷에서 클릭 가능한 버튼, 아이콘 등을 감지할 수 있고, 해당 요소..
[Python 3.13] Python에서 GIL을 비활성화 할 수 있다?
·
Minding's Programming/Knowledge
Python 3.13과 GILMedium을 구독하면서 읽게된 글을 통해 Python 3.13 버전이 출시되었다는 것을 알게 되었는데, 그 중에서도 놀라운 글을 보게되었다. 바로 Python 3.13에서는 GIL(Global Interpreter Lock)을 비활성화할 수 있다는 것이다. GIL은 Python의 큰 특징 중 하나이기도 했고, 대표적인 한계점이기도 했기 때문에 이 소식은 꽤나 놀라웠다. GIL은 프로세스 별로 여러 스레드가 동시에 코드를 실행하지 못하도록 하여 스레드 실행을 동기화하는 매커니즘이다. GIL을 사용하는 인터프리터인 Python은 멀티코어 프로세서가 실행되어도 항상 하나의 스레드가 실행된다. 그래서 Python에서는 멀티 프로세싱 대신 멀티 스레딩 방식을 주로 사용한다. 위 글에..
[QA/Testing] 모바일 앱 테스트 자동화 오픈소스 Appium 사용해보기
·
Minding's Programming/Knowledge
Appium?Appium은 다양한 플랫폼에서 모바일 app의 UI를 자동화할 수 있는 테스트 프레임워크다. Windows, Mac, Linux에서 모두 실행 가능하며, 하나의 테스트 스크립트로 Android와 iOS 앱을 모두 테스트할 수 있다. 테스트 스크립트 또한 Java, Python, Ruby, JS 등 자신이 익숙한 언어를 선택할 수 있다는 것도 큰 장점이다. 네이티브와 하이브리드 앱을 모두 테스트할 수 있고, 무엇보다도 오픈소스이기 때문에 무료로 사용할 수 있다. 따라서 현업에서도 앱 테스트시 CI/CD 파이프라인에 통합하여 가장 많이 사용하는 도구 중 하나다. Appium의 아키텍처 Appium의 아키텍처는 위 그림과 같이 구성되어 있다. 각 구성요소를 살펴보자면,Appium Client: ..
[프로젝트] Catch Me My Capital - 합리적인 투자 의사결정을 위한 금융 데이터 파이프라인 및 백테스팅 도구 (테스트 도입 편)
·
Minding's Programming/Knowledge
지난 프로젝트 소개 글에서 NEXT STEP 중 하나였던 테스트 도구 추가를 진행 중이다. 테스트 도입 계획부터 어떤 문제를 겪었고 어떻게 해결했는지를 이 글에서 다뤄보려고 한다. 테스트 도입 계획테스트를 도입하기에 앞서, 다음과 같은 항목들을 우선해서 선정했다.어떤 것을 테스트할 것인지?어떤 도구(라이브러리)를 사용할 것인지?테스트 코드는 어디에, 어떤 방식으로 구성할 것인지?테스트는 어떻게 실행할 것인지?1. 어떤 것을 테스트해야 할까?Catch Me My Capital(이하 CMMC) 프로젝트는 기본적으로 금융 데이터를 수집한 뒤 적절히 변환해 데이터를 저장하고, 이를 대시보드로 시각화하는 "데이터 파이프라인"이 중심이다. 따라서, 데이터 파이프라인이 정상적으로 잘 작동하는지 판단할 수 있는 요소들..
[QA/Testing] Charles를 이용해 테스트해보기 (Throttle test, Breakpoint test)
·
Minding's Programming/Knowledge
Charles SettingCharles Proxy tool을 이용하기 위해서는 설치 및 일부 세팅이 필요하다. 세팅 과정은 여기어때 기술블로그를 참고했다. 1. Charles Proxy Tool 다운로드 및 설치공식 설치 문서에서 Charles를 다운로드 받을 수 있다. 자신의 OS에 맞는 프로그램을 선택해 다운로드 및 설치하면 된다.라이선스를 구매하지 않을 경우 30일 동안 무료로 사용 가능하다. (+ 1세션 당 30분까지 사용 가능) 2. Chales PC 세팅설치가 완료되었다면, PC 프로그램 상 몇 가지 설정이 필요하다. 먼저 CA 인증서를 설치해주어야 한다. 내가 사용하는 OS인 Windows 환경을 예시로 소개하겠다. 인증서 설치Charles의 Help 메뉴에서 SSL Proxying > I..