<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>smilefe-_-.log</title>
        <link>https://velog.io/</link>
        <description>열심히하는QA가되고싶어요</description>
        <lastBuildDate>Fri, 27 Jun 2025 10:50:25 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>smilefe-_-.log</title>
            <url>https://velog.velcdn.com/images/smilefe-_-/profile/22b1dfbd-2ce4-4ccc-82d4-e86a742b4a25/image.gif</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. smilefe-_-.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/smilefe-_-" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[버그]]></title>
            <link>https://velog.io/@smilefe-_-/%EB%B2%84%EA%B7%B8</link>
            <guid>https://velog.io/@smilefe-_-/%EB%B2%84%EA%B7%B8</guid>
            <pubDate>Fri, 27 Jun 2025 10:50:25 GMT</pubDate>
            <description><![CDATA[<h2 id="1-버그">1. 버그</h2>
<ul>
<li>의도와 다르게 소프트웨어가 동작하는것</li>
</ul>
<p><img src="https://velog.velcdn.com/images/smilefe-_-/post/16d32836-1af6-43c0-894b-5c71efc8dbdd/image.png" alt=""></p>
<h2 id="2-버그vs오류vs결함">2. 버그vs오류vs결함</h2>
<blockquote>
<ol>
<li>버그 : 사용자 관점에서 소프트웨어의 문제</li>
<li>오류 : 코드 실행 중 발생하는 문제</li>
<li>결함 : 코드의 설계나 논리적 문제 </li>
</ol>
</blockquote>
<h2 id="3-버그가-생기는-이유">3. 버그가 생기는 이유</h2>
<ul>
<li>코딩 실수 : 사람이 작성한 코드에 의해 발생</li>
</ul>
<h2 id="4-결함">4. 결함</h2>
<ul>
<li>설계나 구현 단계에서 발생한 문제</li>
<li>오류 또는 버그의 근본 원인이 되는 경우가 많음</li>
</ul>
<h2 id="5-차이점">5. 차이점</h2>
<p><img src="https://velog.velcdn.com/images/smilefe-_-/post/a24db9ee-327d-41a6-92c3-a01edb0fa695/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[HTML 기초 정리]]></title>
            <link>https://velog.io/@smilefe-_-/HTML-%EA%B8%B0%EC%B4%88-%EC%A0%95%EB%A6%AC</link>
            <guid>https://velog.io/@smilefe-_-/HTML-%EA%B8%B0%EC%B4%88-%EC%A0%95%EB%A6%AC</guid>
            <pubDate>Thu, 26 Jun 2025 10:46:56 GMT</pubDate>
            <description><![CDATA[<h2 id="1-플랫폼이란">1. 플랫폼이란?</h2>
<p>특정 기술들의 모음집 또는 환경</p>
<h2 id="2-web-world-wide-web">2. WEB (World Wide Web)</h2>
<p>거미줄처럼 연결된 세계</p>
<h2 id="3-프론트엔드란">3. 프론트엔드란?</h2>
<p>정보를 어떻게 화면에 보여줄 것인가에 대한 기술</p>
<h2 id="4-웹-페이지의-3대-구성-언어">4. 웹 페이지의 3대 구성 언어</h2>
<ul>
<li><p>HTML (Hyper Text Markup Language): 구조</p>
</li>
<li><p>CSS (Cascading Style Sheet): 디자인</p>
</li>
<li><p>JavaScript: 동작/기능</p>
</li>
</ul>
<h2 id="5-html의-정의">5. HTML의 정의</h2>
<ul>
<li><p>웹 페이지와 그 내용을 구조화하기 위한 마크업 언어</p>
</li>
<li><p>웹 문서를 구성하는데 사용됨</p>
</li>
</ul>
<h2 id="6-html의-기본-문법--태그">6. HTML의 기본 문법 : 태그</h2>
<p><strong>html
복사
편집
&lt;태그이름 속성=&quot;속성값&quot;&gt; 콘텐츠 &lt;/태그이름&gt;
태그는 요소의 시작과 끝을 나타냄</strong></p>
<p><strong>여는 태그와 닫는 태그는 이름이 같고 /로 닫는 태그를 구분</strong></p>
<h2 id="710-태그의-구성-요소">7~10. 태그의 구성 요소</h2>
<blockquote>
<ol>
<li>태그 이름: 어떤 콘텐츠인지 의미</li>
<li>콘텐츠: 실제로 표시할 내용</li>
<li>속성: 부가 기능 추가</li>
<li>속성값: 기능이나 설정 구체화</li>
</ol>
</blockquote>
<h2 id="11-html-문서의-기본-구조-예시">11. HTML 문서의 기본 구조 예시</h2>
<p>html
복사
편집</p>
<pre><code>&lt;!DOCTYPE html&gt;
&lt;html&gt;
  &lt;head&gt;
    &lt;title&gt;문서 제목&lt;/title&gt;
  &lt;/head&gt;
  &lt;body&gt;
    &lt;h1&gt;웹 페이지 제목&lt;/h1&gt;
    &lt;p&gt;본문 내용&lt;/p&gt;
  &lt;/body&gt;
&lt;/html&gt;</code></pre><h2 id="12-html-요소의-개념과-역할">12. HTML 요소의 개념과 역할</h2>
<p><strong>웹 페이지를 구성하는 개별 단위</strong></p>
<p><strong>태그를 이용해 표현하며 브라우저가 내용을 해석하는 기준이 됨**</strong></p>
<h2 id="12-1-제목-태그-h1h6">12-1. 제목 태그 (h1~h6)</h2>
<h1>가장 큰 제목</h1> / H1
<h6>가장 작은 제목</h6> / H6


<h2 id="12-2-문단-태그-p">12-2. 문단 태그 (p)</h2>
<p>문단 내용을 여기에 작성</p> /P

<h2 id="12-3-목록-태그-ul-li">12-3. 목록 태그 (ul, li)</h2>
<p><img src="https://velog.velcdn.com/images/smilefe-_-/post/080ea1eb-242b-4e26-b04c-78612c0ae91f/image.png" alt=""></p>
<h2 id="12-4-순서-있는-목록-태그-ol-li">12-4. 순서 있는 목록 태그 (ol, li)</h2>
<p><img src="https://velog.velcdn.com/images/smilefe-_-/post/14156f03-b59a-4931-937f-537f7129a786/image.png" alt=""></p>
<h2 id="13-컨테이너-요소">13. 컨테이너 요소</h2>
<p>요소들을 묶고 구조화하거나 스타일 적용</p>
<p>요소    특징</p>
<div>    블록 수준, 줄 바꿈 발생
<span>    인라인 수준, 줄 바꿈 없음

<h2 id="14-전역-속성-모든-요소에-공통-사용-가능">14. 전역 속성 (모든 요소에 공통 사용 가능)</h2>
<p>class: 여러 요소에 동일 스타일 적용</p>
<p><strong>id: 고유 식별자 (1개 요소에만 사용)</strong></p>
<h2 id="15-bootstrap">15. Bootstrap</h2>
<ul>
<li><p>프론트엔드 개발을 도와주는 CSS 프레임워크</p>
</li>
<li><p>미리 정의된 스타일과 컴포넌트를 제공</p>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[HTTP 배우기3]]></title>
            <link>https://velog.io/@smilefe-_-/HTTP-%EB%B0%B0%EC%9A%B0%EA%B8%B03</link>
            <guid>https://velog.io/@smilefe-_-/HTTP-%EB%B0%B0%EC%9A%B0%EA%B8%B03</guid>
            <pubDate>Fri, 20 Jun 2025 08:14:43 GMT</pubDate>
            <description><![CDATA[<h2 id="1-http와-https">1. HTTP와 HTTPS</h2>
<p><img src="https://velog.velcdn.com/images/smilefe-_-/post/7c07e22b-d2cc-4337-9bae-b071d6d9e8ed/image.png" alt=""></p>
<h2 id="2-캐시cache">2. 캐시(Cache)</h2>
<p><strong>정의</strong></p>
<ul>
<li><p>자주 사용하는 데이터를 저장해두고 빠르게 불러오기 위한 기술</p>
</li>
<li><p>장점: 성능 향상, 서버 부하 감소</p>
</li>
<li><p>단점: 콘텐츠가 변경돼도 갱신 안 될 수 있음</p>
</li>
</ul>
<h2 id="2-1캐시-제어를-위한-헤더들">2-1.<strong>캐시 제어를 위한 헤더들</strong></h2>
<ul>
<li>[Cache-Control / Pragma]</li>
</ul>
<h2 id="3-쿠키cookie">3. 쿠키(Cookie)</h2>
<p><strong>정의</strong></p>
<ul>
<li>사용자 상태(로그인, 장바구니 등)를 유지하기 위한 데이터</li>
</ul>
<p><strong>작동 방식</strong></p>
<ul>
<li>서버가 Set-Cookie 헤더로 브라우저에 저장</li>
<li>브라우저는 이후 요청마다 쿠키를 함께 전송</li>
</ul>
<h2 id="4-프록시-서버proxy">4. 프록시 서버(Proxy)</h2>
<p><strong>정의</strong></p>
<ul>
<li>클라이언트와 서버 사이에 위치한 중계 서버</li>
</ul>
<p><strong>역할</strong></p>
<ul>
<li><p>캐시 서버 역할</p>
</li>
<li><p>보안 필터링</p>
</li>
<li><p>로드 밸런싱 (부하 분산)</p>
</li>
<li><p>사용자 익명성 보장</p>
</li>
</ul>
<h2 id="5-네트워크-모니터링-도구🔍">5. 네트워크 모니터링 도구🔍</h2>
<p><strong>1. 브라우저 개발자 도구 (DevTools)</strong></p>
<ul>
<li><p>F12 또는 Ctrl + Shift + I → Network 탭</p>
</li>
<li><p>HTTP 요청/응답, 헤더, 상태 코드 확인 가능</p>
</li>
</ul>
<p><strong>2. 와이어샤크 (Wireshark)</strong></p>
<ul>
<li><p>강력한 네트워크 트래픽 분석 도구</p>
</li>
<li><p>HTTP뿐만 아니라 모든 패킷 감시 가능</p>
</li>
<li><p>입문 난이도는 높지만, 능숙해지면 막강한 분석력 제공</p>
</li>
</ul>
<p><img src="https://velog.velcdn.com/images/smilefe-_-/post/85fc9a07-366e-44d5-851b-b1a7abf42728/image.png" alt=""></p>
<p><strong>1. Browser → 프록시: 사용자가 웹사이트 접속 시 요청을 보냄.</strong></p>
<p><strong>2. 프록시 → 캐시: 프록시는 해당 요청에 대해 캐시에 있는지 먼저 확인.</strong></p>
<p><strong>3. 캐시에 있으면 그대로 브라우저에 응답.</strong></p>
<p><strong>4. 없으면 → 웹 서버로 요청 전달.</strong></p>
<p><strong>5. 프록시 → 웹 서버: 캐시에 없으면 실제 서버로 요청 전달.</strong></p>
<p><strong>6. 웹 서버 ↔ HTTPS: 서버와 브라우저 간 통신은 HTTPS로 암호화.</strong></p>
<p><strong>7. network monitoring: 이 모든 과정은 네트워크 모니터링 도구로 관찰될 수 있음.</strong></p>
<p><strong>8. 쿠키 저장/읽기: 서버가 응답할 때 쿠키를 포함하면, 브라우저는 이를 저장합니다. 다음 요청 시 자동으로 포함해서 보냄.</strong></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[HTTP 배우기2]]></title>
            <link>https://velog.io/@smilefe-_-/HTTP-%EB%B0%B0%EC%9A%B0%EA%B8%B02</link>
            <guid>https://velog.io/@smilefe-_-/HTTP-%EB%B0%B0%EC%9A%B0%EA%B8%B02</guid>
            <pubDate>Thu, 19 Jun 2025 07:56:19 GMT</pubDate>
            <description><![CDATA[<h2 id="1-응답response의-구조">1. 응답(Response)의 구조</h2>
<h4 id="응답--헤더header--본문body-으로-구성됨">응답 = 헤더(header) + 본문(body) 으로 구성됨.</h4>
<h2 id="상태-코드status-code-응답-결과를-숫자로-알려줌">상태 코드(Status Code): 응답 결과를 숫자로 알려줌</h2>
<p><strong>1xx: 정보 (거의 안 씀)</strong></p>
<p><strong>2xx: 성공 → 200 OK 가장 흔함</strong></p>
<p><strong>3xx: 리다이렉션 → 다른 주소로 이동하라는 의미 (301, 302)</strong></p>
<p><strong>4xx: 클라이언트 오류 → 404 Not Found, 403 Forbidden</strong></p>
<p><strong>5xx: 서버 오류 → 500 Internal Server Error</strong></p>
<h2 id="2응답-헤더response-header의-주요-항목">2.응답 헤더(Response Header)의 주요 항목</h2>
<p><strong>Content-Type:</strong> 응답 본문의 타입 [text/html, image/jpeg, application/json]</p>
<p><strong>Content-Length:</strong> 응답 본문의 크기 (byte 단위)</p>
<p><strong>Content-Encoding:</strong> 압축 방식 (예: gzip)</p>
<p><strong>Last-Modified:</strong> 파일이 마지막으로 수정된 날짜</p>
<h2 id="3-본문body의-역할">3. 본문(Body)의 역할</h2>
<p><strong>실제 사용자에게 보여줄 내용(html, 이미지 등)이 있음</strong></p>
<p><strong>브라우저는 이 내용을 해석해 화면에 표시함.</strong></p>
<h2 id="4-요약-흐름">4. 요약 흐름</h2>
<p><strong>브라우저가 서버에 요청 보냄</strong></p>
<p><strong>서버는 상태 코드 + 헤더 + 본문으로 응답</strong></p>
<p><strong>브라우저는 응답 본문을 보고 화면에 출력함</strong></p>
<p><img src="https://velog.velcdn.com/images/smilefe-_-/post/6f83b540-ec9d-4e16-8aba-003c93edc3d0/image.png" alt=""></p>
<h1 id="사진의-내용-정리">사진의 내용 정리</h1>
<h2 id="1-응답의-구성-요소">1. 응답의 구성 요소</h2>
<p><strong>응답(Response)</strong>
→ 브라우저가 서버에 요청을 보내고,
→ 서버가 정상적으로 응답을 반환한 경우를 설명합니다.</p>
<p><strong>브라우저 요청 → 서버가 OK함</strong>
→ 서버가 요청을 정상적으로 처리했음을 의미합니다.</p>
<p><strong>HTTP/1.1 200 OK</strong>
→ HTTP 프로토콜 버전 + 상태 코드 (여기서 200 OK는 정상 처리 상태를 의미)</p>
<p><strong>헤더(Header)</strong>
→ 응답의 부가정보들이 담긴 부분으로, 주요 항목:</p>
<p><strong>Content-Type</strong>: 본문의 형식 (예: text/html, application/json 등)</p>
<p><strong>Content-Length</strong>: 본문의 길이 (바이트 단위)</p>
<p><strong>본문(body) *<em>: 실제 전달될 데이터(예: HTML)
*</em>
본문(Body)</strong>
→ 사용자가 브라우저에서 실제로 보게 되는 내용 (HTML 문서 등)</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[HTTP 배우기]]></title>
            <link>https://velog.io/@smilefe-_-/HTTP-%EB%B0%B0%EC%9A%B0%EA%B8%B0</link>
            <guid>https://velog.io/@smilefe-_-/HTTP-%EB%B0%B0%EC%9A%B0%EA%B8%B0</guid>
            <pubDate>Sat, 14 Jun 2025 10:31:07 GMT</pubDate>
            <description><![CDATA[<p><strong>웹의 초기 구성 요소</strong></p>
<p><strong>HTML</strong>: 웹페이지를 구성하는 마크업 언어</p>
<p><strong>URL</strong>: 웹페이지에 접근할 수 있도록 도와주는 주소체계</p>
<p><strong>웹 브라우저 &amp; 웹 서버</strong>: HTML 파일을 주고받는 소프트웨어</p>
<p><strong>HTTP</strong>: 브라우저와 서버가 통신할 때 사용하는 규칙 </p>
<ul>
<li><p>HTML뿐만 아니라, 이미지, 오디오, 동영상 등 다양한 멀티미디어 파일을 전송하는 데 사용됨</p>
</li>
<li><p>웹이 정보를 받기위해 서로 알아듣는 메세지</p>
</li>
<li><p>요청: Request (요청 메시지)
응답: Response (응답 메시지)</p>
</li>
</ul>
<p><strong>HTTP 메세지의 구조</strong>  </p>
<blockquote>
<ol>
<li>Request 메시지 (클라이언트 → 서버)</li>
</ol>
</blockquote>
<p>GET /index.html HTTP/2.0</p>
<blockquote>
<ol start="2">
<li>/index.html이라는 파일을 GET 방식으로 요청</li>
</ol>
</blockquote>
<p>Host: example.com</p>
<blockquote>
<ol start="3">
<li>어떤 주소(도메인)에 요청한 것인지 명시</li>
</ol>
</blockquote>
<p>Response 메시지 (서버 → 클라이언트)
HTTP/1.1 200 OK</p>
<blockquote>
<ol start="4">
<li>통신 성공, 요청한 파일을 보내주겠다는 뜻</li>
</ol>
</blockquote>
<p>Content-Type: text/html</p>
<blockquote>
<ol start="5">
<li>응답이 HTML 문서라는 의미</li>
</ol>
</blockquote>
<p>Content-Length: 5230</p>
<blockquote>
<ol start="6">
<li>응답 데이터의 크기</li>
</ol>
</blockquote>
<h2 id="요청하는-친구들">요청하는 친구들</h2>
<h3 id="메서드method"><strong>메서드(Method)</strong></h3>
<p>GET, POST 등. 요청의 종류를 의미</p>
<h4 id="종류">종류</h4>
<p><strong>1. GET:</strong> 서버에서 데이터를 요청</p>
<p><strong>2. POST:</strong> 서버에 데이터를 전송</p>
<h4 id="요청-대상request-uri">요청 대상(Request-URI)</h4>
<p>어떤 리소스를 요청하는가 </p>
<p>HTTP 버전: 클라이언트가 사용하는 프로토콜 버전 </p>
<h2 id="헤더">헤더</h2>
<p>클라이언트(웹브라우저)가 서버에 추가적인 정보를 제공</p>
<p><strong>Host:</strong> 요청 대상 서버의 주소 </p>
<p>여러 도메인을 하나의 서버에서 운영할 수 있도록 도와줌 (가상 호스트 지원)</p>
<p><strong>User-Agent:</strong> 요청을 보낸 브라우저/운영체제 정보</p>
<p><strong>Accept-Encoding:</strong> 브라우저가 처리할 수 있는 압축 방식 (gzip, deflate, br)</p>
<p><strong>If-Modified-Since:</strong> 마지막으로 받은 시점 이후로 리소스가 변경되었는지 확인</p>
<p>변경되지 않았다면 서버는 데이터를 다시 보내지 않고 응답을 줄일 수 있음</p>
<h2 id="바디">바디</h2>
<p>주로 POST 요청에서 사용됨</p>
<p>서버로 전송할 실제 데이터를 포함 (예: 로그인 폼 정보)</p>
<p>바디와 헤더는 빈 줄로 구분</p>
<h1 id="웹-브라우저의-역할">웹 브라우저의 역할!</h1>
<ul>
<li>사용자의 요청을 서버에게 대신 요청</li>
<li>받은 응답 데이터를 기반으로 화면에 표시<blockquote>
<p>브라우저는 요청 메시지를 만들고,
서버는 응답 메시지를 생성해서 보냄</p>
</blockquote>
</li>
</ul>
<p><img src="https://velog.velcdn.com/images/smilefe-_-/post/9ca98980-0189-4af0-ae06-83345d5c5dbc/image.png" alt=""></p>
<ol>
<li><p>웹 브라우저가 HTML을 받아와서 화면을 띄운다.</p>
</li>
<li><p>사용자가 로그인 버튼을 누른다</p>
</li>
<li><p>브라우저가 API 서버에 로그인 요청을 보낸다.</p>
</li>
<li><p>API 서버가 처리한 뒤, 로그인 성공 여부를 알려준다.</p>
</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[엘리스 QA 트랙 수료 후기]]></title>
            <link>https://velog.io/@smilefe-_-/%EC%97%98%EB%A6%AC%EC%8A%A4-QA-%ED%8A%B8%EB%9E%99-%EC%88%98%EB%A3%8C-%ED%9B%84%EA%B8%B0</link>
            <guid>https://velog.io/@smilefe-_-/%EC%97%98%EB%A6%AC%EC%8A%A4-QA-%ED%8A%B8%EB%9E%99-%EC%88%98%EB%A3%8C-%ED%9B%84%EA%B8%B0</guid>
            <pubDate>Fri, 30 May 2025 11:01:38 GMT</pubDate>
            <description><![CDATA[<p><strong>&quot;이 글은 엘리스 트랙의 지원을 받아 작성 되었습니다&quot;</strong></p>
<ul>
<li><strong>나의 이야기1</strong>. </li>
<li><em>수강 전 나의 상태...*</em></li>
</ul>
<ol>
<li>QA 관련 경험 X</li>
<li>비전공자</li>
<li>유사 경험 종사 경험 X</li>
</ol>
<ul>
<li>취업 목표 (게임, 웹 QA)</li>
</ul>
<ul>
<li><strong>나의 이야기2.</strong>
엘리스트랙의 커리큘럼과 학습방식</li>
<li><em>1. 기간*</em>: 약 5개월</li>
<li><em>2. 가장 좋았던 파트 *</em>: Python 이라는 새로운 언어를 배우는 주차</li>
<li><em>3. 실무 프로젝트 진행 여부*</em> : 실무 경험이 부족하지만 코치님들의 지도 아래 성공적으로 프로젝트를 진행했습니다.</li>
<li><em>4. 팀 프로젝트 방식 :*</em> 협업은 노션으로 진행하였고, 디스코드나 기타 메신저를 이용해 소통해가며 완성했습니다.</li>
</ul>
<ul>
<li>중요 ! </li>
<li><em>수업방식*</em></li>
<li><em>1. 이론 vs 실습 *</em>= 물론 이론의 비중이 크긴 하지만 스스로 하고자 하면 충분히 실습과 연계해서 기량을 채울수 있음.</li>
<li><em>2. 과제, 프로젝트 난이도*</em> = 처음하는 분들끼리 팀이 되는게 아닌 현업자, 경험자, 밸런스 있게 섞어서 팀을 짜기에 부담없이 배우고 진행할 수 있었습니다.</li>
<li><em>3. 코치님 멘토링*</em> = 개인적으로 연락을 해서 물어보게 되어도 친절하게 답변해주시고 부족한 부분에 대해서는 추가 피드백을 해주기 때문에 부족한 부분을 스스로 이해하고 채워 나갈 수 있는 시간이 많았습니다.</li>
</ul>
<ul>
<li><strong>나의 이야기3.</strong></li>
<li><em>결과 &amp; 성장 변화*</em></li>
<li><em>부트캠프 전후의 실력비교*</em></li>
</ul>
<ol>
<li>QA를 준비하게 되면 코딩에 대한 지식은 많이 필요없을 줄 알았는데 더 좋고 높은곳을 향해 달려 가려면 필수역량이라는 것을 깨달았습니다</li>
<li>직접 Python 코드와 친해지도록 노력하며 간단한 가위바위보 게임을 만들 수 있게 되었고, 간단한 코드 로직의 흐름을 읽을 수 있게 되었습니다</li>
<li>무엇보다 실무에서만 경험할 수 있는 젠킨스와 같은 프로그램에 대해서도 간단하지만 공부하게 되어 부족한 경험을 조금이라도 가득가득 채울 수 있는 계기가 되었던 것 같습니다</li>
</ol>
<ul>
<li>취업 &amp; 포트폴리오
엘리스 QA 트랙을 진행하면서 실무 경험이 없고, 관련 학과가 아닌 저에게 이력서에 자신있게 적을 수 있는 하나의 무기가 생긴 것 같아 뿌듯합니다. 또한 이력서를 보고 연락오는 회사가 조금씩 생겼으며 포트폴리오에도 배운 프로젝트를 기반으로 내용을 작성해 나가며 스스로의 커리어를 성장시키고 있습니다</li>
</ul>
<ul>
<li>엘리스트랙을 추천하고 싶은 사람<img src="https://velog.velcdn.com/images/smilefe-_-/post/2230754d-267a-45d2-a1d6-297d44809993/image.png" alt=""></li>
</ul>
<ol>
<li><strong>일단 거기 이 글을 보고 고민하고 있는 QA 꿈나무? 일단 지원해</strong></li>
<li><strong>QA가 테스트만 하는 사람이라고 착각하는 사람들? 와서 들어봐 아니야..</strong></li>
</ol>
<ul>
<li><strong>나의 이야기4</strong></li>
<li>커넥팅 데이 후기</li>
</ul>
<p>1.** 구성**
A. 2시 까지라 식사는 안주실 줄 알았는데 완전 맛있는스팸 도시락을 주셨어요
B. 엘리스트랙의 귀여운 굿즈와 이름표를 지급해주셨어요
C. 수료식 진행
D. 고인물 강사님 2분의 강의
E. 강사님들과 개별 Q&amp;A 시간
F. 마무리 단체 사진과 함께 작별</p>
<p>2.** 좋았던 점**</p>
<ul>
<li>취업이 안되는게 제가 부족하기 때문이라고 생각했었는데 현업자분들의 말을 듣고 여러 레이서 분들과 말을 나누다 보니 다들 힘드신건 마찬가지라고 하셔서 더욱 힘내서 취준 생활을 해야겠다고 다짐하는 개기가 되었습니다.</li>
</ul>
<p>3.** 동료들에게 전하는 말**</p>
<ul>
<li>부족한 저와 함께 프로젝트 해주셔서 감사합니다!!!!!!!!</li>
<li>대단히 신세 많이 졌습니다!!!!!
<img src="https://velog.velcdn.com/images/smilefe-_-/post/e75691fa-97cd-4f1b-be36-40c4be581b1a/image.jpg" alt=""></li>
</ul>
<p><strong>- 엘리스QA트랙의 수업 자료 맛보기</strong>
<img src="https://velog.velcdn.com/images/smilefe-_-/post/021f2a6d-d6c7-4d9a-8de7-a29f6df962e2/image.png" alt=""></p>
<p><strong>맛보기 입니다 궁금하면? [엘리스QA 트랙 2기] 들어가야겠지?</strong></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[엘리스 QA 트랙] API]]></title>
            <link>https://velog.io/@smilefe-_-/%EC%97%98%EB%A6%AC%EC%8A%A4-QA-%ED%8A%B8%EB%9E%99-API-ea9c9bhq</link>
            <guid>https://velog.io/@smilefe-_-/%EC%97%98%EB%A6%AC%EC%8A%A4-QA-%ED%8A%B8%EB%9E%99-API-ea9c9bhq</guid>
            <pubDate>Thu, 17 Apr 2025 11:58:59 GMT</pubDate>
            <description><![CDATA[<p><strong>1. API의 종류</strong>
API는 어디서 어떻게 제공되느냐에 따라 여러 형태로 나뉨</p>
<ul>
<li><p>Open API : 사용할 수 있는 공개된 API<br>EX) Kakao Map API</p>
</li>
<li><p>Private API    내부 시스템에서만 사용하는 API<br>EX) 관리자 시스템 등</p>
</li>
<li><p>Partner API    특정 파트너에만 제공되는 API<br>EX) 결제대행 API</p>
</li>
</ul>
<p><strong>2. RESTful API란?</strong>
REST는 API 설계의 일종 / 리소스를 중심으로 설계된 구조</p>
<p><strong>RESTful API의 특징</strong></p>
<p>URL은 명사 중심 (자원) → /users, /posts/3/comments</p>
<p>HTTP 메서드로 동작 구분 → GET, POST, PUT, DELETE</p>
<p>무상태성 (Stateless) → 요청 간 상태를 서버가 기억하지 않음</p>
<p>계층화 (Layered) → 중간 서버(캐시, 프록시 등)를 둘 수 있음</p>
<p><strong>3. GraphQL API란?</strong>
REST와는 다른 방식으로 데이터를 주고받는 API</p>
<p><strong>4. Webhook이란?</strong></p>
<ul>
<li><p>API는 보통 클라이언트가 서버에 요청하는 방식
Webhook은 서버가 클라이언트에 이벤트 발생 시 자동 전송하는 방식</p>
</li>
<li><p>EX) 결제 완료 시, 카카오 알림톡이 자동으로 전송되는 구조</p>
</li>
</ul>
<p><strong>5. API 응답 구조 (표준화)</strong></p>
<pre><code class="language-json">{
  &quot;success&quot;: true,
  &quot;data&quot;: {
    &quot;id&quot;: 1,
    &quot;name&quot;: &quot;홍길동&quot;
  },
  &quot;error&quot;: null
}</code></pre>
<p><strong>6. API Gateway란?</strong>
여러 개의 API 서비스를 하나로 통합해서 관리하는 중간 관리자 역할을 하는 서버</p>
<p>주요 기능</p>
<ul>
<li><p>라우팅 (요청 전달)</p>
</li>
<li><p>인증/인가 처리</p>
</li>
<li><p>요청 제한(Rate Limiting)</p>
</li>
<li><p>로깅/모니터링</p>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[엘리스 QA 트랙] API]]></title>
            <link>https://velog.io/@smilefe-_-/%EC%97%98%EB%A6%AC%EC%8A%A4-QA-%ED%8A%B8%EB%9E%99-API</link>
            <guid>https://velog.io/@smilefe-_-/%EC%97%98%EB%A6%AC%EC%8A%A4-QA-%ED%8A%B8%EB%9E%99-API</guid>
            <pubDate>Wed, 16 Apr 2025 22:52:25 GMT</pubDate>
            <description><![CDATA[<p><strong>1. API란?</strong>
API (Application Programming Interface)는
프로그램끼리 서로 소통할 수 있게 해주는 통로</p>
<p>손님(당신) = 사용자
주방 = 서버(정보가 있는 곳)
직원 = API</p>
<p>API는 사용자의 요청을 서버로 전달하고, 결과를 다시 사용자에게 전달해주는 중간자 역할</p>
<p><strong>2.  API 작동 방식 (기본 개념)</strong></p>
<p>메서드 / 설명/ 예시</p>
<p>GET    / 정보 가져오기 / 유저 리스트 보기
POST / 새 데이터 생성 / 회원가입 하기
PUT / 데이터 전체 수정/ 유저 정보 전체 수정하기
PATCH / 데이터 일부 수정/ 유저 이메일만 바꾸기
DELETE / 데이터 삭제 / 게시글 삭제하기</p>
<p><strong>3. Postman이란?</strong></p>
<ul>
<li>API를 쉽게 테스트하고 요청을 보내볼 수 있는 도구</li>
</ul>
<p><strong>4. Postman으로 할 수 있는 것</strong></p>
<ul>
<li><p>API 요청 보내기 (GET, POST, PUT, DELETE 등)</p>
</li>
<li><p>요청에 헤더/바디 설정</p>
</li>
<li><p>응답 확인 (상태 코드, 데이터 확인)</p>
</li>
<li><p>테스트 스크립트 작성</p>
</li>
<li><p>API 자동 문서화</p>
</li>
</ul>
<p><strong>5. Postman의 주요 기능</strong></p>
<p><strong>5-1. Request 보내기</strong></p>
<ul>
<li><p>원하는 API 주소(URL) 입력하고</p>
</li>
<li><p>메서드 선택 (GET, POST 등)</p>
</li>
<li><p>필요한 헤더, 파라미터, 바디 입력 후</p>
</li>
<li><p>Send 버튼 클릭하면 서버에 요청 전송</p>
</li>
</ul>
<p><strong>5-2. Response 확인</strong></p>
<ul>
<li><p>응답 데이터(JSON 등)</p>
</li>
<li><p>응답 코드 (200, 404, 500 등)</p>
</li>
<li><p>응답 시간, 크기</p>
</li>
<li><p>전체 응답 로그 확인 가능</p>
</li>
</ul>
<p><strong>5-3. 컬렉션 (Collections)</strong></p>
<ul>
<li><p>자주 사용하는 API 요청들을 폴더처럼 모아놓을 수 있음</p>
</li>
<li><p>예: 회원관리, 게시판, 결제 등으로 그룹화 가능</p>
</li>
<li><p>팀 프로젝트나 자동화 테스트에서 매우 유용함</p>
</li>
</ul>
<p><strong>5-4. 환경(Environment) 설정</strong></p>
<ul>
<li>같은 요청을 다른 서버(개발/운영) 에 보내야 할 때 사용</li>
</ul>
<p><strong>5-5. Authorization (인증)</strong></p>
<ul>
<li><p>토큰을 헤더에 넣는 식의 인증 처리를 쉽게 가능</p>
</li>
<li><p>토큰, Basic Auth, OAuth 등 다양한 인증 방식 지원</p>
</li>
</ul>
<p><strong>5-6. 테스트 스크립트 작성 (Tests 탭)</strong></p>
<ul>
<li><p>요청 후 응답을 자동으로 검사할 수 있음</p>
</li>
<li><p>예: 응답코드가 200인지 확인</p>
</li>
</ul>
<p><strong>5-7. Pre-request Script</strong>
요청 전에 실행되는 스크립트</p>
<p>보통 토큰 생성, 타임스탬프 추가 등에 사용</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[엘리스 QA 트랙] PYTHON 테스트 자동화]]></title>
            <link>https://velog.io/@smilefe-_-/%EC%97%98%EB%A6%AC%EC%8A%A4-QA-%ED%8A%B8%EB%9E%99-PYTHON-%ED%85%8C%EC%8A%A4%ED%8A%B8-%EC%9E%90%EB%8F%99%ED%99%94</link>
            <guid>https://velog.io/@smilefe-_-/%EC%97%98%EB%A6%AC%EC%8A%A4-QA-%ED%8A%B8%EB%9E%99-PYTHON-%ED%85%8C%EC%8A%A4%ED%8A%B8-%EC%9E%90%EB%8F%99%ED%99%94</guid>
            <pubDate>Wed, 12 Mar 2025 12:30:01 GMT</pubDate>
            <description><![CDATA[<p><strong>1. 테스트 자동화란?</strong>
테스트 자동화는 소프트웨어의 기능이 정상적으로 작동하는지 자동으로 검사하는 과정이다.</p>
<p><strong>2. 자동화를 사용해서 얻는 장점</strong></p>
<blockquote>
<ol>
<li>반복적인 테스트를 자동화하여 개발 속도 향상</li>
<li>사람의 실수를 줄이고 더 정확한 검증 가능</li>
<li>코드 수정 후 빠르게 문제점을 발견 가능</li>
</ol>
</blockquote>
<p>** 3. unittest**</p>
<pre><code class="language-python">import unittest

# 테스트할 함수
def add(a, b):
    return a + b

# 테스트 클래스 (unittest.TestCase 상속)
class TestMathOperations(unittest.TestCase):
    def test_add(self):
        self.assertEqual(add(2, 3), 5)  # 2 + 3 = 5 확인

if __name__ == &quot;__main__&quot;:
    unittest.main()

# unittest.TestCase를 상속해서 테스트 클래스 작성
# 그 후 self.assertEqual(결과, 예상값)을 사용해 검증

# unittest 실행 방법
python -m unittest test_script.py # 입력
</code></pre>
<p><strong>3. pytest의 고급 기능과 데이터 기반 테스트</strong>
<strong>pytest = unittest</strong>보다 더 간단한 문법과 강력한 기능을 제공하는 테스트 프레임워크</p>
<p><strong>* 프레임 워크</strong> : 소프트웨어 개발을 쉽게 할 수 있도록 미리 만들어진 기본 구조</p>
<pre><code class="language-python">#pytest 설치
pip install pytest # 터미널에 입력


# 테스트할 함수
def multiply(a, b):
    return a * b

# pytest 테스트 함수
def test_multiply():
    assert multiply(3, 4) == 12  # 3 * 4 = 12 확인

#pytest 실행 방법
pytest test_script.py # 터미널에 입력</code></pre>
<p><strong>4. 테스트 데이터 생성 및 관리 기법</strong></p>
<ol>
<li>테스트 실행 -&gt; 입력값과 예상 결과값 필요</li>
<li>소규모 프로젝트 -&gt; 딕셔너리 리스트 사용</li>
<li>DB 테스트 -&gt; 가상 데이터 생성 필요</li>
</ol>
<p><strong>대상혁(faker)</strong> 라이브러리를 활용한 가짜 데이터 생성</p>
<pre><code class="language-python"> pip install faker # 터미널 입력

 from faker import Faker

fake = Faker()

# 가짜 사용자 데이터 생성
print(fake.name())  # 랜덤 이름
print(fake.email())  # 랜덤 이메일
print(fake.address())  # 랜덤 주소</code></pre>
<p><strong>5. Appium을 활용한 모바일 UI 테스트 자동화</strong>
 <strong>Appium</strong> = 모바일 앱 UI 테스트를 자동화하는 도구</p>
<ol>
<li>Android, iOS 앱을 테스트할 수 있음</li>
<li>Python과 함께 사용할 수 있음</li>
<li>UI 요소를 찾아 클릭, 입력 등의 동작을 수행 가능<pre><code class="language-python">pip install Appium-Python-Client # 터미널 입력
</code></pre>
</li>
</ol>
<p>from appium import webdriver</p>
<h1 id="appium-서버-설정">Appium 서버 설정</h1>
<p>capabilities = {
    &quot;platformName&quot;: &quot;Android&quot;,
    &quot;deviceName&quot;: &quot;emulator-5554&quot;,
    &quot;app&quot;: &quot;/path/to/app.apk&quot;  # 테스트할 앱 경로
}</p>
<p>driver = webdriver.Remote(&quot;<a href="http://localhost:4723/wd/hub&quot;">http://localhost:4723/wd/hub&quot;</a>, capabilities)</p>
<h1 id="앱의-특정-버튼-클릭">앱의 특정 버튼 클릭</h1>
<p>driver.find_element(&quot;id&quot;, &quot;com.example.app:id/button&quot;).click()</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[엘리스 QA 트랙] Selenium을 활용한 자동화 웹 테스트]]></title>
            <link>https://velog.io/@smilefe-_-/%EC%97%98%EB%A6%AC%EC%8A%A4-QA-%ED%8A%B8%EB%9E%99-Selenium%EC%9D%84-%ED%99%9C%EC%9A%A9%ED%95%9C-%EC%9E%90%EB%8F%99%ED%99%94-%EC%9B%B9-%ED%85%8C%EC%8A%A4%ED%8A%B8</link>
            <guid>https://velog.io/@smilefe-_-/%EC%97%98%EB%A6%AC%EC%8A%A4-QA-%ED%8A%B8%EB%9E%99-Selenium%EC%9D%84-%ED%99%9C%EC%9A%A9%ED%95%9C-%EC%9E%90%EB%8F%99%ED%99%94-%EC%9B%B9-%ED%85%8C%EC%8A%A4%ED%8A%B8</guid>
            <pubDate>Wed, 12 Mar 2025 12:08:25 GMT</pubDate>
            <description><![CDATA[<p><strong>1. Selenium이란?</strong></p>
<blockquote>
<p>Selenium은 웹 브라우저를 자동으로 제어할 수 있는 오픈소스 도구 
크롤링(데이터 수집), UI 테스트 자동화 등에 활용됨</p>
</blockquote>
<p><strong>2. 웹 요소 찾기(DOM 탐색)</strong></p>
<pre><code class="language-python">from selenium import webdriver

driver = webdriver.Chrome()  # 크롬 브라우저 실행
driver.get(&quot;https://example.com&quot;)  # 웹페이지 접속

# 요소 찾기
element = driver.find_element(&quot;id&quot;, &quot;username&quot;)  # ID로 요소 찾기
element.send_keys(&quot;test_user&quot;)  # 입력 값 넣기

#자주 사용하는 요소 선택 방법!!

find_element(&quot;id&quot;, &quot;example&quot;) : ID로 요소 찾기
find_element(&quot;name&quot;, &quot;example&quot;) : name 속성으로 찾기
find_element(&quot;xpath&quot;, &quot;//*[@id=&#39;example&#39;]&quot;) : XPath로 찾기
find_element(&quot;css selector&quot;, &quot;.example&quot;) : CSS 선택자로 찾기</code></pre>
<ul>
<li>XPath  = HTML 문서의 특정 요소를 찾기 위해 경로를 지정하는 방식</li>
<li>CSS 선택자 = HTML 요소를 스타일링할 때 사용되는 방식</li>
</ul>
<p><strong>3. 웹페이지 자동 로그인 및 데이터 크롤링</strong></p>
<pre><code class="language-python">#자동 로그인
driver.find_element(&quot;id&quot;, &quot;username&quot;).send_keys(&quot;my_id&quot;)
driver.find_element(&quot;id&quot;, &quot;password&quot;).send_keys(&quot;my_password&quot;)
driver.find_element(&quot;id&quot;, &quot;login-button&quot;).click()  # 로그인 버튼 클릭

#데이터 가져오기
data = driver.find_element(&quot;id&quot;, &quot;content&quot;).text  # 텍스트 가져오기
print(data)</code></pre>
<p><strong>4. 일정 관리 시스템 UI 자동화</strong></p>
<pre><code class="language-python">driver.find_element(&quot;id&quot;, &quot;add-event&quot;).click()  # 일정 추가 버튼 클릭
driver.find_element(&quot;id&quot;, &quot;event-title&quot;).send_keys(&quot;회의&quot;)  # 일정 입력
driver.find_element(&quot;id&quot;, &quot;save-button&quot;).click()  # 저장 버튼 클릭</code></pre>
<p><strong>5. 비동기 데이터 로딩 및 에러 처리</strong></p>
<pre><code class="language-python">from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 특정 요소가 로드될 때까지 기다리기
wait = WebDriverWait(driver, 10)
element = wait.until(EC.presence_of_element_located((By.ID, &quot;dynamic-content&quot;)))
print(element.text)</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[엘리스 QA 트랙] 쿠키와 세션]]></title>
            <link>https://velog.io/@smilefe-_-/%EC%97%98%EB%A6%AC%EC%8A%A4-QA-%ED%8A%B8%EB%9E%99-%EC%BF%A0%ED%82%A4%EC%99%80-%EC%84%B8%EC%85%98</link>
            <guid>https://velog.io/@smilefe-_-/%EC%97%98%EB%A6%AC%EC%8A%A4-QA-%ED%8A%B8%EB%9E%99-%EC%BF%A0%ED%82%A4%EC%99%80-%EC%84%B8%EC%85%98</guid>
            <pubDate>Thu, 06 Mar 2025 11:16:34 GMT</pubDate>
            <description><![CDATA[<p><strong>쿠키</strong>란 뭘까? 우리가 먹는 쿠키...가 아니라고!!!!</p>
<ul>
<li>쿠키는 사용자의 브라우저에 저장되는 작은 텍스트 파일이야!</li>
</ul>
<p><strong>서버 친구가 클라이언트 친구에게 쿠키를 선물하면, 브라우저 친구는 쿠키를 저장하고, 동일한 서버에 요청을 보낼 때 마다 쿠키를 자동으로 전송해줘!!</strong></p>
<p><strong>사용 목적</strong></p>
<ol>
<li>사용자 인증 상태 유지 (로그인 상태 유지)</li>
<li>사용자 설정 저장 (언어, 테마 등)</li>
<li>방문한 사이트 추적 (분석 도구나 광고 추적용)</li>
</ol>
<p><strong>특징</strong></p>
<ol>
<li><p>클라이언트에 저장: 쿠키는 클라이언트(사용자의 브라우저)에 저장됨!</p>
</li>
<li><p>유효 기간 설정 가능: 쿠키에는 만료 시간이 설정되어 있어, 일정 시간이 지나면 자동으로 삭제됨</p>
</li>
<li><p>크기 제한: 한 개의 쿠키 크기는 일반적으로 4KB 이하로 제한됨!!</p>
</li>
<li><p>보안: 쿠키는 클라이언트에 저장되기 때문에, 보안에 취약할 수 있습니다. 이를 해결하기 위해 Secure 플래그(HTTPS 연결에서만 전송)나 HttpOnly 플래그(자바스크립트 접근 차단)를 사용할 수 있다</p>
</li>
</ol>
<p><strong>세션은 몰까?</strong></p>
<ol>
<li><p>세션은 서버 측에서 관리되는 사용자 상태 정보</p>
</li>
<li><p>세션은 사용자가 웹 애플리케이션에 접속할 때 서버에서 생성
됨</p>
</li>
<li><p>사용자가 요청을 보낼 때마다 고유한 세션 ID가 클라이언트로 전달</p>
</li>
<li><p>세션 ID는 보통 쿠키에 저장되며, 이를 통해 서버는 해당 사용자의 상태를 추적가능!</p>
</li>
</ol>
<p><strong>사용 목적</strong></p>
<ol>
<li>로그인 세션 유지(우리가 사용하는 ID 저장기능?)</li>
<li>장바구니, 결제 등 일시적인 상태 유지</li>
</ol>
<p><strong>특징</strong></p>
<ol>
<li><p>서버에 저장: 세션 데이터는 서버에 저장되고, 클라이언트는 세션 ID만 저장해!</p>
</li>
<li><p>세션 ID: 세션 ID는 쿠키나 URL 파라미터를 통해 클라이언트와 서버 간에 주고받을 수 있어!</p>
</li>
</ol>
<p>(<strong>*파라미터</strong> : 어떤 함수나 요청에 추가적인 정보를 전달하는 값)</p>
<ol start="3">
<li><p>유효 기간: 세션은 일반적으로 사용자가 로그아웃하거나 일정 시간 동안 활동이 없으면 만료됨!</p>
</li>
<li><p>보안: 세션 데이터는 서버에 저장되기 때문에 상대적으로 안전하지만, 세션 ID가 탈취되면 보안 위협이 있을수 있음</p>
</li>
</ol>
<p><strong>요약 정리!</strong>
&lt;쿠키&gt;</p>
<ol>
<li><p>쿠키는 클라이언트 측에 저장됨 </p>
</li>
<li><p>사용자가 방문한 사이트에 대한 설정이나 정보를 유지하는 데 사용</p>
</li>
<li><p>주로 사용자의 인증 정보를 저장 </p>
</li>
<li><p>사용자가 페이지를 새로 고침하거나 다른 페이지로 이동할 때도 정보를 유지할 수 있게함</p>
</li>
</ol>
<p>&lt;세션&gt;</p>
<ol>
<li><p>서버 측에서 관리</p>
</li>
<li><p>사용자의 상태(로그인 상태 등)를 서버에서 추적하는 데 사용</p>
</li>
<li><p>보통 중요한 정보는 서버에서 관리하며, 클라이언트에는 세션 ID만 전달됨</p>
</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[[엘리스 QA트랙] 반복문]]></title>
            <link>https://velog.io/@smilefe-_-/%EC%97%98%EB%A6%AC%EC%8A%A4-QA%ED%8A%B8%EB%9E%99-%EB%B0%98%EB%B3%B5%EB%AC%B8</link>
            <guid>https://velog.io/@smilefe-_-/%EC%97%98%EB%A6%AC%EC%8A%A4-QA%ED%8A%B8%EB%9E%99-%EB%B0%98%EB%B3%B5%EB%AC%B8</guid>
            <pubDate>Sun, 23 Feb 2025 07:15:15 GMT</pubDate>
            <description><![CDATA[<pre><code class="language-python">
#반복문 : 어떠한 조건이나 범위내에서 명령을 반복적으로 수행하는것

#for문 : 원소를 반복하는 방법
#정해진 횟수만큼 반복한다.
#[1, 2, 3, 4, 5] (시퀀스)에서
#원소를 하나씩 가져와서(for)
#출력(print)

# for 변수 in 시퀀스 :
#    &lt;수행 할 명령&gt;

sum = 0
for num in [1, 2, 3, 4, 5]
    print(sum) # 15

for num in [1, 2, 3, 4, 5]
    print(num)

#num : data
#[1, 2, 3, 4, 5] : index
#for문에 들어갈 명령들은 같은 들여쓰기 사용해야함
for 변수 in 시퀀스

sum = 0

for i in [1, 3, 5]:
    sum = sum + i
print(sum) # 9

#명령이 len(시퀀스) 만큼 실행
#for 변수 in 시퀀스:
    &lt;명령&gt;


length = 0
for i in [1, 3, 5]:
    length = length + 1
    print(length) #3


#1부터 10까지 출력하기
for i in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    print(i)


#for - range문
#10초(횟수) 동안(for) count를 하나씩 세라(명령) 
#range : 연속되는 숫자를 만들어 주는 시퀀스 자료형

print(range(1, 9)) #range(1,9)
print(list(range(1,9))) # [1, 2, 3, 4, 5, 6, 7, 8,]
print(range(5)) # range(0,5)
print(list(range(5))) # [0, 1, 2, 3, 4]


#for - range 1 : 구간으로 반복하는 방법
#for 변수 in range(a,b):
    &lt;수행할 명령&gt;

num_list = [1]
for i in range(2, 5):
    num_list.append(i)

print(num_list) # [1, 2, 3, 4]</code></pre>
<p><img src="https://velog.velcdn.com/images/smilefe-_-/post/618d71c6-7175-4b86-97fd-11c89a7ab076/image.png" alt=""></p>
<pre><code class="language-python">#for range 2 : 횟수로 반복하는 방법 (a)번 만큼 수행

#for 변수 in range(a):
#    &lt;수행 할 명령&gt;

count = 0
for i in range(10):
    count = count + 1

print(count) #10</code></pre>
<p><img src="https://velog.velcdn.com/images/smilefe-_-/post/7c61c477-15d8-428f-9c96-0e64051aef63/image.png" alt=""></p>
<pre><code class="language-python">#for range 3 : range와 len, 인덱싱을 이용가능
str = [&quot;a&quot;, &quot;b&quot;, &quot;c&quot;, &quot;d&quot;]
for idx in range(len(str_list)):
    print(idx)

for idx in range(len(str_list)):
    print(str_list[idx])

#while문 : 조건 -&gt; while -&gt; 명령
# 조건이 맞으면 (True) 계속 실행된다
# 조건이 틀리면(False) 종료된다
while 조건:
    &lt;수행 할 명령&gt;

num = 5

while num &gt; 0:
    print(num)
    num = num - 1

print(&quot;good day&quot;)</code></pre>
<p><img src="https://velog.velcdn.com/images/smilefe-_-/post/113ef06d-aecf-4c7b-bc5c-7d8bc7d03080/image.png" alt=""></p>
<pre><code class="language-python">i = 1
sum = 0
while i &lt; 5:
    sum = sum + i
    i = i + 1

print(sum) #10



#while문에서 조건이 항상 True일때 -&gt; 무한루프 상태가됨

i = 1
while i &gt; 0:
    print(i)
    i = i + 1

print(&quot;종료&quot;)



#break 문 : if문으로 조건을 걸고 break문 실행 -&gt; 반복문 탈출
number = 1

while True:
    print(&quot;good day&quot;)

    if number &gt;= 5 :
    break

    number = number + 1

print(number)</code></pre>
<p><img src="https://velog.velcdn.com/images/smilefe-_-/post/848775de-471a-474d-aa7b-dc7587b9acc9/image.png" alt=""></p>
<pre><code class="language-python">
#continue문 : if문으로 조건을 걸어준 다음 #continue실행 -&gt; 반복문을 건너뛰는 역할

for number in range(1, 11):

    if number % 2 !=0:
    continue

    print(number)


</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[엘리스QA트랙] 조건문]]></title>
            <link>https://velog.io/@smilefe-_-/%EC%97%98%EB%A6%AC%EC%8A%A4QA%ED%8A%B8%EB%9E%99-%EC%A1%B0%EA%B1%B4%EB%AC%B8</link>
            <guid>https://velog.io/@smilefe-_-/%EC%97%98%EB%A6%AC%EC%8A%A4QA%ED%8A%B8%EB%9E%99-%EC%A1%B0%EA%B1%B4%EB%AC%B8</guid>
            <pubDate>Sun, 23 Feb 2025 06:54:25 GMT</pubDate>
            <description><![CDATA[<pre><code class="language-python">#논리 자료형 = 참(true) 또는 거짓(False)를 나타내는 자료형
print(True) #True
print(False) #False

#숫자나 문자의 값을 비교하는 연산자
print(3 &lt; 5) # 주어진 진술이 참이면 True
print(7 == 5) # 주어진 진술이 거짓이면 False
print(2 &gt;= 10) # 왼쪽이 오른쪽보다 크거나 같다
print(5 != 10) # 오른쪽과 왼쪽이 같지않다 

#비교 연산자의 종류
(==) # 같다
(!=) # 다르다
(&gt;) # 왼쪽이 더 크다
(&lt;) # 오른쪽이 더 크다
(&gt;=) # 왼쪽이 크거나 같다
(&lt;=) # 오른쪽이 크거나 같다

# 논리 자료형의 연산
# True / False 만 존재
# 논리 자료형을 이용한 새로운 연산을 이용하면 복잡한 논리식을 단순화가능


# AND는 모두 True일까?
# 각 논리가 모두 True 일때 True 
print(3==3 and 4&lt;=5 and 10&gt;=9) #True

# OR은 True가 있을까?
# 논리 중 하나라도 True가 존재하면 True
print(3==4 or 3&gt;=5 or 10&lt;11) # True

#NOT는 기존의 논리를 반대로 한다
print(not 3==4) #기존은 False #NOT을 사용하면 반대로 되므로 True

#조건문 : 어떠한 특정 조건에 따라서 실행되는 명령이 달라지는 구문

#if문 : 만약 변수i가 1이라면 변수 i를 출력해주세요
     : 조건이 맞으면 밑에 작업이 실행되는 문법
#if문 구조: 만약(if) / 조건(i=1) / 명령(변수i를
출력해주세요)

#조건이 True 일때 if문 실행    
#if문에 들어갈 명령어들은 들여쓰기(4칸띄우기로 구분)
i = 1
if i == 1:
    print(i)  #1


#if-else문
#if문에서 조건을 만족하지 못하면?
#만약 변수i가 1이라면 변수 i를 출력해주세요
#아니면, i+1을 출력(명령)해주세요
#아니면 : else(i!= 1)

#조건이 True면 if문, False면 else문 실행
    #&lt;명령&gt;
#else :
    #&lt;명령&gt;
i = 1

if i == 1:
    print(i)
else :
    print(i+1) #2


#if-elif문
#조건1이 True면 if문, 조건1이 False 이면서 조건2가 True이면 elif문 실행

score = 100

# 1
if score &gt;= 90:
    print(&#39;A&#39;)
elif score &gt;= 75:
    print(&#39;B&#39;)
else :
    print(&#39;C&#39;)

#결과 : &#39;A&#39;만 출력됨 (if문이 참이므로 elif는 죽음)
     : elif가 실행되려면 바로 위의 if문이 거짓이면서 elif문의 조건을 만족해야 실행됨)

# 2
if score &gt;= 90:
    print(&#39;A&#39;)
if score &gt;= 75:
    print(&#39;B&#39;) 
else :
    print(&#39;C&#39;)

#결과: if문이 둘다 조건을 만족하므로 &#39;A&#39;,&#39;B&#39;가 출력된다
    : if문은 개별로 실행된다.



#else : if, elif 조건이 모두 해당되지 않으면 실행된다.

#if 조건 1 :  [조건1 =True] -&gt; (A)명령 실행
#    명령(A)

#elif 조건2 : [조건2 = False] and [True] -&gt; B 명령 실행
#    명령(B)

#elif 조건3 :[조건1 = False] and [조건2 = False]
#    명령(C) and [조건3 = True] -&gt; (C)명령 실행
#...

#else : [모든 조건이 False] -&gt; (D)명령 실행
#명령(D)








</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[엘리스 QA 트랙] Python 기본 문법 정리]]></title>
            <link>https://velog.io/@smilefe-_-/%EC%97%98%EB%A6%AC%EC%8A%A4-QA-%ED%8A%B8%EB%9E%99-Python-%EA%B8%B0%EB%B3%B8-%EB%AC%B8%EB%B2%95-%EC%A0%95%EB%A6%AC</link>
            <guid>https://velog.io/@smilefe-_-/%EC%97%98%EB%A6%AC%EC%8A%A4-QA-%ED%8A%B8%EB%9E%99-Python-%EA%B8%B0%EB%B3%B8-%EB%AC%B8%EB%B2%95-%EC%A0%95%EB%A6%AC</guid>
            <pubDate>Sun, 23 Feb 2025 03:18:49 GMT</pubDate>
            <description><![CDATA[<pre><code class="language-python">
#print
print() # 출력하기
print(&quot;출력할 내용&quot;)
print(&quot;내 꿈은 파이썬 왕&quot;) # 내 꿈은 파이썬 왕
print(3,&quot;냐냐&quot;) # 3 냐냐 # 여러 자료를 출력 가능해! (콤마[,]를 이용해!)


#input()
#print를 이용해 컴퓨터로부터 정보를 받음
#받은 정보를 컴퓨터에게 전달할 수있음 [input]
#컴퓨터는 사용자가 전달한 값을 어딘가에 보관해야함[변수]를 사용
var = input() # 값을 입력받아서 var에 저장함
var = input(&quot;정보를 입력하세요 : &quot;) #정보를 입력하세요 문구가 출력됨
#무엇을 입력하든 &quot;문자열&quot;로 입력받아짐
print(var)
print(type(var))


#형 변환
#정수 = integer = int(&quot;1008&quot;) # 1008
#실수 = float = float(&quot;3.1414&quot;) # 3.1414
#문자열 = string = str(3.1414) # &quot;3.1414&quot;
#리스트 = list = list(&quot;3123&quot;) # [&quot;3&quot;, &quot;1&quot;, &quot;2&quot;, &quot;3&quot;]

#str.split()
my_str = &quot;1 2 3 4 5&quot; / 1223 4 5
print(my_str.split())
=[&quot;1&quot;, &quot;2&quot;, &quot;3&quot;, &quot;4&quot;, &quot;5&quot;]
=[&quot;1223&quot;, &quot;4&quot;, &quot;5&quot;]

element # &quot;Na-Mg-Al-Si&quot;
print(elements.split(&quot;-&quot;))# [&quot;Na-&quot;, &quot;Mg-&quot;, &quot;Al-&quot;, &quot;Si-&quot;]


#str.join(list)
my_list # [&quot;E&quot;, &quot;L&quot;, &quot;I&quot;, &quot;C&quot;, &quot;E&quot;]
print(&quot;&quot;.join(my_list)) # ELICE

station # [&quot;서울&quot;, &quot;대전&quot;, &quot;창원&quot;]
print(&quot;-&gt;&quot;.join(station)) # 서울 -&gt; 대전 -&gt; 창원


#bool
#True, False만 올수있다
# ex) ~사용함 / ~ 사용안함
skill_used = True
skill_used = False

#리스트(List)
#여러 자료를 보관하는 자료형
#다른 종류의 자료를 함께 담을 수있음 #ex) [&#39;a&#39;, 2]
#자료 안 순서 존재

list2 = [11, 22, 33, 44, 55, 66,]

#리스트 값에 ()안의 값을 넣을수 있음
list2.append(16)
print(list2) #[11, 22, 33, 44, 55, 66, 16]

#리스트 값에 []안의 값을 넣을수 있음
list3 = list2 + [16]
print(list2) #[11, 22, 33, 44, 55, 66, 16]

#리스트들을 더해서 문자열로 나타냄
list4 = list2 + list3
print(list4)# [11, 22, 33, 44, 55, 66, 16, 11, 22, 33, 44, 55, 66, 16, 16]

#n의 값이 리스트에 있으면 True, 없으면 False가 출력됨
n = 11
ownership = n in list3
print(ownership) # True


n = 11
if n in list3:
    print(&#39;{}은 있어!&#39;.format(n)) # 11은 있어!


# 리스트안에 있는[]번째의 값을 하나만 제거 후 출력
del (list4[11])
print(list4)#[11, 22, 33, 44, 55, 66, 16, 11, 22, 33, 44, 66, 16, 16]

# 리스트 안에 존재하는 ()의 값과 동일한 모든 값을 제거 후 출력
list4.remove(55)
print(list4) # [11, 22, 33, 44, 66, 16, 11, 22, 33, 44, 66, 16, 16]







#Dictionary
#{}중괄호와, (:)콜론을 이용하여 표현
#person = {&quot;name&quot; : &quot;babo&quot;, &quot;age&quot; : 22}
#key[name]를 알면 value[babo]를 알수 잇음
print(person) # {&quot;name&quot; : &quot;babo&quot;, &quot;age&quot; : 22}
print(person[&quot;name&quot;]) # babo
print(person[&quot;age&quot;]) # 22


#Dictionary[key]에 내용 추가
person = {&quot;name&quot; : &quot;babo&quot;, &quot;age&quot; : 22}
person[&quot;아가소리&quot;] =
&quot;냐냐뱡뱡&quot;
print(person) # {&quot;name&quot; : &quot;babo&quot;, &quot;age&quot; : 22. &quot;아가소리&quot; : &quot;냐냐뱡뱡&quot;}


#Dictionary의 원소(key, value) 삭제
person = {&quot;name&quot; : &quot;babo&quot;, &quot;age&quot; : 22}
person[&quot;아가소리&quot;] =
&quot;냐냐뱡뱡&quot;
del person[&quot;age&quot;]
print(person) # {&quot;name&quot; : &quot;babo&quot;,&quot;아가소리&quot; : &quot;냐냐뱡뱡&quot;}


#Keys() -&gt; dict의 key 들만 추출이 가능함
person =  {
&quot;name&quot; : &quot;babo&quot;, 
&quot;age&quot; : 22,
&quot;아가소리&quot; =&quot;냐냐뱡뱡&quot;
}
print(person.keys()) # dict_keys([&#39;name&#39;, &#39;age&#39;, &#39;mail&#39;]


#value() -&gt; dict의 value 들만 추출이 가능함
person =  {
&quot;name&quot; : &quot;babo&quot;, 
&quot;age&quot; : 22,
&quot;아가소리&quot; =&quot;냐냐뱡뱡&quot;
}
print(person. value()) # dict_value([&#39;babo&#39;, &#39;22&#39;, &#39;냐냐뱡뱡&#39;])


#items() -&gt; dict의 key, valuse를 같이 추출 가능
person =  {
&quot;name&quot; : &quot;babo&quot;, 
&quot;age&quot; : 22,
&quot;아가소리&quot; =&quot;냐냐뱡뱡&quot;
}
print(person. items()) #([(&#39;name&#39;, &#39;babo), (&#39;age&#39;, 22), (&#39;아가소리&#39;, &#39;냐냐뱡뱡&#39;)]


#dictionary의 특징
#keys는 변할 수 없는 자료형이여야 함


#variable(변수)
#변수 이름[숫자, 알파벳, 언더바(_) 사용 가능] = 자료
#숫자로 시작하면 안됨
#숫자로만 구성되면 안됨
#Python 문법에서 사용하는 예약어(Print) 사용금지
#공백 문자, 연산자(+,-,%,*)사용 금지

a = 3 #a란 변수안에 3이있다
a == 3 # a가 3과 같은지 비교한다 -&gt; 같으면 True 틀리면 False

num = 10 #숫자
name = &quot;zed&quot; #문자열
grade = [&#39;A&#39;, &#39;B&#39;, &#39;C+&#39;] #리스트

#연산자
#[+] = 더하기 / 문자열에서[+]는 이어붙이기 
print(&quot;안녕&quot; + &quot;하세요&quot;) # 안녕하세요
#[-] = 빼기
#[*] = 곱하기 / [*]는 반복하기
print(&quot;안녕&quot; * 3) # 안녕안녕안녕
#[/]= 나누기
#[//] = 몫
#[%] = 나머지
#[**] = 제곱


#인덱스(index)
#문자열과 리스트 자료형은 여러 원소로 이루어져있고, 각각의 위치를 0부터 순서를 매길수있음
#&quot;Ready&quot; = 01234 
#[2,4,6,8] = 0123
#&quot;Hi! elice!&quot; = 0123456789 #문자열은 공백문자도 인덱스에 포함됨

# index를 이요해 문자열 또는 리스트의 특정 위치 원소를 가져오는 방법
# alpha = &quot;Ready&quot;
print(alpha[1])

#index를 이용해서 리스트 또는 문자열의 일부분을 가져오는 방법
beta = [2, 4, 6, 8, 10, 12, 14]
print(beta[2:5]) # [6, 8, 10]







</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[엘리스QA트랙] 테스트]]></title>
            <link>https://velog.io/@smilefe-_-/%EC%97%98%EB%A6%AC%EC%8A%A4QA%ED%8A%B8%EB%9E%99-%ED%85%8C%EC%8A%A4%ED%8A%B8</link>
            <guid>https://velog.io/@smilefe-_-/%EC%97%98%EB%A6%AC%EC%8A%A4QA%ED%8A%B8%EB%9E%99-%ED%85%8C%EC%8A%A4%ED%8A%B8</guid>
            <pubDate>Sat, 15 Feb 2025 07:51:00 GMT</pubDate>
            <description><![CDATA[<p><strong>1. 테스트자동화</strong></p>
<blockquote>
<ol>
<li>사람이 직접 하지 않고 컴퓨터가 자동으로 테스트 하는것</li>
<li>버튼 클릭, 로그인, 데이터 입력 등 반복 작업을 자동으로 수행</li>
<li>더 빠르게 정확하게 테스트가 가능함</li>
</ol>
</blockquote>
<p><strong>2. 테스트 자동화의 단점</strong></p>
<blockquote>
<ol>
<li>초기 설정이 어렵다 : 처음에는 코드를 작성해야 해서 시간이 걸림</li>
<li>유지보수가 필요하다: 프로그램이 바뀌면 테스트도 업데이트를 해야함</li>
<li>모든 테스트를 자동화 할수는 없다: 사용자 경험 테스트는 여전히 사람이 해야함</li>
</ol>
</blockquote>
<p><strong>3. 주요 테스트 자동화 유형</strong></p>
<blockquote>
<ol>
<li>단위 테스트 (Unit Test)
: 코드 한 조각이 제대로 작동하는지 확인하는 테스트</li>
<li>통합 테스트 (Integration Test)
: 여러 기능이 함께 작동하는지 확인하는 테스트</li>
<li>UI 테스트
: 실제 화면에서 버튼, 입력창 등이 잘 동작하는지 확인하는 테스트</li>
<li>API 테스트
: 서버와 데이터가 올바르게 주고 받아지는지 확인하는 테스트</li>
</ol>
</blockquote>
<p><strong>4. 대표적인 테스트 자동화 도구</strong>
<img src="https://velog.velcdn.com/images/smilefe-_-/post/09fb5759-53dc-431b-a9e2-5af9ea0e8523/image.png" alt=""></p>
<p><strong>5. 단위 테스트</strong></p>
<blockquote>
<ol>
<li>코드의 가장 작은 단위(함수, 메서드)를 테스트</li>
<li>개발자가 기능을 만들 때 바로 확인하는 테스트</li>
<li>빠르게 쉽게 실행 가능</li>
</ol>
</blockquote>
<p><strong>6. 단위 테스트가 필요한 경우</strong></p>
<blockquote>
<ol>
<li>새로운 기능을 추가할 때</li>
<li>기존 기능이 고장 나지 않았는지 확인할 때</li>
<li>반복적인 작업을 자동화하여 실수 방지</li>
<li>빠른 피드백으로 개발 생산성 향상</li>
<li>배포 후 심각한 오류 발생 가능성 최소화</li>
</ol>
</blockquote>
<p><strong>7. 성공적인 테스트 자동화 적용 방법</strong></p>
<blockquote>
<ol>
<li>반복적인 테스트부터 자동화하기</li>
<li>적절한 도구 선택하기</li>
<li>테스트 자동화 유지보수 전략 수립</li>
</ol>
</blockquote>
<p><strong>8. 자동화 할 수 있는 테스트 유형</strong></p>
<blockquote>
<ol>
<li>반복적으로 실행해야 하는 테스트</li>
<li>명확한 입력과 출력을 가진 테스트</li>
<li>실행 속도가 중요한 테스트(단위, API 테스트)</li>
</ol>
</blockquote>
<p><strong>9. 자동화가 어려운 테스트 유형</strong></p>
<blockquote>
<ol>
<li>UI가 자주 변경되는 테스트</li>
<li>사용자의 감각적 평가</li>
<li>실시간 데이터가 필요한 테스트</li>
</ol>
</blockquote>
<p><strong>10. UI 테스트 자동화의 유지보수 문제</strong></p>
<blockquote>
<ol>
<li>UI 요소가 변경되면 테스트 코드도 함께 수정해야 함</li>
<li>화면 구조 변경 시 테스트가 실패할 가능성이 높음</li>
</ol>
</blockquote>
<p><strong>11. API 테스트 자동화의 어려움</strong></p>
<blockquote>
<ol>
<li>외부 API 응답이 변할 가능성이 있음</li>
<li>네트워크 상태나 서버 상태에 따라 테스트 결과가 달라질 수있음</li>
</ol>
</blockquote>
<p><strong>12. 테스트 자동화 유지보수의 핵심요소</strong></p>
<blockquote>
<ol>
<li>테스트 환경을 일정하게 유지</li>
<li>테스트 데이터를 관리하여 예측 가능한 상태 유지</li>
<li>테스트 실행 속도를 최적화하여 불필요한 지연 방지</li>
<li>테스트 실패 시 자동 로그 기록하여 원인 분석 가능하도록 설정</li>
</ol>
</blockquote>
<p><strong>13. 코드 변경이 잦을 때 발생하는 문제</strong></p>
<blockquote>
<ol>
<li>기존 테스트 코드가 깨질 가능성이 높음</li>
<li>유지 보수 비용증가</li>
<li>코드 수정 후 테스트 결과가 일관되지 않을 수 있음</li>
</ol>
</blockquote>
<p><strong>14. 테스트 자동화의 도입 이유</strong></p>
<blockquote>
<ol>
<li>반복적인 테스트 감소 -&gt; QA팀의 업무 효율성 증가</li>
<li>빠른 피드백 제공 -&gt; 개발 속도 증가 및 품질 유지</li>
<li>대규모 테스트 수행가능 -&gt; 다양한 환경에서 테스트 실행 가능</li>
</ol>
</blockquote>
<p><strong>15. KPI란?</strong></p>
<blockquote>
<ol>
<li>핵심 성과 지표, 즉 목표 달성을 측정하는 기준</li>
<li>성과를 수치화 하여 자동화 테스트의 효과를 평가할 수 있음</li>
</ol>
</blockquote>
<p><strong>16. 테스트 자동화에서 KPI의 역할</strong></p>
<blockquote>
<ol>
<li>자동화 도입 후 성과를 측정하는 기준 제공</li>
<li>테스트의 실행 속도 및 오류 감지율 평가 가능</li>
<li>불필요한 테스트 자동화를 방지하여 효율적인 운영 가능</li>
</ol>
</blockquote>
<p><strong>17. 자동화 테스트 도입 전 필수 체크 항목</strong></p>
<blockquote>
<ol>
<li>자동화할 테스트 유형 결정 -&gt; 단위,UI,API,성능 테스트 등</li>
<li>유지보수 비용 고려 -&gt; 유지보수 가능성 및 인력 확보 여부</li>
<li>팀 내 기술 역량 평가 -&gt; 자동화 도구 활용 능력 점검</li>
<li>테스트 환경 표준화 -&gt; CI, CD 연계 가능성 확인</li>
<li>적절한 자동화 도구 선택 -&gt; 프로젝트 요구사항과 도구의 적합성 비교</li>
</ol>
</blockquote>
<p><strong>18. 환경 구성 자동화</strong></p>
<blockquote>
<ol>
<li>테스트 환경을 코드로 정의하여 자동으로 구축하는 방식</li>
<li>서버, 네트워크, 애플리케이션 설정을 자동화하여 일관성 유지</li>
</ol>
</blockquote>
<p>*<em>19. Mock 데이터 *</em></p>
<blockquote>
<ol>
<li>테스트 할 때 실제 데이터를 사용하지 않고 가짜 데이터를 활용하는 방법</li>
<li>운영 데이터를 직접 사용할 수 없는 경우 대체할 수있음</li>
<li>API 테스트,UI 테스트, 성능 테스트 등 다양한 환경에서 사용</li>
</ol>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[[엘리스QA트랙]  관리툴에 대하여]]></title>
            <link>https://velog.io/@smilefe-_-/%EC%97%98%EB%A6%AC%EC%8A%A4QA%ED%8A%B8%EB%9E%99</link>
            <guid>https://velog.io/@smilefe-_-/%EC%97%98%EB%A6%AC%EC%8A%A4QA%ED%8A%B8%EB%9E%99</guid>
            <pubDate>Tue, 11 Feb 2025 10:47:02 GMT</pubDate>
            <description><![CDATA[<p><strong>1. 관리툴의 핵심기능</strong></p>
<blockquote>
<ol>
<li>작업 흐름 추적 -&gt; 진행 중 / 완료 / 보류 상태 관리</li>
<li>이슈 관리 -&gt; 버그 발생 -&gt; 할당 -&gt; 수정 -&gt; 확인 -&gt; 해결</li>
<li>팀 협업 지원 -&gt; 댓글. 태그 기능으로 개발자와 QA 간 소통</li>
</ol>
</blockquote>
<p><strong>2. 관리툴마다 다른 용도</strong></p>
<blockquote>
<ol>
<li>Jira : 버그 및 이슈 트래킹</li>
<li>Notion : 문서 정리 및 협업</li>
<li>Trello : 간단한 작업 보드</li>
<li>TestRail : QA 테스트 케이스 관리</li>
</ol>
</blockquote>
<p><strong>3. 인원에 따라 다른 툴 사용법</strong></p>
<blockquote>
<ol>
<li>1~5명의 팀 : Trello, Notion</li>
<li>5 ~ 20명의 팀 : Jira, Notion</li>
<li>20명 이상의 대기업 : Jira, TestRail</li>
</ol>
</blockquote>
<p><strong>4. 관리 툴의 비용 비교</strong>
<img src="https://velog.velcdn.com/images/smilefe-_-/post/aa6813e9-cb1f-43bf-a634-641837ed92ab/image.png" alt=""></p>
<p><strong>5. Jira를 사용하는 이유</strong></p>
<blockquote>
<ol>
<li>프로젝트 관리 및 버그 추적 용이</li>
<li>애자일 및 스크럼 환경에서 널리 사용됨</li>
<li>소프트웨어 개발 뿐 아니라 다양한 프로젝트 관리에도 활용가능</li>
</ol>
</blockquote>
<p><strong>6. Jira의 주요기능</strong></p>
<ul>
<li>프로젝트 관리 : 여러 개의 이슈를 모아 하나의 프로젝트로 관리</li>
<li>이슈 관리 : 이슈 생성, 할당 및 상태 변경</li>
<li>보고서 및 대시보드 : 진행 상황을 시각적으로 분석</li>
<li>스크럼 및 칸반 보드 : 애자일 방식으로 업무를 관리</li>
</ul>
<p><strong>7. 워크 플로우</strong></p>
<blockquote>
<ol>
<li>작업이 어떤 단계를 거쳐 진행되는지를 정의한 프로세스</li>
<li>기본 워크 플로우 : To Do -&gt; In Progress -&gt; Done</li>
</ol>
</blockquote>
<p><strong>8.  버그 리포팅 작성방법</strong></p>
<blockquote>
<ol>
<li>제목 : 버그의 요약</li>
<li>설명 : 버그가 발생한 환경과 상세 내용</li>
<li>재현 단계 : 버그가 발생하는 과정을 순서대로 정리</li>
<li>기대 결과 vs 실제 결과 : 원래 예상된 동작과 실제 동작 비교</li>
<li>스크린샷 첨부 : 시각적 자료 제공</li>
</ol>
</blockquote>
<p><strong>9. Jira의 커스텀 필드</strong></p>
<blockquote>
<ol>
<li>Jira에서 기본 제공되는 필드 외에 추가로 필요한 정보를 입력할 수 있는 기능</li>
<li>팀의 필요에 맞게 설정 가능
<img src="https://velog.velcdn.com/images/smilefe-_-/post/de2141a4-8cdf-4b4e-ac2e-813b8e0489bd/image.png" alt=""></li>
</ol>
</blockquote>
<p><strong>10. Notion</strong></p>
<blockquote>
<ol>
<li>노트, 문서, 데이터 베이스, 프로젝트 관리 기능을 모드 제공하는 공간</li>
<li>개인부터 팀 협업까지 다양한 용도로 사용 가능</li>
<li>템플릿을 활용해 쉽게 업무 프로세스 구축</li>
</ol>
</blockquote>
<p><strong>11. Notion이 다른 툴과 다른 점</strong></p>
<blockquote>
<ol>
<li>문서작성 + 테스트 관리 + 협업 도구를 하나로 통합</li>
<li>사용자가 원하는 형태로 커스텀마이징 가능</li>
<li>간단한 UI로 배우기 쉽지만 강력한 기능 제공</li>
</ol>
</blockquote>
<p><strong>12. Notion으로 할수 있는 3가지 핵심 기능</strong></p>
<blockquote>
<ol>
<li>문서 작성 : 자유롭게 텍스트 및 멀티미디어 삽입</li>
<li>테스트 관리 : 칸반 보드를 활용한 프로젝트 관리</li>
<li>데이터베이스 활용 : 버그 리포트 및 QA 문서 정리</li>
</ol>
</blockquote>
<p><strong>13. 칸반 보드</strong></p>
<blockquote>
<ol>
<li>시각적으로 작업 흐름을 관리하는 보드 형태의 시스템</li>
<li>Jira, Trello 등에서도 사용되는 방식</li>
</ol>
</blockquote>
<p><strong>14. Notion에서 협업하는 방법</strong></p>
<blockquote>
<ol>
<li>문서 작성 및 실시간 공동 편집 가능</li>
<li>댓글 기능을 활용한 피드백 제공</li>
<li>특정 사용자에게 작업 할당 가능</li>
</ol>
</blockquote>
<p><strong>15. To-Do lIST 기능</strong></p>
<blockquote>
<ol>
<li>체크박스를 활용해 할 일을 쉽게 정리할 수 있는 기능</li>
<li>작업 완료 시 체크하여 진행 상황을 빠르게 확인 가능</li>
</ol>
</blockquote>
<p><strong>16. 캘린더 기능</strong></p>
<blockquote>
<ol>
<li>특정 날짜에 해야 할 일이나 마감 기한을 설정 할 수있음</li>
<li>일정 기반으로 작업을 계획하고 관리하는 기능</li>
</ol>
</blockquote>
<p><strong>17. 작업 흐름</strong></p>
<blockquote>
<ol>
<li>작업이 시작될 때 부터 완료까지 진행되는 과정</li>
<li>업무의 효율성을 높이고, 진행 상태를 명확하게 관리하는 역할</li>
<li>버그 수정, 개발, QA 등 모든 프로세스에 필수</li>
</ol>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[[엘리스 QA 트랙] 버그]]></title>
            <link>https://velog.io/@smilefe-_-/%EC%97%98%EB%A6%AC%EC%8A%A4-QA-%ED%8A%B8%EB%9E%99-%EB%B2%84%EA%B7%B8</link>
            <guid>https://velog.io/@smilefe-_-/%EC%97%98%EB%A6%AC%EC%8A%A4-QA-%ED%8A%B8%EB%9E%99-%EB%B2%84%EA%B7%B8</guid>
            <pubDate>Sun, 09 Feb 2025 01:44:07 GMT</pubDate>
            <description><![CDATA[<p><strong>1. 버그</strong>
: 소프트웨어가 의도와 다르게 동작하거나 오류를 일으키는 현상</p>
<p><strong>2. 오류(Error)</strong>
: 코드 실행 중 발생하는 문제</p>
<p><strong>3. 결함(Defect)</strong>
: 코드의 설계나 논리적 문제  </p>
<p><strong>4. 버그 발생의 주요 원인</strong></p>
<blockquote>
<ol>
<li>코딩 실수: 사람이 작성한 코드는 종종 작은 실수로 인해 큰 문제를 발생시킴</li>
<li>요구사항 미스매치 : 요구사항이 정확히 전달되지 않으면 버그가 발생</li>
<li>복잡한 시스템 : 하나의 테이블 변경이 여러 다른 테이블에 영향을 미쳐 오류 발생</li>
</ol>
</blockquote>
<p><img src="https://velog.velcdn.com/images/smilefe-_-/post/0e4628e6-12fd-4e30-9055-4b54c9e9e5a0/image.png" alt=""></p>
<p><strong>5. 버그가 만드는 사용자 불만</strong></p>
<blockquote>
<ol>
<li>사용자는 시스템이 안정적이고 기대에 부합하길 원함</li>
<li>사용자 기대를 충족하지 못하게 만들어 불만을 유발함</li>
</ol>
</blockquote>
<p><strong>6. 버그로 인한 매출 손실</strong></p>
<blockquote>
<ul>
<li>결제 오류, 상품 정보 오류 등은 직접적으로 매출 손실로 이어집니다</li>
</ul>
</blockquote>
<p><strong>7. 브랜드 신뢰의 하락</strong></p>
<ul>
<li>계발 단계 버그 발생</li>
<li>부정적 리뷰 증가</li>
<li>신규 고객의 감소</li>
</ul>
<p><strong>8. 버그는 연쇄적으로 문제를 일으킨다</strong></p>
<blockquote>
<ul>
<li>하나의 버그가 다른 문제를 유발하며, 시스템 전반에 영향을 미침</li>
<li>해결을 위한 비용과 시간이 필요함</li>
</ul>
</blockquote>
<p><strong>9. 사용자의 만족도를 보장하는 QA</strong></p>
<blockquote>
<ol>
<li>QA는 사용자가 제품을 문제 없이 사용할 수 있도록 하는 것</li>
</ol>
</blockquote>
<p><strong>10. QA는 제품 개발의 방향을 제시한다</strong></p>
<blockquote>
<ol>
<li>QA는 테스트 결과를 통해 프로세스를 개선</li>
<li>반복적인 실수를 줄이고 개발 효율성을 높힘</li>
</ol>
</blockquote>
<p><strong>11. QA는 조직의 연결고리</strong></p>
<blockquote>
<ol>
<li>QA는 개발팀과 운영팀 간의 가교 역할을 합니다</li>
<li>문제를 분석하고 해결책을 제안하며 모든 팀이 같은 목표를 향해 협력하도록 조력자의 역할을 한다</li>
</ol>
</blockquote>
<p><strong>12. QA의 주요 역할</strong></p>
<blockquote>
<ol>
<li>품질 보증 : QA는 제품이 안정적으로 작동하도록 품질을 보증합니다</li>
</ol>
</blockquote>
<blockquote>
<ol start="2">
<li>문제 탐지 : QA는 다양한 테스트를 통해 SW의 문제를 탐지합니다</li>
</ol>
</blockquote>
<blockquote>
<ol start="3">
<li>테스트 설계 : 효율적인 테스트 설계는 QA의 중요한 업무중 하나입니다
<img src="https://velog.velcdn.com/images/smilefe-_-/post/4694941f-7bae-49c6-8bfd-0be9c8e44d44/image.png" alt=""></li>
</ol>
</blockquote>
<blockquote>
<ol start="4">
<li>요구 사항 전달 : QA는 명확한 요구사항을 개발팀에게 전달합니다</li>
</ol>
</blockquote>
<blockquote>
<ol start="5">
<li>테스트 결과 문서화 : QA는 테스트 결과를 문서화하여 개발팀과 공유합니다</li>
</ol>
</blockquote>
<blockquote>
<ol start="6">
<li>개발프로세스 개선 : QA는 반복적으로 발생하는 문제를 분석하여, 개발 프로세스를 개선합니다</li>
</ol>
</blockquote>
<blockquote>
<ol start="7">
<li>사용자 관점 대변 : QA는 사용자 관점에서 문제를 발견하고 해결합니다</li>
</ol>
</blockquote>
<blockquote>
<ol start="8">
<li>버그 예방 : QA는 사전에 문제를 발견하여, 출시 후 발생할 문제를 예방합니다</li>
</ol>
</blockquote>
<p>*<em>13. 버그 리포팅 *</em>
: 문제를 개발팀에게 전달하는 핵심 과정
<img src="https://velog.velcdn.com/images/smilefe-_-/post/22648495-984e-4b14-8442-ab14426c9b3c/image.png" alt=""></p>
<p><strong>14. 잘못된 리포팅으로 인한 문제</strong></p>
<blockquote>
<ol>
<li>문제 해결 지연</li>
<li>개발팀의 불필요한 시간 낭비</li>
<li>추가 비용 발생</li>
</ol>
</blockquote>
<p><strong>15. 나쁜 리포트, 문제를 더 복잡하게 만들 수 있음</strong></p>
<blockquote>
<ol>
<li>불명확한 제목 : 문제를 제대로 요약하지 못함</li>
<li>재현 단계 누락 : 개발자가 문제를 재현할 수 없음</li>
<li>기대 결과와 실제 결과 구분이 없음</li>
<li>스크린샨 등 추가 자료 누락
<img src="https://velog.velcdn.com/images/smilefe-_-/post/5d748dd6-7ac5-4ef1-b0ff-2cc3aa30d144/image.png" alt=""></li>
</ol>
</blockquote>
<p><strong>16. 기능 버그의 유형</strong></p>
<blockquote>
<ol>
<li>입력 오류</li>
</ol>
<ul>
<li>사용자 입력이 올바르게 처리되지 않음</li>
</ul>
</blockquote>
<blockquote>
<ol start="2">
<li>프로세스 오류</li>
</ol>
<ul>
<li>여러 단계로 이루어진 기능이 중간에서 끊김</li>
</ul>
</blockquote>
<blockquote>
<ol start="3">
<li>계산 오류</li>
</ol>
<ul>
<li>SW가 수치를 잘못 계산하여 잘못된 결과를 반환하는 문제</li>
<li>주로 금융, 통계, 이자 계산, 할인 적용 등에서 치명적</li>
</ul>
</blockquote>
<blockquote>
<ol start="4">
<li>UI/UX 버그</li>
</ol>
<ul>
<li>SW의  화면 구성(UI)과 사용자 경험 (UX)에 영향을 주는 문제</li>
<li>기능에는 문제가 없지만, 사용자가 불편함을 느낌</li>
</ul>
</blockquote>
<blockquote>
<p>4-1. UI/UX 버그는 왜 생길까?</p>
<ol>
<li>반응형 디자인 오류 : 모바일/태블릿/PC 화면 크기에 따라 달라짐</li>
<li>사용자 테스트 부족 : 실제 사용자가 불편한지 확인하지 않음</li>
<li>디자인 가이드 미준수 : 버튼 크기, 글자 크기 등의 표준을 따르지않음</li>
</ol>
</blockquote>
<p><strong>17. 성능 버그의 유형</strong></p>
<blockquote>
<ol>
<li>속도 지연 </li>
</ol>
<ul>
<li>사용자가 버튼을 클릭했을 떄 응답이 느리거나 멈추는현상</li>
<li>주로 서버, DB, 코드  최적화 부족 등이 원인</li>
</ul>
</blockquote>
<blockquote>
<ol start="2">
<li>서버 과부하</li>
</ol>
<ul>
<li>사용자가 많아질수록 응답 속도가 느려지거나 서버가 다운되는 현상</li>
<li>트래픽 증가 시 서버가 처리할 수 있는 한계를 초과할 때 발생</li>
</ul>
</blockquote>
<p><strong>18. 성능 테스트</strong></p>
<blockquote>
<ol>
<li>SW가 다양한 환경에서 얼마나 안정적으로 실행되는지 평가하는 과정</li>
<li>응답 속도, 처리 속도, 메모리 사용량 등을 테스트하여 성능 버그를 찾아냄</li>
</ol>
</blockquote>
<p><strong>19. 대표적인 성능 테스트 유형</strong></p>
<blockquote>
<ol>
<li>부하 테스트 : 동시 접속 시 속도가 어떻게 변하는지 확인</li>
<li>스트레스 테스트 : 극한의 조건에서도 시스템이 견딜 수 있는지 확인</li>
<li>반응 속도 테스트 : 사용자의 요청에 대한 응답 시간을 측정</li>
</ol>
</blockquote>
<p><strong>20. 코드 최적화를 통한 성능 개선 방법</strong></p>
<blockquote>
<ol>
<li>불필요한 연산 줄이기 -&gt; 코드에서 반복되는 계산 최소화</li>
<li>DB 쿼리 최적화 -&gt; 불필요한 호출 제거</li>
<li>이미지 및 리소스 최적화 -&gt; 웹 페이지 로딩 속도를 빠르게 하기 위해 압축된 이미지 사용</li>
</ol>
</blockquote>
<p><strong>21. 성능 버그 예방</strong></p>
<blockquote>
<ol>
<li>정기적인 성능 모니터링 -&gt; 서버 부하, 응답 속도 체크</li>
<li>트래픽 증가 대비 서버 확장 준비 -&gt; 클라우드 환경에서 자동 확장 적용</li>
<li>배포 전 성능 테스트 필수 진행 -&gt; 실사용 환경과 유사한 조건에서 성능 검증</li>
</ol>
</blockquote>
<p><strong>22. 보안 버그</strong></p>
<blockquote>
<ol>
<li>시스템이 사용자의 정보나 데이터 보호에 실패하는 문제</li>
<li>권한 없는 접근, 데이터 유출, 악성 코드 실행 등이 포함됨</li>
</ol>
</blockquote>
<p><strong>23. 데이터 암호화 오류</strong></p>
<blockquote>
<ol>
<li>중요한 정보가 암호화되지 않고 저장되는 문제</li>
</ol>
</blockquote>
<p><strong>24. XSS(크로스 사이트 스크립팅)</strong></p>
<blockquote>
<ol>
<li>공격자가 악성 스크립트를 웹 사이트에 삽입하여 사용자 정보 탈취</li>
<li>로그인 정보 유출, 피싱 공격이 가능</li>
</ol>
</blockquote>
<p><strong>25. CSRF(사이트 간 요청 위조)</strong></p>
<blockquote>
<ol>
<li>사용자가 모르는 사이 공격자가 특정 요청을 실행하도록 유도</li>
<li>비밀번호 변경, 계좌 이체 등 무단 요청 실행</li>
</ol>
</blockquote>
<p><strong>26. SQL Injection(인젝션)공격</strong></p>
<blockquote>
<ol>
<li>공격자가 입력창을 이용해 DB에 직접 명령어를 입력하는 방식</li>
<li>데이터 유출, 관리자 계정 탈취가 가능</li>
</ol>
</blockquote>
<p><strong>27. 패킷 스니핑(Packet Sniffing)</strong></p>
<blockquote>
<ol>
<li>해커가 네트워크에서 주고받는 데이터를 몰래 훔쳐보는 공격</li>
<li>로그인 정보, 신용카드 번호가 탈취될 수 있음</li>
</ol>
</blockquote>
<p><strong>28. 보안 사고 발생 시 대응</strong></p>
<blockquote>
<ol>
<li>사고 감지 및 초기 대응 -&gt; 이상 징후 감지 후 즉시 차단</li>
<li>원인 분석 및 복구 -&gt; 해킹 경로 및 피해 분석 후 패치 적용</li>
<li>보안 강화 및 재발 방지 대책 마련 -&gt; 추가 보안 정책 적용</li>
<li>표준 기술 사용 -&gt; HTML, CSS, JavaScript 최신 표준을 준수</li>
<li>반응형 디자인 적용 -&gt; 다양한 해상도에서 UI가 정상적으로 보이도록 개발</li>
<li>OS/브라우저별 예외 처리 -&gt; 환경에 따라 다르게 동작해야 하는 부분을 고려</li>
</ol>
</blockquote>
<p><strong>29. 완벽한 테스트가 불가능 한 이유</strong></p>
<blockquote>
<ol>
<li>테스트 환경과 실제 환경의 차이</li>
<li>사용자 데이터 및 트래픽 증가</li>
<li>예기지 못한 사용자의 행동</li>
</ol>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[[엘리스QA트랙]SW아키텍처]]></title>
            <link>https://velog.io/@smilefe-_-/%EC%97%98%EB%A6%AC%EC%8A%A4QA%ED%8A%B8%EB%9E%99SW%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98</link>
            <guid>https://velog.io/@smilefe-_-/%EC%97%98%EB%A6%AC%EC%8A%A4QA%ED%8A%B8%EB%9E%99SW%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98</guid>
            <pubDate>Tue, 04 Feb 2025 12:21:41 GMT</pubDate>
            <description><![CDATA[<p><strong>1. 소프트웨어 아키텍처</strong></p>
<blockquote>
<ol>
<li>시스템의 구성 요소와 그들 간의 관계 및 상호작용을 정의하는 구조</li>
<li>SW시스템의 품질을 유지하고 확작성, 안정성, 보안성을 확보</li>
</ol>
</blockquote>
<p><strong>2. 소프트웨어 아키텍처의 중요성</strong></p>
<blockquote>
<ul>
<li>시스템의 복잡도를 관리 및 유지보수 비용 절감</li>
<li>다양한 팀 간의 협업을 효과적으로 지원</li>
<li>성능, 확장성, 보안성을 보장</li>
</ul>
</blockquote>
<p><strong>3. 앱 아키텍처의 주요 구성 요소</strong>
<img src="https://velog.velcdn.com/images/smilefe-_-/post/370ad4b7-0901-4218-ad95-46f136f0b611/image.png" alt=""></p>
<p><strong>4. 각 구성 요소의 상호 작용</strong>
<img src="https://velog.velcdn.com/images/smilefe-_-/post/08828c50-d602-4d67-87aa-e56c87937f9a/image.png" alt=""></p>
<p><strong>5. 프론트엔드의 역할</strong></p>
<blockquote>
<ul>
<li>사용자 인터페이스 제공</li>
<li>사용자 입력 처리 및 시각적인 콘텐츠 출력</li>
<li>API 호출을 통해 백엔드와 데이터 통신</li>
</ul>
</blockquote>
<p><strong>6. 데이터 베이스 설계원칙</strong></p>
<blockquote>
<ol>
<li>정규화 : 중복 데이터를 최소화하여 데이터 무결성 확보</li>
<li>인덱스 최적화 : 검색 속도를 높이기 위한 인덱스 설정</li>
<li>보안 : 민감한 데이터를 암호화하고 접근 권한을 관리</li>
</ol>
</blockquote>
<p><strong>7. 클라이언트 - 서버 모델의 장단점</strong>
<img src="https://velog.velcdn.com/images/smilefe-_-/post/0d9f0cb2-bab0-4819-803c-c51b85a2c56d/image.png" alt=""></p>
<p><strong>8. 클라이언트란 무엇인가?</strong></p>
<blockquote>
<p>클라이언트 
: 서버에 요청을 보내고, 응답을 받아 사용자와 상호작용하는 장치 또는 애플리케이션</p>
</blockquote>
<blockquote>
<p>주요역할</p>
<ul>
<li>사용자 인터페이스 제공</li>
<li>사용자 입력 처리 및 시각적인 콘텐츠 출력</li>
<li>API 호출을 통해 백엔드와 데이터 통신</li>
</ul>
</blockquote>
<p><strong>9. 서버란 무엇인가?</strong></p>
<blockquote>
<p>서버
: 클라이언트의 요청을 처리하고 데이터 연산 및 저장을 담당하는 중앙 컴퓨터 또는 시스템</p>
</blockquote>
<blockquote>
<p>주요역할</p>
<ul>
<li>클라이언트의 요청 처리 및 응답 생성</li>
<li>데이터 베이스와 상호작용</li>
<li>비즈니스 로직 실행 및 데이터 검증</li>
</ul>
</blockquote>
<p><strong>10. 서버의 기술적 구성 요소</strong>
<img src="https://velog.velcdn.com/images/smilefe-_-/post/81d080e2-9a27-4dce-9a32-d6a888f784c7/image.png" alt=""></p>
<p><strong>11. 데이터 통신에서의 보안과 최적화</strong></p>
<blockquote>
<p>보안
: SSL/TLS를 사용한 데이터 암호화
: 인증 토큰(JWT, OAuth) 활용</p>
</blockquote>
<blockquote>
<p>최적화
: 데이터 압축(Gzip)으로 네트워크 사용량 감소
: CDN(Content Delivery Network)으로 데이터 전송 속도 향상
: 캐싱을 통해 반복 요청 최소화</p>
</blockquote>
<p><strong>12. RESTful API란 무엇인가?</strong></p>
<blockquote>
<p>: Representational State Treansfer 원칙을 준수하는 API</p>
</blockquote>
<blockquote>
<ol>
<li>무상태성 : 서버가 클라이언트 상태를 저장하지않음</li>
<li>리소스 기반 설계: URL로 리소스를 식별
.3. HTTP 메서드 활용 : GET, POST, PUT, DELETE</li>
</ol>
</blockquote>
<p><strong>13. API응답 구조</strong>
<img src="https://velog.velcdn.com/images/smilefe-_-/post/ddc948e1-f178-408e-baa9-84d7f9abb27c/image.png" alt=""></p>
<p><strong>14. 데이터 포맷의 종류와 특징</strong></p>
<blockquote>
<p>JASON</p>
<ul>
<li>경형 데이터 교환 포맷</li>
<li>사람이 읽기 쉬우며 대부분의 언어와 호환</li>
<li>가볍고 처리 속도가 빠름</li>
</ul>
</blockquote>
<blockquote>
<p>XML</p>
<ul>
<li>데이터 저장 및 전송에 사용</li>
<li>태그 기반 구조로 유연성이 높음</li>
<li>복잡한 데이터 표현에 적합</li>
</ul>
</blockquote>
<p><strong>15. API 인증의 필요성</strong>
<img src="https://velog.velcdn.com/images/smilefe-_-/post/234951ec-b190-487a-97cb-11a5bb1553bd/image.png" alt=""></p>
<p><strong>16. 고급 인증 방식</strong></p>
<blockquote>
<p>JWT: 클라이언트가 서버와 통신할 때 인증 상태를 유지
OAuth 2.0 : 엑세스 토큰을 통해 인증 및 권한 부여 인증과 권한을 분리하여 보안강화</p>
</blockquote>
<p><strong>17. 사용자 인터페이스(UI)란 무엇인가?</strong></p>
<blockquote>
<p>UI(User Interface)
: 사용자가 앱과 상호작용하는 시각적, 물리적 구성 요소</p>
</blockquote>
<ol>
<li>사용자가 앱의 기능을 쉽게 접근하고 이해하도록 설계</li>
<li>복잡한 비즈니스 로직이나 데이터 흐름을 추상화하여 사용자 친화적으로 제공</li>
</ol>
<p><strong>18. UI 설계의 원칙</strong></p>
<blockquote>
<ol>
<li>일관성 : 버튼, 메뉴 등 디자인 요소가 일관되어야함</li>
<li>직관성: 사용자사 쉽게 학습하고 사용할 수 있어야함</li>
<li>응답성 : 사용자 입력에 빠르게 반응</li>
<li>접근성 : 다양한 사용자(장애인)가 쉽게 사용가능해야함</li>
</ol>
</blockquote>
<p><strong>19. 데이터 저장소 계층이란?</strong></p>
<blockquote>
<p>: 데이터를 저장하고 관리하는 계층으로, DB와 연결됨</p>
<ol>
<li>데이터를 안전하게 저장</li>
<li>빠르고 효율적인 데이터 검색</li>
<li>데이터 일관성 및 무결성 유지</li>
</ol>
</blockquote>
<p><strong>20. 데이터베이스의 주요 구성 요소</strong>
<img src="https://velog.velcdn.com/images/smilefe-_-/post/8fb5cb28-2c34-4a3e-b494-4fc9207aa4da/image.png" alt=""></p>
<p><strong>21. 관계형 데이터 베이스</strong></p>
<blockquote>
<p>: 테이블 간의 관계를 기반으로 데이터를 관리</p>
<ol>
<li>데이터의 정형화된 구조</li>
<li>관계를 통해 데이터 일관성과 무결성을 유지</li>
</ol>
</blockquote>
<p><strong>22. 비관계 데이터 베이스</strong></p>
<blockquote>
<p>: 테이블 구조를 따르지 않고 데이터를 유연하게 저장</p>
<ol>
<li>비정형 데이터 처리에 유리</li>
<li>스키마가 필요 없으며 확장성이 높음</li>
</ol>
</blockquote>
<p><strong>23. 데이터 모델링</strong></p>
<blockquote>
<p>: 데이터베이스 구조를 시각적으로 설계하는 과정
데이터를 효율적으로 저장하고 관계를 정의</p>
<ol>
<li>데이터 중복 방지</li>
<li>데이터베이스의 일관성과 무결성 보장</li>
</ol>
</blockquote>
<p><strong>24. 데이터 교환 시 고려 사항</strong>
<img src="https://velog.velcdn.com/images/smilefe-_-/post/5ee98d2b-39f7-4778-846f-56000eaaf427/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[엘리스QA트랙]QA와QC]]></title>
            <link>https://velog.io/@smilefe-_-/%EC%97%98%EB%A6%AC%EC%8A%A4QA%ED%8A%B8%EB%9E%99QA%EC%99%80QC</link>
            <guid>https://velog.io/@smilefe-_-/%EC%97%98%EB%A6%AC%EC%8A%A4QA%ED%8A%B8%EB%9E%99QA%EC%99%80QC</guid>
            <pubDate>Sat, 01 Feb 2025 08:07:24 GMT</pubDate>
            <description><![CDATA[<p><strong>1. QA : Quality Assurance</strong></p>
<blockquote>
<p>주로 결함이 나오지 않게 예방활동을 함</p>
</blockquote>
<p><strong>2. QC : Quality control</strong></p>
<blockquote>
<p>주로 검증활동을 진행함</p>
</blockquote>
<p><strong>3. QC와 QA의 주요 활동</strong>
<img src="https://velog.velcdn.com/images/smilefe-_-/post/9b6a13c3-6dfa-4632-927b-6011748150a1/image.png" alt=""></p>
<p><strong>4. QC와 QA의 협력</strong>
<img src="https://velog.velcdn.com/images/smilefe-_-/post/da2187dc-cc7b-408d-a50e-0db43ebc9c8b/image.png" alt=""></p>
<p><strong>5. QA가 프로젝트 범위를 정하는 방법</strong></p>
<blockquote>
<ol>
<li>반드시 해야할 일 70%</li>
<li>필요 없는 일 20%</li>
<li>우선순위가 낮은 일 10%</li>
</ol>
</blockquote>
<p><strong>6. 품질 기준 설정의 중요성</strong></p>
<blockquote>
<ol>
<li>품질에 대한 목표치를 명확하고 측정 가능하게 해야함</li>
</ol>
</blockquote>
<p><strong>7. QA 체크리스트로 계획 단계의 성공 보장</strong></p>
<blockquote>
<ol>
<li>요구사항 검토 완료 여부</li>
<li>품질 기준 정의 여부</li>
<li>초기 리스크 문서화 여부</li>
</ol>
</blockquote>
<p><strong>8. 계획 단계에서 QA가 직면하는 문제들</strong></p>
<blockquote>
<ol>
<li>요구사항의 모호성</li>
<li>품질 기준 설정의 어려움</li>
<li>이해관계자 간 의사소통 부족</li>
</ol>
</blockquote>
<p><strong>9. QA 활동 실패 시 발생할 리스크</strong></p>
<blockquote>
<ol>
<li>품질 목표와 프로젝트 목표 간 불일치</li>
<li>재작업 증가로 인한 비용 초과</li>
<li>초기 결함 발견 실패로 인한 후속 단계의 문제</li>
</ol>
</blockquote>
<p><strong>10. 요구사항 정의 단계의 목적 테스팅 원리</strong></p>
<blockquote>
<p>소프트웨어가 무엇을 해야하는지 명확히 규정
QA의 역할 : 요구사항이 명확하고 실현 가능하며, 품질 기준에 부합하도록 검토</p>
</blockquote>
<p><strong>11. SRS 검토에서 QA의 기여</strong></p>
<blockquote>
<ol>
<li>SRS : software requirements specification)
=요구 사항 명세서</li>
</ol>
</blockquote>
<p><strong>12. 요구사항 변경 관리와 QA의 역할</strong></p>
<blockquote>
<p>요구사항) 로그인 화면에서 OTP 인증을 추가해주세요</p>
</blockquote>
<blockquote>
<ol>
<li>요청된 변경사항이 기존 요구사항 문서와 일치하나?</li>
<li>프로젝트 범위 및 목표와 일치하나?</li>
<li>시스템 성능이 영향을 받진 않을까?</li>
</ol>
</blockquote>
<p><strong>13. QA툴로 요구사항 명확히 하기</strong>
<img src="https://velog.velcdn.com/images/smilefe-_-/post/5bcef38f-26d7-415a-a3db-73a02ac3bb3e/image.png" alt=""></p>
<p><strong>14. 요구사항 정의를 위한 효과적인 커뮤니케이션</strong>
<img src="https://velog.velcdn.com/images/smilefe-_-/post/1f49fb22-6f89-49d7-97f5-9ff7624ee4d8/image.png" alt=""></p>
<p><strong>15. 설계 단계에서 QA 참여의 중요성</strong></p>
<blockquote>
<ol>
<li>시스템의 구조와 동작을 정의</li>
<li>QA의 역할 : 초기 설계단계 참여로 품질 문제 사전 방지</li>
</ol>
</blockquote>
<p><strong>16. 설계 검토에서 QA의 역할</strong></p>
<blockquote>
<ol>
<li>아키텍처 검토</li>
<li>요구사항 매핑</li>
<li>설계 문서 검증</li>
</ol>
</blockquote>
<p><strong>17. 설계 검증 활동의 주요 요소</strong></p>
<blockquote>
<ol>
<li>요구사항과 설계 간의 일치성 확인</li>
<li>기능/비기능적 요구사항의 충족 여부 검증</li>
</ol>
</blockquote>
<p><strong>18. 품질 기준 충족을 위한 QA 접근법</strong></p>
<blockquote>
<ol>
<li>품질 기준 점검</li>
<li>명확하고 측정 가능한 설계 보장
= 잠재적 결함 예방</li>
</ol>
</blockquote>
<p><strong>19. 설계 단계에서 QA와 개발 팀 협업</strong></p>
<blockquote>
<ol>
<li>정기적인 설계 리뷰 미팅</li>
<li>품질 문제 식별 및 해결 방안 제안</li>
</ol>
</blockquote>
<p><strong>20. 코드 리뷰에서 QA의 역할</strong>
<img src="https://velog.velcdn.com/images/smilefe-_-/post/c8fea4fe-9bcf-4db5-afcd-c28922976ca5/image.png" alt=""></p>
<p><strong>21. 정적 분석 도구를 활용한 코드 품질 개선</strong></p>
<blockquote>
<ol>
<li>코드 복잡도</li>
<li>잠재적 버그</li>
<li>보안 취약점</li>
</ol>
</blockquote>
<p><strong>22. 소스 코드 품질 기준과 QA 검토</strong></p>
<blockquote>
<ol>
<li>일관성, 가독성, 효율성을 따짐</li>
</ol>
</blockquote>
<p><strong>23. 지속적 통합(CI) 프로세스와 QA</strong></p>
<blockquote>
<ol>
<li>CI : 여러 사람이 동시에 작업할 때, 지속적으로 결과물을 합치고 자동화된 테스트를 통해 문제를 찾도록 도와주는 도구 (Jenkins, Github)</li>
</ol>
</blockquote>
<blockquote>
<ol start="2">
<li>QA의 역할</li>
</ol>
<ul>
<li>자동화된 품질 점검</li>
<li>CI 과정에서 발견된 결함 관리</li>
</ul>
</blockquote>
<p><strong>24. 구현 단계에서 QA의 주요 확인 항목</strong></p>
<blockquote>
<ol>
<li>코드 표준 준수 여부</li>
<li>테스트 가능성</li>
<li>성능 및 보안 문제</li>
</ol>
</blockquote>
<p><strong>25. QA 도구 활용으로 품질 관리 강화</strong></p>
<blockquote>
<ol>
<li>Github로 코드 품질 자동화</li>
<li>코드 변경 사항 테스트</li>
<li>린트와 정적 분석 수행</li>
</ol>
</blockquote>
<p><strong>26. 테스트 자동화 도구 활용</strong></p>
<blockquote>
<ol>
<li>셀레니움 : 웹 애플리케이션 자동화</li>
<li>어피움 : 모바일  웹 테스트 자동화</li>
</ol>
</blockquote>
<p><strong>27. 수동 테스트와 자동화 테스트의 조화</strong>
<img src="https://velog.velcdn.com/images/smilefe-_-/post/1ca2c143-6c5d-4740-b96b-24a389624805/image.png" alt=""></p>
<p><strong>28. 회귀 테스트의 중요성테스팅 원리</strong>
<img src="https://velog.velcdn.com/images/smilefe-_-/post/7745b779-4be8-4391-bf72-3c3ff83a061b/image.png" alt=""></p>
<p><strong>29. 품질 보증을 위한 QA 활동</strong></p>
<blockquote>
<ol>
<li>자동화와 수동 테스트의 병행</li>
<li>결함 보고 및 관리</li>
<li>테스트 결과의 지속적인 피드백 제공</li>
</ol>
<p>-&gt; 품질 보증 극대화</p>
</blockquote>
<p><strong>30. 테스트 단계에서 발생하는 문제와 해결책</strong>
<img src="https://velog.velcdn.com/images/smilefe-_-/post/915eb0f4-7fe2-481e-aad5-6669c53477c3/image.png" alt=""></p>
<p><strong>31. 비기능 테스트에서의 QA의 역할</strong></p>
<blockquote>
<ol>
<li>성능 테스트 : 시스템의 속도와 반응시간 측정</li>
<li>보안 테스트 : 취약점 식별 및 보안 강화를 위한 검증</li>
<li>확장성 테스트: 사용자 증가에 따른 시스템 처리 능력 확인</li>
</ol>
</blockquote>
<p><strong>32. 테스트 환경 설정에서의 QA의 역할</strong></p>
<blockquote>
<ol>
<li>테스트 환경 구성 요소 확인</li>
<li>실제 운영 환경과 유사한 환경 구축</li>
<li>환경 검증 : 환경 설정 오류와 불일치 식별</li>
</ol>
</blockquote>
<p><strong>33. 테스트 단계에서 QA의 모범사례</strong>
<img src="https://velog.velcdn.com/images/smilefe-_-/post/7693e2a9-e959-4c1b-9d50-de1ff9ebc083/image.png" alt=""></p>
<p><strong>34. 사용자 수락 테스트에서 QA의 기여</strong></p>
<blockquote>
<ol>
<li>UAT계획 및 시나리오 작성 지원</li>
<li>테스트 결과 분석 및 문제 해결 지원</li>
<li>UAT 이슈 개발팀 전달 후 수정 확인</li>
</ol>
</blockquote>
<ul>
<li>UAT(User Acceptance Test) : 사용자 수용 테스트 
소프트웨어 테스트의 마지막 단계로 개발된 소프트웨어가 실제 사용자가 원하는 업무를 제대로 처리할 수 있는지를 확인하는 단계</li>
</ul>
<p><strong>35. 배포 후 모니터링에서 QA의 역할</strong></p>
<blockquote>
<ol>
<li>시스템 성능 및 안정성  모니터링</li>
<li>사용자 피드백 수집 및 분석</li>
<li>발견된 문제를 개발팀과 공유하고 수정 확인</li>
</ol>
</blockquote>
<p><strong>36. 릴리스 품질 검토에서 QA의 체크포인트</strong>
<img src="https://velog.velcdn.com/images/smilefe-_-/post/a262e941-a172-46f1-aab3-bcaba4f8b60b/image.png" alt=""></p>
<p><strong>37. 안정적인 배포를 위한 QA 활동</strong></p>
<blockquote>
<ol>
<li>테스트 환경과 운영 환경 간 일관성 보장</li>
<li>배포 중 발생 가능한 리스크 예측 및 대응 계획 수립
.3. 배포 후 초기 단계에서의 지속적 지원 제공</li>
</ol>
</blockquote>
<p><strong>38. 유지보수 단계에서 QA의 주요 역할</strong></p>
<blockquote>
<ol>
<li>QA의 역할 : 신규 결함 발견 및 분석</li>
<li>운영 환경에서의 문제 해결, 수정된 기능 검증</li>
</ol>
</blockquote>
<p><strong>39. 소프트웨어 업데이트 검증에서 QA의 역할</strong></p>
<blockquote>
<p>QA의 역할 </p>
<ul>
<li>회귀 테스트 : 기존 기능 정상 동작 확인</li>
<li>새로운 요구사항 테스트</li>
<li>업데이트 시뮬레이션 후 결과 분석</li>
</ul>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[[엘리스QA트랙]태그]]></title>
            <link>https://velog.io/@smilefe-_-/%ED%83%9C%EA%B7%B8</link>
            <guid>https://velog.io/@smilefe-_-/%ED%83%9C%EA%B7%B8</guid>
            <pubDate>Thu, 30 Jan 2025 07:31:28 GMT</pubDate>
            <description><![CDATA[<p><strong>1. 테이블 생성</strong></p>
<blockquote>
<p>table 태그를 이용
tr -&gt; 행을 나타내는 요소
th -&gt; 헤더 셀을 나타냄, 굵은 글씨로 표시
td -&gt; 데이터 셀을 나타냄
<img src="https://velog.velcdn.com/images/smilefe-_-/post/5a83726b-c1e6-46eb-83a0-ffcb5b44aa6d/image.png" alt=""></p>
</blockquote>
<p><strong>2. Form 양식</strong></p>
<blockquote>
<p>사용자로부터 입력을 받을 수 있는 HTML 양식
form -&gt; 요소들을 감싸며 HTML의 fORM 양식을 정의
<img src="https://velog.velcdn.com/images/smilefe-_-/post/fcba9f47-a52f-4db9-a9e8-ddd1cd938a5d/image.png" alt=""></p>
</blockquote>
<p><strong>3. form 태그의 속성</strong></p>
<blockquote>
<ol>
<li>method : 사용자가 입력한 내용들을 서버 쪽으로 어떻게 넘겨줄 지 지정(get, post) 존재</li>
<li>name : 폼의 이름을 지정</li>
<li>action : 데이터를 전송한 url이나 서버쪽의 script 파일명, 보통 서버의 프로그램과 연결되는주소</li>
</ol>
</blockquote>
<p><strong>4. 폼 요소</strong></p>
<blockquote>
<ol>
<li>label: 폼 요소에 레이블을 붙이기 위한 태그</li>
<li>input : 다양한 입력을 받고 type 속성을 통해 입력 필드의 종류 지정 가능</li>
<li>textarea : 여러줄의 텍스트를 입력할 수 있는 입력 필드</li>
</ol>
</blockquote>
<p><strong>5. label 태그</strong>
<img src="https://velog.velcdn.com/images/smilefe-_-/post/ef5a7533-2f09-4882-8bde-24dd1177ae54/image.png" alt=""></p>
<p><strong>6. input 태그</strong>
<img src="https://velog.velcdn.com/images/smilefe-_-/post/1da344b3-297b-4299-825d-043fb064bc0e/image.png" alt=""></p>
<p><strong>7. input의 type 속성</strong>
<img src="https://velog.velcdn.com/images/smilefe-_-/post/41b77b2e-83cc-4642-a61a-883484ba344a/image.png" alt=""></p>
<p><strong>8. textarea 태그</strong></p>
<blockquote>
<ol>
<li>여러 줄의 텍스트를 입력할 수 있는 요소</li>
<li>cols, rows 속성 : textarea의 행과 열 개수를 지정하여 기본 사이즈 조정</li>
<li>placeholder, name 속성 : input과 동일</li>
</ol>
</blockquote>
<p><strong>9. 폼 요소의 활용 예시</strong>
<img src="https://velog.velcdn.com/images/smilefe-_-/post/f665d3c8-c254-4b87-83b3-95cf33120d6b/image.png" alt=""></p>
<p><strong>10. Semantic 태그의 활용</strong></p>
<blockquote>
<p>사용한 모습
<img src="https://velog.velcdn.com/images/smilefe-_-/post/6bd5d2a8-cbba-492f-af43-1507d46f1c9b/image.png" alt=""></p>
</blockquote>
<blockquote>
<p>사용하지 않은 모습
<img src="https://velog.velcdn.com/images/smilefe-_-/post/bb78c1a1-229d-4e8c-9dfb-21934ba3a776/image.png" alt="">
<strong>형태의 차이가 확연하게 다름</strong></p>
</blockquote>
<p><strong>11. Semantic 태그</strong></p>
<blockquote>
<ol>
<li>div 태그와 동일한 컨테이너 태그</li>
<li>단순하게 구획만 나누는 div와 다르게 해당 요소의 역할과 의미를 예측 가능함</li>
<li>태그만 보고 역할이나 위치 파악 가능
<img src="https://velog.velcdn.com/images/smilefe-_-/post/4e6ac24b-4acf-4970-a65b-b6e3cf06eb85/image.png" alt=""></li>
</ol>
</blockquote>
<p><strong>12. Semantic 태그의 종류</strong>
<img src="https://velog.velcdn.com/images/smilefe-_-/post/72323bf6-1ab5-4e9e-b7b9-1f3ad2e4e1cd/image.png" alt=""></p>
<p><strong>&gt;직접 실습한 모습</strong>
<img src="https://velog.velcdn.com/images/smilefe-_-/post/6e8686ee-ad84-43d2-9716-df619cd2b01d/image.png" alt=""></p>
<p>좌 : div를 활용한 실습
우 : Semantic 태그를 사용해 한눈에 봐도 역할 파악이 가능하게 만듬</p>
]]></description>
        </item>
    </channel>
</rss>