<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>테스트의 모든것</title>
    <link>https://testmanager.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Mon, 13 Jul 2026 07:04:30 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>testmanager</managingEditor>
    <image>
      <title>테스트의 모든것</title>
      <url>https://tistory1.daumcdn.net/tistory/1652884/attach/71b788b9632c4582ad063a9ae17e1c25</url>
      <link>https://testmanager.tistory.com</link>
    </image>
    <item>
      <title>7화. 플래키의 근원, 셀렉터와 대기 &amp;mdash; 안정적 셀렉터와 비동기 대기 전략.</title>
      <link>https://testmanager.tistory.com/627</link>
      <description>&lt;p data-ke-size=&quot;size14&quot;&gt;AI&amp;nbsp;시대의&amp;nbsp;품질&amp;nbsp;아키텍트&amp;nbsp;:&amp;nbsp;테스터에서&amp;nbsp;시스템&amp;nbsp;품질&amp;nbsp;설계자로&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;0.&amp;nbsp;오리엔테이션&lt;br /&gt;0화.&amp;nbsp;30분&amp;nbsp;데모와&amp;nbsp;프로덕션&amp;nbsp;사이의&amp;nbsp;거리&amp;nbsp;&amp;mdash;&amp;nbsp;현실&amp;nbsp;인식과&amp;nbsp;방향&amp;nbsp;제시&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;1.&amp;nbsp;기초&amp;nbsp;체력&lt;br /&gt;AI가&amp;nbsp;짠&amp;nbsp;코드를&amp;nbsp;읽고&amp;nbsp;검증할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;눈과&amp;nbsp;웹&amp;middot;API&amp;nbsp;원리&amp;nbsp;다지기&lt;br /&gt;1화.&amp;nbsp;AI가&amp;nbsp;짠&amp;nbsp;코드를&amp;nbsp;읽는&amp;nbsp;눈&amp;nbsp;&amp;mdash;&amp;nbsp;Python&amp;nbsp;또는&amp;nbsp;JS/TS&amp;nbsp;중&amp;nbsp;하나를&amp;nbsp;코드&amp;nbsp;리뷰&amp;nbsp;가능한&amp;nbsp;수준까지.&amp;nbsp;실습:&amp;nbsp;AI가&amp;nbsp;생성한&amp;nbsp;테스트&amp;nbsp;코드의&amp;nbsp;버그&amp;nbsp;3개&amp;nbsp;찾기.&lt;br /&gt;2화.&amp;nbsp;변경은&amp;nbsp;diff에서&amp;nbsp;시작된다&amp;nbsp;&amp;mdash;&amp;nbsp;Git과&amp;nbsp;PR&amp;nbsp;기반&amp;nbsp;협업,&amp;nbsp;변경&amp;nbsp;기반&amp;nbsp;테스트의&amp;nbsp;첫&amp;nbsp;단추.&amp;nbsp;실습:&amp;nbsp;PR&amp;nbsp;diff만&amp;nbsp;보고&amp;nbsp;영향&amp;nbsp;범위&amp;nbsp;추정해&amp;nbsp;보기.&lt;br /&gt;3화.&amp;nbsp;웹은&amp;nbsp;어떻게&amp;nbsp;움직이는가&amp;nbsp;&amp;mdash;&amp;nbsp;HTTP,&amp;nbsp;쿠키&amp;middot;세션의&amp;nbsp;원리.&amp;nbsp;실습:&amp;nbsp;개발자도구로&amp;nbsp;요청&amp;middot;응답&amp;nbsp;해부.&lt;br /&gt;4화.&amp;nbsp;인증의&amp;nbsp;지도&amp;nbsp;&amp;mdash;&amp;nbsp;OAuth&amp;middot;JWT&amp;middot;RBAC를&amp;nbsp;테스터&amp;nbsp;시선으로.&amp;nbsp;실습:&amp;nbsp;토큰&amp;nbsp;만료&amp;middot;권한&amp;nbsp;우회&amp;nbsp;시나리오&amp;nbsp;설계.&lt;br /&gt;5화.&amp;nbsp;API의&amp;nbsp;두&amp;nbsp;얼굴&amp;nbsp;&amp;mdash;&amp;nbsp;REST와&amp;nbsp;GraphQL의&amp;nbsp;차이와&amp;nbsp;테스트&amp;nbsp;관점.&amp;nbsp;실습:&amp;nbsp;같은&amp;nbsp;기능을&amp;nbsp;두&amp;nbsp;방식으로&amp;nbsp;호출&amp;middot;검증.&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;2.&amp;nbsp;테스트&amp;nbsp;자동화&lt;br /&gt;Playwright를&amp;nbsp;주력으로&amp;nbsp;깊이&amp;nbsp;익히기&lt;br /&gt;6화.&amp;nbsp;왜&amp;nbsp;Playwright인가&amp;nbsp;&amp;mdash;&amp;nbsp;도구&amp;nbsp;선택의&amp;nbsp;근거와&amp;nbsp;첫&amp;nbsp;테스트&amp;nbsp;작성.&lt;br /&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;7화.&amp;nbsp;플래키의&amp;nbsp;근원,&amp;nbsp;셀렉터와&amp;nbsp;대기&amp;nbsp;&amp;mdash;&amp;nbsp;안정적&amp;nbsp;셀렉터와&amp;nbsp;비동기&amp;nbsp;대기&amp;nbsp;전략.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;8화.&amp;nbsp;실패를&amp;nbsp;영상으로&amp;nbsp;읽는다&amp;nbsp;&amp;mdash;&amp;nbsp;Trace&amp;nbsp;Viewer로&amp;nbsp;원인&amp;nbsp;추적.&lt;br /&gt;9화.&amp;nbsp;계약을&amp;nbsp;테스트하라&amp;nbsp;&amp;mdash;&amp;nbsp;API&amp;middot;계약&amp;nbsp;테스트(OpenAPI/GraphQL&amp;nbsp;schema&amp;nbsp;기반).&lt;br /&gt;10화.&amp;nbsp;눈에&amp;nbsp;보이는&amp;nbsp;회귀,&amp;nbsp;모두에게&amp;nbsp;열린&amp;nbsp;화면&amp;nbsp;&amp;mdash;&amp;nbsp;시각적&amp;nbsp;회귀와&amp;nbsp;접근성&amp;nbsp;자동&amp;nbsp;검사.&amp;nbsp;(Selenium&amp;middot;Appium은&amp;nbsp;레거시&amp;middot;모바일&amp;nbsp;대응용으로&amp;nbsp;짧게&amp;nbsp;짚기)&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;3.&amp;nbsp;AI&amp;nbsp;활용&amp;middot;MCP&amp;nbsp;(연재&amp;nbsp;핵심)&lt;br /&gt;AI를&amp;nbsp;단순&amp;nbsp;도구가&amp;nbsp;아닌&amp;nbsp;차별화&amp;nbsp;무기로&amp;nbsp;만드는&amp;nbsp;구간&lt;br /&gt;11화.&amp;nbsp;프롬프트로&amp;nbsp;테스트를&amp;nbsp;설계하기&amp;nbsp;&amp;mdash;&amp;nbsp;명세&amp;middot;PR을&amp;nbsp;입력해&amp;nbsp;케이스를&amp;nbsp;생성&amp;middot;우선순위화하는&amp;nbsp;패턴&amp;nbsp;정립.&lt;br /&gt;12화.&amp;nbsp;에이전트는&amp;nbsp;무엇을&amp;nbsp;대신하는가&amp;nbsp;&amp;mdash;&amp;nbsp;에이전트형&amp;nbsp;테스트의&amp;nbsp;개념과&amp;nbsp;한계(수동&amp;nbsp;노력&amp;nbsp;최대&amp;nbsp;45%&amp;nbsp;절감&amp;nbsp;추정).&lt;br /&gt;13화.&amp;nbsp;스스로&amp;nbsp;고치는&amp;nbsp;테스트,&amp;nbsp;그리고&amp;nbsp;그&amp;nbsp;한계&amp;nbsp;&amp;mdash;&amp;nbsp;자가&amp;nbsp;치유와&amp;nbsp;AI&amp;nbsp;Healer.&amp;nbsp;셀렉터&amp;middot;DOM&amp;nbsp;변경에서&amp;nbsp;75%+&amp;nbsp;복구,&amp;nbsp;그러나&amp;nbsp;복잡한&amp;nbsp;로직&amp;nbsp;버그는&amp;nbsp;사람&amp;nbsp;몫.&lt;br /&gt;14화.&amp;nbsp;npx&amp;nbsp;playwright&amp;nbsp;init-agents&amp;nbsp;&amp;mdash;&amp;nbsp;첫&amp;nbsp;MCP&amp;nbsp;실습&amp;nbsp;&amp;mdash;&amp;nbsp;접근성&amp;nbsp;트리&amp;nbsp;기반&amp;nbsp;Playwright&amp;nbsp;MCP&amp;nbsp;시작하기.&lt;br /&gt;15화.&amp;nbsp;MCP로&amp;nbsp;통합을&amp;nbsp;검증하다&amp;nbsp;&amp;mdash;&amp;nbsp;MCP&amp;nbsp;기반&amp;nbsp;통합&amp;nbsp;검증&amp;nbsp;실습.&lt;br /&gt;16화.&amp;nbsp;환각을&amp;nbsp;거르는&amp;nbsp;사람&amp;nbsp;&amp;mdash;&amp;nbsp;AI&amp;nbsp;결과의&amp;nbsp;환각&amp;middot;오탐을&amp;nbsp;걸러내는&amp;nbsp;인간&amp;nbsp;검증&amp;nbsp;체계&amp;nbsp;설계.&amp;nbsp;직무&amp;nbsp;특성상&amp;nbsp;가장&amp;nbsp;큰&amp;nbsp;강점이&amp;nbsp;되는&amp;nbsp;지점.&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;4.&amp;nbsp;파이프라인&amp;middot;운영&lt;br /&gt;개인기를&amp;nbsp;조직의&amp;nbsp;신뢰&amp;nbsp;시스템으로&amp;nbsp;연결&lt;br /&gt;17화.&amp;nbsp;문&amp;nbsp;앞의&amp;nbsp;품질&amp;nbsp;게이트&amp;nbsp;&amp;mdash;&amp;nbsp;CI/CD&amp;nbsp;품질&amp;nbsp;게이트&amp;nbsp;구성.&lt;br /&gt;18화.&amp;nbsp;플래키를&amp;nbsp;격리하라&amp;nbsp;&amp;mdash;&amp;nbsp;불안정&amp;nbsp;테스트&amp;nbsp;격리와&amp;nbsp;실패&amp;nbsp;원인&amp;nbsp;자동&amp;nbsp;분류.&lt;br /&gt;19화.&amp;nbsp;관측성을&amp;nbsp;테스트로&amp;nbsp;환원하기&amp;nbsp;&amp;mdash;&amp;nbsp;로그&amp;middot;메트릭&amp;middot;트레이스(OpenTelemetry)를&amp;nbsp;테스트&amp;nbsp;사고로&amp;nbsp;끌어오기.&lt;br /&gt;20화.&amp;nbsp;진짜&amp;nbsp;같은&amp;nbsp;가짜&amp;nbsp;데이터&amp;nbsp;&amp;mdash;&amp;nbsp;테스트&amp;nbsp;데이터&amp;nbsp;합성과&amp;nbsp;마스킹.&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;5.&amp;nbsp;비기능&amp;nbsp;영역&lt;br /&gt;눈에&amp;nbsp;보이지&amp;nbsp;않는&amp;nbsp;품질&amp;nbsp;지키기&lt;br /&gt;21화.&amp;nbsp;무게를&amp;nbsp;견디는가&amp;nbsp;&amp;mdash;&amp;nbsp;k6/JMeter로&amp;nbsp;부하&amp;middot;스트레스&amp;nbsp;테스트.&lt;br /&gt;22화.&amp;nbsp;손안의&amp;nbsp;성능&amp;nbsp;&amp;mdash;&amp;nbsp;모바일&amp;nbsp;성능&amp;nbsp;지표(FPS&amp;middot;시작속도&amp;middot;메모리&amp;middot;배터리).&lt;br /&gt;23화.&amp;nbsp;공격자처럼&amp;nbsp;생각하기&amp;nbsp;&amp;mdash;&amp;nbsp;OWASP&amp;nbsp;Top&amp;nbsp;10으로&amp;nbsp;본&amp;nbsp;보안&amp;nbsp;기본기.&lt;br /&gt;24화.&amp;nbsp;코드를&amp;nbsp;스캔하는&amp;nbsp;도구들&amp;nbsp;&amp;mdash;&amp;nbsp;SAST&amp;middot;DAST&amp;middot;SCA(SonarQube&amp;middot;OWASP&amp;nbsp;ZAP&amp;middot;Snyk)&amp;nbsp;실전.&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;6.&amp;nbsp;전략&amp;middot;리더십&amp;middot;표준&lt;br /&gt;아키텍트로서의&amp;nbsp;설계&amp;middot;운영&amp;middot;리더십&lt;br /&gt;25화.&amp;nbsp;테스트&amp;nbsp;가능성을&amp;nbsp;설계에&amp;nbsp;심다&amp;nbsp;&amp;mdash;&amp;nbsp;Testability를&amp;nbsp;기획&amp;middot;개발&amp;nbsp;단계로&amp;nbsp;끌어올리기.&lt;br /&gt;26화.&amp;nbsp;공통&amp;nbsp;언어로서의&amp;nbsp;BDD&amp;nbsp;&amp;mdash;&amp;nbsp;Gherkin으로&amp;nbsp;기획&amp;middot;개발&amp;middot;QA를&amp;nbsp;한&amp;nbsp;문장에&amp;nbsp;모으기.&lt;br /&gt;27화.&amp;nbsp;AI를&amp;nbsp;지휘하는&amp;nbsp;운영&amp;nbsp;모델&amp;nbsp;&amp;mdash;&amp;nbsp;20명&amp;nbsp;규모&amp;nbsp;팀을&amp;nbsp;위한&amp;nbsp;AI&amp;nbsp;오케스트레이션&amp;nbsp;가이드라인과&amp;nbsp;코칭.&lt;br /&gt;28화.&amp;nbsp;표준과&amp;nbsp;AI를&amp;nbsp;잇다&amp;nbsp;&amp;mdash;&amp;nbsp;KOLAS&amp;nbsp;인정&amp;nbsp;요건&amp;middot;품질&amp;nbsp;표준을&amp;nbsp;AI&amp;nbsp;검증&amp;nbsp;체계로&amp;nbsp;연결하는&amp;nbsp;도메인&amp;nbsp;전문성.&lt;br /&gt;29화.&amp;nbsp;데모를&amp;nbsp;프로덕션으로&amp;nbsp;옮기는&amp;nbsp;비용&amp;nbsp;&amp;mdash;&amp;nbsp;30분&amp;nbsp;데모와&amp;nbsp;실전의&amp;nbsp;거리,&amp;nbsp;사람의&amp;nbsp;감독이&amp;nbsp;끝까지&amp;nbsp;필요한&amp;nbsp;이유를&amp;nbsp;균형&amp;nbsp;있게&amp;nbsp;정리.&lt;br /&gt;30화.&amp;nbsp;테스터에서&amp;nbsp;품질&amp;nbsp;아키텍트로&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;플래키 테스트의 뿌리를 뽑는 순간, 자동화가 진짜 믿음직한 동반자가 된다&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테스트를 돌리다 보면 &amp;ldquo;이번엔 왜 실패하지?&amp;rdquo; 하며 한숨 쉬는 일이 반복됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특히 Playwright로 자동화를 시작한 초보 테스터가 가장 먼저 부딪히는 벽이 바로 &lt;b&gt;플래키(flaky)&lt;/b&gt; 테스트예요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 화에서는 그 불안정한 근원을 파헤치고, 안정적인 셀렉터와 비동기 대기 전략을 이해하기 쉽게 풀어보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;흔들리는 다리와 단단한 기둥&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;상상해 보세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;학교 체육시간에 줄넘기를 하는데, 줄이 너무 느슨하거나 바람이 불면 계속 실패합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반대로 줄이 팽팽하고 타이밍을 잘 맞추면 성공률이 높아지죠.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;플래키 테스트는 바로 그 느슨한 줄과 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;페이지가 완전히 로드되기 전에 버튼을 클릭하거나, 요소의 위치가 자주 바뀌는 셀렉터를 사용하면 테스트가 &amp;ldquo;가끔 성공하고 가끔 실패&amp;rdquo;합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 불안정성은 CI/CD 파이프라인에서 큰 골칫거리가 되고, 결국 팀이 자동화를 포기하게 만드는 주범이 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;플래키의 가장 큰 원인, 불안정한 셀렉터&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;많은 사람들이 XPath나 복잡한 CSS 선택자를 사용합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어 &lt;code&gt;div:nth-child(3) &amp;gt; button&lt;/code&gt;처럼 위치에 의존하면, 디자인이 조금만 바뀌어도 테스트가 깨집니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마치 친구 얼굴을 &amp;ldquo;세 번째 줄 네 번째 아이&amp;rdquo;로 기억하는 것과 같아요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;친구가 자리를 옮기면 바로 못 찾죠.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Playwright에서는 훨씬 단단한 방법을 권장합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;가장 추천하는 순서&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;먼저 &lt;code&gt;getByRole()&lt;/code&gt;을 사용하세요. 접근성(ARIA) 역할을 기준으로 찾기 때문에 &amp;ldquo;로그인 버튼&amp;rdquo;, &amp;ldquo;검색 입력창&amp;rdquo;처럼 의미를 가진 요소를 안정적으로 잡아냅니다.&lt;/p&gt;
&lt;pre class=&quot;less&quot;&gt;&lt;code&gt;await page.getByRole('button', { name: '로그인' }).click();&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음으로 &lt;code&gt;getByTestId()&lt;/code&gt;를 활용합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발자에게 &amp;ldquo;test-id='submit-button'&amp;rdquo; 같은 속성을 미리 넣어달라고 요청하면, 디자인이나 구조가 바뀌어도 흔들리지 않는 강력한 앵커가 생깁니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;getByLabel()&lt;/code&gt;, &lt;code&gt;getByPlaceholder()&lt;/code&gt;, &lt;code&gt;getByText()&lt;/code&gt;도 유용합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이처럼 &lt;b&gt;의미와 의도를 기반으로&lt;/b&gt; 요소를 찾는 습관을 들이면, 셀렉터 때문에 실패하는 일이 크게 줄어듭니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;비동기 세상의 타이밍, 스마트 대기 전략&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현대 웹은 주문하면 바로 오는 게 아니라, 요리사(서버)가 준비할 때까지 기다려야 하는 레스토랑과 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AJAX 호출, 애니메이션, 동적 로딩 때문에 페이지가 &amp;ldquo;거의&amp;rdquo; 로드된 상태에서 테스트가 진행되면 실패하기 십상입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Playwright의 가장 큰 강점은 &lt;b&gt;자동 대기(Auto-waiting)&lt;/b&gt;입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;click()&lt;/code&gt;, &lt;code&gt;fill()&lt;/code&gt;, &lt;code&gt;expect().toBeVisible()&lt;/code&gt; 같은 명령을 쓸 때 알아서 필요한 순간까지 기다려줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 가끔 더 명확한 전략이 필요합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;page.waitForLoadState('networkidle')&lt;/code&gt; : 네트워크 요청이 잠잠해질 때까지 기다림&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;await expect(page.getByRole('heading')).toBeVisible({ timeout: 10000 })&lt;/code&gt; : &lt;br /&gt;특정 요소가 나타날 때까지 최대 10초 기다림&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;page.locator().first()&lt;/code&gt;이나 &lt;code&gt;filter()&lt;/code&gt;를 활용해 조건에 맞는 요소를 정확히 지정&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특히 SPA(Single Page Application)에서는 URL 변화나 특정 텍스트 등장까지 기다리는 것이 효과적입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;실전에서 바로 써먹는 안정화 팁&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드 작성할 때 &amp;ldquo;이 요소가 정말 안정적으로 보일까?&amp;rdquo;를 항상 자문해 보세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI가 생성한 테스트 코드도 이 관점에서 검토하면 많은 플래키를 미리 잡아낼 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Trace Viewer를 활용해 실패한 테스트를 영상처럼 돌려보면, 어느 순간 셀렉터가 실패했는지, 대기가 부족했는지 바로 파악됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음에는 테스트가 조금 느려지더라도 안정성을 최우선으로 하다 보면, 전체 실행 속도도 오히려 빨라지는 마법을 경험하게 될 거예요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;플래키를 잡는 습관이 품질 아키텍트의 첫걸음&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;플래키의 근원을 이해하고 셀렉터와 대기 전략을 제대로 세우는 순간, 자동화 스위트는 단순한 스크립트가 아니라 신뢰할 수 있는 품질 지킴이가 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 기본기를 탄탄히 다지면 다음 단계에서 더 복잡한 시나리오도 자신 있게 다룰 수 있어요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;불안정한 테스트 하나하나를 잡아나가다 보면, 데모가 아닌 진짜 프로덕션 환경에서도 든든하게 버티는 시스템을 만들 수 있다는 자신감이 생길 겁니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>11. 자료실&amp;middot;기타/테스트 관련 강좌</category>
      <category>Auto-waiting</category>
      <category>getByRole</category>
      <category>Playwright</category>
      <category>Playwright Trace Viewer</category>
      <category>비동기 대기</category>
      <category>안정적 셀렉터</category>
      <category>테스트 안정화</category>
      <category>테스트 자동화</category>
      <category>플래키 테스트</category>
      <author>testmanager</author>
      <guid isPermaLink="true">https://testmanager.tistory.com/627</guid>
      <comments>https://testmanager.tistory.com/627#entry627comment</comments>
      <pubDate>Fri, 10 Jul 2026 07:30:13 +0900</pubDate>
    </item>
    <item>
      <title>6화. 왜 Playwright인가 &amp;mdash; 도구 선택의 근거와 첫 테스트 작성.</title>
      <link>https://testmanager.tistory.com/626</link>
      <description>&lt;p data-ke-size=&quot;size14&quot;&gt;AI&amp;nbsp;시대의&amp;nbsp;품질&amp;nbsp;아키텍트&amp;nbsp;:&amp;nbsp;테스터에서&amp;nbsp;시스템&amp;nbsp;품질&amp;nbsp;설계자로&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;0.&amp;nbsp;오리엔테이션&lt;br /&gt;0화.&amp;nbsp;30분&amp;nbsp;데모와&amp;nbsp;프로덕션&amp;nbsp;사이의&amp;nbsp;거리&amp;nbsp;&amp;mdash;&amp;nbsp;현실&amp;nbsp;인식과&amp;nbsp;방향&amp;nbsp;제시&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;1.&amp;nbsp;기초&amp;nbsp;체력&lt;br /&gt;AI가&amp;nbsp;짠&amp;nbsp;코드를&amp;nbsp;읽고&amp;nbsp;검증할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;눈과&amp;nbsp;웹&amp;middot;API&amp;nbsp;원리&amp;nbsp;다지기&lt;br /&gt;1화.&amp;nbsp;AI가&amp;nbsp;짠&amp;nbsp;코드를&amp;nbsp;읽는&amp;nbsp;눈&amp;nbsp;&amp;mdash;&amp;nbsp;Python&amp;nbsp;또는&amp;nbsp;JS/TS&amp;nbsp;중&amp;nbsp;하나를&amp;nbsp;코드&amp;nbsp;리뷰&amp;nbsp;가능한&amp;nbsp;수준까지.&amp;nbsp;실습:&amp;nbsp;AI가&amp;nbsp;생성한&amp;nbsp;테스트&amp;nbsp;코드의&amp;nbsp;버그&amp;nbsp;3개&amp;nbsp;찾기.&lt;br /&gt;2화.&amp;nbsp;변경은&amp;nbsp;diff에서&amp;nbsp;시작된다&amp;nbsp;&amp;mdash;&amp;nbsp;Git과&amp;nbsp;PR&amp;nbsp;기반&amp;nbsp;협업,&amp;nbsp;변경&amp;nbsp;기반&amp;nbsp;테스트의&amp;nbsp;첫&amp;nbsp;단추.&amp;nbsp;실습:&amp;nbsp;PR&amp;nbsp;diff만&amp;nbsp;보고&amp;nbsp;영향&amp;nbsp;범위&amp;nbsp;추정해&amp;nbsp;보기.&lt;br /&gt;3화.&amp;nbsp;웹은&amp;nbsp;어떻게&amp;nbsp;움직이는가&amp;nbsp;&amp;mdash;&amp;nbsp;HTTP,&amp;nbsp;쿠키&amp;middot;세션의&amp;nbsp;원리.&amp;nbsp;실습:&amp;nbsp;개발자도구로&amp;nbsp;요청&amp;middot;응답&amp;nbsp;해부.&lt;br /&gt;4화.&amp;nbsp;인증의&amp;nbsp;지도&amp;nbsp;&amp;mdash;&amp;nbsp;OAuth&amp;middot;JWT&amp;middot;RBAC를&amp;nbsp;테스터&amp;nbsp;시선으로.&amp;nbsp;실습:&amp;nbsp;토큰&amp;nbsp;만료&amp;middot;권한&amp;nbsp;우회&amp;nbsp;시나리오&amp;nbsp;설계.&lt;br /&gt;5화.&amp;nbsp;API의&amp;nbsp;두&amp;nbsp;얼굴&amp;nbsp;&amp;mdash;&amp;nbsp;REST와&amp;nbsp;GraphQL의&amp;nbsp;차이와&amp;nbsp;테스트&amp;nbsp;관점.&amp;nbsp;실습:&amp;nbsp;같은&amp;nbsp;기능을&amp;nbsp;두&amp;nbsp;방식으로&amp;nbsp;호출&amp;middot;검증.&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;2.&amp;nbsp;테스트&amp;nbsp;자동화&lt;br /&gt;Playwright를&amp;nbsp;주력으로&amp;nbsp;깊이&amp;nbsp;익히기&lt;br /&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;6화.&amp;nbsp;왜&amp;nbsp;Playwright인가&amp;nbsp;&amp;mdash;&amp;nbsp;도구&amp;nbsp;선택의&amp;nbsp;근거와&amp;nbsp;첫&amp;nbsp;테스트&amp;nbsp;작성.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;7화.&amp;nbsp;플래키의&amp;nbsp;근원,&amp;nbsp;셀렉터와&amp;nbsp;대기&amp;nbsp;&amp;mdash;&amp;nbsp;안정적&amp;nbsp;셀렉터와&amp;nbsp;비동기&amp;nbsp;대기&amp;nbsp;전략.&lt;br /&gt;8화.&amp;nbsp;실패를&amp;nbsp;영상으로&amp;nbsp;읽는다&amp;nbsp;&amp;mdash;&amp;nbsp;Trace&amp;nbsp;Viewer로&amp;nbsp;원인&amp;nbsp;추적.&lt;br /&gt;9화.&amp;nbsp;계약을&amp;nbsp;테스트하라&amp;nbsp;&amp;mdash;&amp;nbsp;API&amp;middot;계약&amp;nbsp;테스트(OpenAPI/GraphQL&amp;nbsp;schema&amp;nbsp;기반).&lt;br /&gt;10화.&amp;nbsp;눈에&amp;nbsp;보이는&amp;nbsp;회귀,&amp;nbsp;모두에게&amp;nbsp;열린&amp;nbsp;화면&amp;nbsp;&amp;mdash;&amp;nbsp;시각적&amp;nbsp;회귀와&amp;nbsp;접근성&amp;nbsp;자동&amp;nbsp;검사.&amp;nbsp;(Selenium&amp;middot;Appium은&amp;nbsp;레거시&amp;middot;모바일&amp;nbsp;대응용으로&amp;nbsp;짧게&amp;nbsp;짚기)&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;3.&amp;nbsp;AI&amp;nbsp;활용&amp;middot;MCP&amp;nbsp;(연재&amp;nbsp;핵심)&lt;br /&gt;AI를&amp;nbsp;단순&amp;nbsp;도구가&amp;nbsp;아닌&amp;nbsp;차별화&amp;nbsp;무기로&amp;nbsp;만드는&amp;nbsp;구간&lt;br /&gt;11화.&amp;nbsp;프롬프트로&amp;nbsp;테스트를&amp;nbsp;설계하기&amp;nbsp;&amp;mdash;&amp;nbsp;명세&amp;middot;PR을&amp;nbsp;입력해&amp;nbsp;케이스를&amp;nbsp;생성&amp;middot;우선순위화하는&amp;nbsp;패턴&amp;nbsp;정립.&lt;br /&gt;12화.&amp;nbsp;에이전트는&amp;nbsp;무엇을&amp;nbsp;대신하는가&amp;nbsp;&amp;mdash;&amp;nbsp;에이전트형&amp;nbsp;테스트의&amp;nbsp;개념과&amp;nbsp;한계(수동&amp;nbsp;노력&amp;nbsp;최대&amp;nbsp;45%&amp;nbsp;절감&amp;nbsp;추정).&lt;br /&gt;13화.&amp;nbsp;스스로&amp;nbsp;고치는&amp;nbsp;테스트,&amp;nbsp;그리고&amp;nbsp;그&amp;nbsp;한계&amp;nbsp;&amp;mdash;&amp;nbsp;자가&amp;nbsp;치유와&amp;nbsp;AI&amp;nbsp;Healer.&amp;nbsp;셀렉터&amp;middot;DOM&amp;nbsp;변경에서&amp;nbsp;75%+&amp;nbsp;복구,&amp;nbsp;그러나&amp;nbsp;복잡한&amp;nbsp;로직&amp;nbsp;버그는&amp;nbsp;사람&amp;nbsp;몫.&lt;br /&gt;14화.&amp;nbsp;npx&amp;nbsp;playwright&amp;nbsp;init-agents&amp;nbsp;&amp;mdash;&amp;nbsp;첫&amp;nbsp;MCP&amp;nbsp;실습&amp;nbsp;&amp;mdash;&amp;nbsp;접근성&amp;nbsp;트리&amp;nbsp;기반&amp;nbsp;Playwright&amp;nbsp;MCP&amp;nbsp;시작하기.&lt;br /&gt;15화.&amp;nbsp;MCP로&amp;nbsp;통합을&amp;nbsp;검증하다&amp;nbsp;&amp;mdash;&amp;nbsp;MCP&amp;nbsp;기반&amp;nbsp;통합&amp;nbsp;검증&amp;nbsp;실습.&lt;br /&gt;16화.&amp;nbsp;환각을&amp;nbsp;거르는&amp;nbsp;사람&amp;nbsp;&amp;mdash;&amp;nbsp;AI&amp;nbsp;결과의&amp;nbsp;환각&amp;middot;오탐을&amp;nbsp;걸러내는&amp;nbsp;인간&amp;nbsp;검증&amp;nbsp;체계&amp;nbsp;설계.&amp;nbsp;직무&amp;nbsp;특성상&amp;nbsp;가장&amp;nbsp;큰&amp;nbsp;강점이&amp;nbsp;되는&amp;nbsp;지점.&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;4.&amp;nbsp;파이프라인&amp;middot;운영&lt;br /&gt;개인기를&amp;nbsp;조직의&amp;nbsp;신뢰&amp;nbsp;시스템으로&amp;nbsp;연결&lt;br /&gt;17화.&amp;nbsp;문&amp;nbsp;앞의&amp;nbsp;품질&amp;nbsp;게이트&amp;nbsp;&amp;mdash;&amp;nbsp;CI/CD&amp;nbsp;품질&amp;nbsp;게이트&amp;nbsp;구성.&lt;br /&gt;18화.&amp;nbsp;플래키를&amp;nbsp;격리하라&amp;nbsp;&amp;mdash;&amp;nbsp;불안정&amp;nbsp;테스트&amp;nbsp;격리와&amp;nbsp;실패&amp;nbsp;원인&amp;nbsp;자동&amp;nbsp;분류.&lt;br /&gt;19화.&amp;nbsp;관측성을&amp;nbsp;테스트로&amp;nbsp;환원하기&amp;nbsp;&amp;mdash;&amp;nbsp;로그&amp;middot;메트릭&amp;middot;트레이스(OpenTelemetry)를&amp;nbsp;테스트&amp;nbsp;사고로&amp;nbsp;끌어오기.&lt;br /&gt;20화.&amp;nbsp;진짜&amp;nbsp;같은&amp;nbsp;가짜&amp;nbsp;데이터&amp;nbsp;&amp;mdash;&amp;nbsp;테스트&amp;nbsp;데이터&amp;nbsp;합성과&amp;nbsp;마스킹.&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;5.&amp;nbsp;비기능&amp;nbsp;영역&lt;br /&gt;눈에&amp;nbsp;보이지&amp;nbsp;않는&amp;nbsp;품질&amp;nbsp;지키기&lt;br /&gt;21화.&amp;nbsp;무게를&amp;nbsp;견디는가&amp;nbsp;&amp;mdash;&amp;nbsp;k6/JMeter로&amp;nbsp;부하&amp;middot;스트레스&amp;nbsp;테스트.&lt;br /&gt;22화.&amp;nbsp;손안의&amp;nbsp;성능&amp;nbsp;&amp;mdash;&amp;nbsp;모바일&amp;nbsp;성능&amp;nbsp;지표(FPS&amp;middot;시작속도&amp;middot;메모리&amp;middot;배터리).&lt;br /&gt;23화.&amp;nbsp;공격자처럼&amp;nbsp;생각하기&amp;nbsp;&amp;mdash;&amp;nbsp;OWASP&amp;nbsp;Top&amp;nbsp;10으로&amp;nbsp;본&amp;nbsp;보안&amp;nbsp;기본기.&lt;br /&gt;24화.&amp;nbsp;코드를&amp;nbsp;스캔하는&amp;nbsp;도구들&amp;nbsp;&amp;mdash;&amp;nbsp;SAST&amp;middot;DAST&amp;middot;SCA(SonarQube&amp;middot;OWASP&amp;nbsp;ZAP&amp;middot;Snyk)&amp;nbsp;실전.&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;6.&amp;nbsp;전략&amp;middot;리더십&amp;middot;표준&lt;br /&gt;아키텍트로서의&amp;nbsp;설계&amp;middot;운영&amp;middot;리더십&lt;br /&gt;25화.&amp;nbsp;테스트&amp;nbsp;가능성을&amp;nbsp;설계에&amp;nbsp;심다&amp;nbsp;&amp;mdash;&amp;nbsp;Testability를&amp;nbsp;기획&amp;middot;개발&amp;nbsp;단계로&amp;nbsp;끌어올리기.&lt;br /&gt;26화.&amp;nbsp;공통&amp;nbsp;언어로서의&amp;nbsp;BDD&amp;nbsp;&amp;mdash;&amp;nbsp;Gherkin으로&amp;nbsp;기획&amp;middot;개발&amp;middot;QA를&amp;nbsp;한&amp;nbsp;문장에&amp;nbsp;모으기.&lt;br /&gt;27화.&amp;nbsp;AI를&amp;nbsp;지휘하는&amp;nbsp;운영&amp;nbsp;모델&amp;nbsp;&amp;mdash;&amp;nbsp;20명&amp;nbsp;규모&amp;nbsp;팀을&amp;nbsp;위한&amp;nbsp;AI&amp;nbsp;오케스트레이션&amp;nbsp;가이드라인과&amp;nbsp;코칭.&lt;br /&gt;28화.&amp;nbsp;표준과&amp;nbsp;AI를&amp;nbsp;잇다&amp;nbsp;&amp;mdash;&amp;nbsp;KOLAS&amp;nbsp;인정&amp;nbsp;요건&amp;middot;품질&amp;nbsp;표준을&amp;nbsp;AI&amp;nbsp;검증&amp;nbsp;체계로&amp;nbsp;연결하는&amp;nbsp;도메인&amp;nbsp;전문성.&lt;br /&gt;29화.&amp;nbsp;데모를&amp;nbsp;프로덕션으로&amp;nbsp;옮기는&amp;nbsp;비용&amp;nbsp;&amp;mdash;&amp;nbsp;30분&amp;nbsp;데모와&amp;nbsp;실전의&amp;nbsp;거리,&amp;nbsp;사람의&amp;nbsp;감독이&amp;nbsp;끝까지&amp;nbsp;필요한&amp;nbsp;이유를&amp;nbsp;균형&amp;nbsp;있게&amp;nbsp;정리.&lt;br /&gt;30화.&amp;nbsp;테스터에서&amp;nbsp;품질&amp;nbsp;아키텍트로&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;테스터가 Playwright를 선택하는 순간, 자동화가 진짜 안정적으로 변한다&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI 시대에 테스트 자동화를 시작하려는 테스터라면 &amp;ldquo;Selenium, Cypress, Playwright&amp;hellip; 뭐부터 해야 하지?&amp;rdquo; 하고 고민하게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;왜 하필 Playwright인지, 실제로 첫 테스트를 어떻게 작성하는지 중학생도 이해할 수 있게 차근차근 풀어보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;오래된 자전거와 최신 전기 스쿠터&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;중학생 때 자전거를 타고 학교를 다녔다고 생각해 보세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오래된 자전거는 페달을 열심히 밟아도 속도가 잘 안 나고, 바퀴가 헐거워져서 자주 고장 납니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런데 최신 전기 스쿠터는 버튼 하나로 부드럽게 출발하고, 언덕도 쉽게 올라가며, GPS까지 알려줘요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Selenium은 그 오래된 자전거와 비슷합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한때 최고였지만, 현대 웹의 복잡한 동작(비동기, Shadow DOM, 모바일)을 다루려면 많은 노력과 우회 코드가 필요하죠.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반면 Playwright는 전기 스쿠터처럼 만들어졌어요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Microsoft가 개발한 이 도구는 Chromium, Firefox, WebKit(사파리)까지 한 번에 지원하고, 자동 대기 기능이 뛰어나서 테스트가 훨씬 안정적입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Playwright를 선택해야 하는 현실적인 이유&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Playwright가 빛나는 첫 번째 이유는 &lt;b&gt;신뢰성&lt;/b&gt;입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;웹 페이지가 로딩되는 동안 &amp;ldquo;이 버튼이 나타날 때까지 기다려&amp;rdquo; 같은 코드를 일일이 쓰지 않아도 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자동으로 스마트하게 기다려주기 때문에 &amp;lsquo;플래키(flaky)&amp;rsquo; 테스트, 즉 가끔 성공하고 가끔 실패하는 불안정한 테스트가 크게 줄어듭니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 번째는 &lt;b&gt;속도와 효율&lt;/b&gt;입니다. 병렬 실행이 기본으로 지원되고, 브라우저를 가볍게 제어할 수 있어 테스트가 빠르게 끝납니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제 프로젝트에서 Selenium 대비 2~3배 빠른 경우도 흔해요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;세 번째는 &lt;b&gt;현대 웹에 최적화&lt;/b&gt;되어 있다는 점입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;API 테스트, 파일 업로드&amp;middot;다운로드, 모바일 에뮬레이션, 네트워크 가로채기까지 한 도구로 모두 처리할 수 있어요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특히 AI가 코드를 생성해주는 시대에 Playwright의 명확한 API는 AI가 만들어준 코드를 읽고 수정하기도 훨씬 수월합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마지막으로 커뮤니티와 지속적인 업데이트가 활발하다는 것도 큰 장점입니다. 테스터가 성장하면서 필요한 기능이 계속 추가되고 있어요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;첫 테스트, 직접 손으로 작성해 보기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이론만 듣는 것보다 직접 타보는 게 중요하죠. Node.js가 설치되어 있다면 터미널에서 아래 명령어만 입력하면 Playwright 환경이 준비됩니다.&lt;/p&gt;
&lt;pre class=&quot;coffeescript&quot;&gt;&lt;code&gt;npm init playwright@latest&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치가 끝나면 &lt;code&gt;tests/example.spec.ts&lt;/code&gt; 같은 파일이 생깁니다. 첫 테스트를 이렇게 작성해 보세요.&lt;/p&gt;
&lt;pre class=&quot;xl&quot;&gt;&lt;code&gt;import { test, expect } from '@playwright/test';

test('Google 홈페이지에서 검색이 제대로 되는지 확인', async ({ page }) =&amp;gt; {
  await page.goto('https://google.com');

  // 검색창에 'Playwright' 입력
  await page.getByRole('textbox', { name: '검색' }).fill('Playwright');
  await page.getByRole('button', { name: 'Google 검색' }).click();

  // 결과 페이지에 Playwright 관련 내용이 있는지 확인
  await expect(page.getByRole('heading', { name: /Playwright/ })).toBeVisible();
});&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 코드의 아름다운 점은 읽기 쉽다는 거예요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;페이지로 가라, 입력해라, 클릭해라, 이게 보이는지 확인해라&amp;rdquo;처럼 사람 말처럼 자연스럽습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실행은 &lt;code&gt;npx playwright test&lt;/code&gt; 한 줄이면 끝납니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;브라우저가 자동으로 열리면서 테스트가 진행되는 모습을 직접 볼 수 있어요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Trace Viewer로 실패를 영상처럼 분석하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테스트가 실패하면 &lt;code&gt;npx playwright show-trace trace.zip&lt;/code&gt; 명령으로 Trace Viewer를 열어보세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마치 CCTV 영상을 돌려보듯, 클릭 하나하나와 화면 변화를 타임라인으로 확인할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 기능 하나만으로도 디버깅 시간이 절반 이상 줄어듭니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Playwright로 시작하는 자동화 여정&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Playwright를 선택하는 순간, 테스터는 단순히 &amp;ldquo;버튼 클릭 자동화&amp;rdquo;를 넘어서 시스템 전체 동작을 안정적으로 검증하는 품질 파트너가 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI가 테스트 코드를 제안해도, Playwright의 명확한 구조 덕분에 쉽게 검토하고 다듬을 수 있어요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫 테스트를 성공시켜보세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 작은 성공이 모여서 데모가 아닌 진짜 프로덕션 품질을 지키는 든든한 기반이 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음 단계에서는 더 강력한 셀렉터와 대기 전략을 함께 파헤쳐 보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>11. 자료실&amp;middot;기타/테스트 관련 강좌</category>
      <category>AI 시대 QA</category>
      <category>API 테스트</category>
      <category>Flaky 테스트</category>
      <category>Playwright</category>
      <category>Playwright Trace Viewer</category>
      <category>왜 Playwright</category>
      <category>첫 테스트 작성</category>
      <category>테스터 성장</category>
      <category>테스트 자동화</category>
      <author>testmanager</author>
      <guid isPermaLink="true">https://testmanager.tistory.com/626</guid>
      <comments>https://testmanager.tistory.com/626#entry626comment</comments>
      <pubDate>Thu, 9 Jul 2026 07:21:37 +0900</pubDate>
    </item>
    <item>
      <title>5화. API의 두 얼굴 &amp;mdash; REST와 GraphQL의 차이와 테스트 관점. 실습: 같은 기능을 두 방식으로 호출&amp;middot;검증.</title>
      <link>https://testmanager.tistory.com/625</link>
      <description>&lt;p data-ke-size=&quot;size14&quot;&gt;AI&amp;nbsp;시대의&amp;nbsp;품질&amp;nbsp;아키텍트&amp;nbsp;:&amp;nbsp;테스터에서&amp;nbsp;시스템&amp;nbsp;품질&amp;nbsp;설계자로&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;0.&amp;nbsp;오리엔테이션&lt;br /&gt;0화.&amp;nbsp;30분&amp;nbsp;데모와&amp;nbsp;프로덕션&amp;nbsp;사이의&amp;nbsp;거리&amp;nbsp;&amp;mdash;&amp;nbsp;현실&amp;nbsp;인식과&amp;nbsp;방향&amp;nbsp;제시&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;1.&amp;nbsp;기초&amp;nbsp;체력&lt;br /&gt;AI가&amp;nbsp;짠&amp;nbsp;코드를&amp;nbsp;읽고&amp;nbsp;검증할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;눈과&amp;nbsp;웹&amp;middot;API&amp;nbsp;원리&amp;nbsp;다지기&lt;br /&gt;1화.&amp;nbsp;AI가&amp;nbsp;짠&amp;nbsp;코드를&amp;nbsp;읽는&amp;nbsp;눈&amp;nbsp;&amp;mdash;&amp;nbsp;Python&amp;nbsp;또는&amp;nbsp;JS/TS&amp;nbsp;중&amp;nbsp;하나를&amp;nbsp;코드&amp;nbsp;리뷰&amp;nbsp;가능한&amp;nbsp;수준까지.&amp;nbsp;실습:&amp;nbsp;AI가&amp;nbsp;생성한&amp;nbsp;테스트&amp;nbsp;코드의&amp;nbsp;버그&amp;nbsp;3개&amp;nbsp;찾기.&lt;br /&gt;2화.&amp;nbsp;변경은&amp;nbsp;diff에서&amp;nbsp;시작된다&amp;nbsp;&amp;mdash;&amp;nbsp;Git과&amp;nbsp;PR&amp;nbsp;기반&amp;nbsp;협업,&amp;nbsp;변경&amp;nbsp;기반&amp;nbsp;테스트의&amp;nbsp;첫&amp;nbsp;단추.&amp;nbsp;실습:&amp;nbsp;PR&amp;nbsp;diff만&amp;nbsp;보고&amp;nbsp;영향&amp;nbsp;범위&amp;nbsp;추정해&amp;nbsp;보기.&lt;br /&gt;3화.&amp;nbsp;웹은&amp;nbsp;어떻게&amp;nbsp;움직이는가&amp;nbsp;&amp;mdash;&amp;nbsp;HTTP,&amp;nbsp;쿠키&amp;middot;세션의&amp;nbsp;원리.&amp;nbsp;실습:&amp;nbsp;개발자도구로&amp;nbsp;요청&amp;middot;응답&amp;nbsp;해부.&lt;br /&gt;4화.&amp;nbsp;인증의&amp;nbsp;지도&amp;nbsp;&amp;mdash;&amp;nbsp;OAuth&amp;middot;JWT&amp;middot;RBAC를&amp;nbsp;테스터&amp;nbsp;시선으로.&amp;nbsp;실습:&amp;nbsp;토큰&amp;nbsp;만료&amp;middot;권한&amp;nbsp;우회&amp;nbsp;시나리오&amp;nbsp;설계.&lt;br /&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;5화.&amp;nbsp;API의&amp;nbsp;두&amp;nbsp;얼굴&amp;nbsp;&amp;mdash;&amp;nbsp;REST와&amp;nbsp;GraphQL의&amp;nbsp;차이와&amp;nbsp;테스트&amp;nbsp;관점.&amp;nbsp;실습:&amp;nbsp;같은&amp;nbsp;기능을&amp;nbsp;두&amp;nbsp;방식으로&amp;nbsp;호출&amp;middot;검증.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;2.&amp;nbsp;테스트&amp;nbsp;자동화&lt;br /&gt;Playwright를&amp;nbsp;주력으로&amp;nbsp;깊이&amp;nbsp;익히기&lt;br /&gt;6화.&amp;nbsp;왜&amp;nbsp;Playwright인가&amp;nbsp;&amp;mdash;&amp;nbsp;도구&amp;nbsp;선택의&amp;nbsp;근거와&amp;nbsp;첫&amp;nbsp;테스트&amp;nbsp;작성.&lt;br /&gt;7화.&amp;nbsp;플래키의&amp;nbsp;근원,&amp;nbsp;셀렉터와&amp;nbsp;대기&amp;nbsp;&amp;mdash;&amp;nbsp;안정적&amp;nbsp;셀렉터와&amp;nbsp;비동기&amp;nbsp;대기&amp;nbsp;전략.&lt;br /&gt;8화.&amp;nbsp;실패를&amp;nbsp;영상으로&amp;nbsp;읽는다&amp;nbsp;&amp;mdash;&amp;nbsp;Trace&amp;nbsp;Viewer로&amp;nbsp;원인&amp;nbsp;추적.&lt;br /&gt;9화.&amp;nbsp;계약을&amp;nbsp;테스트하라&amp;nbsp;&amp;mdash;&amp;nbsp;API&amp;middot;계약&amp;nbsp;테스트(OpenAPI/GraphQL&amp;nbsp;schema&amp;nbsp;기반).&lt;br /&gt;10화.&amp;nbsp;눈에&amp;nbsp;보이는&amp;nbsp;회귀,&amp;nbsp;모두에게&amp;nbsp;열린&amp;nbsp;화면&amp;nbsp;&amp;mdash;&amp;nbsp;시각적&amp;nbsp;회귀와&amp;nbsp;접근성&amp;nbsp;자동&amp;nbsp;검사.&amp;nbsp;(Selenium&amp;middot;Appium은&amp;nbsp;레거시&amp;middot;모바일&amp;nbsp;대응용으로&amp;nbsp;짧게&amp;nbsp;짚기)&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;3.&amp;nbsp;AI&amp;nbsp;활용&amp;middot;MCP&amp;nbsp;(연재&amp;nbsp;핵심)&lt;br /&gt;AI를&amp;nbsp;단순&amp;nbsp;도구가&amp;nbsp;아닌&amp;nbsp;차별화&amp;nbsp;무기로&amp;nbsp;만드는&amp;nbsp;구간&lt;br /&gt;11화.&amp;nbsp;프롬프트로&amp;nbsp;테스트를&amp;nbsp;설계하기&amp;nbsp;&amp;mdash;&amp;nbsp;명세&amp;middot;PR을&amp;nbsp;입력해&amp;nbsp;케이스를&amp;nbsp;생성&amp;middot;우선순위화하는&amp;nbsp;패턴&amp;nbsp;정립.&lt;br /&gt;12화.&amp;nbsp;에이전트는&amp;nbsp;무엇을&amp;nbsp;대신하는가&amp;nbsp;&amp;mdash;&amp;nbsp;에이전트형&amp;nbsp;테스트의&amp;nbsp;개념과&amp;nbsp;한계(수동&amp;nbsp;노력&amp;nbsp;최대&amp;nbsp;45%&amp;nbsp;절감&amp;nbsp;추정).&lt;br /&gt;13화.&amp;nbsp;스스로&amp;nbsp;고치는&amp;nbsp;테스트,&amp;nbsp;그리고&amp;nbsp;그&amp;nbsp;한계&amp;nbsp;&amp;mdash;&amp;nbsp;자가&amp;nbsp;치유와&amp;nbsp;AI&amp;nbsp;Healer.&amp;nbsp;셀렉터&amp;middot;DOM&amp;nbsp;변경에서&amp;nbsp;75%+&amp;nbsp;복구,&amp;nbsp;그러나&amp;nbsp;복잡한&amp;nbsp;로직&amp;nbsp;버그는&amp;nbsp;사람&amp;nbsp;몫.&lt;br /&gt;14화.&amp;nbsp;npx&amp;nbsp;playwright&amp;nbsp;init-agents&amp;nbsp;&amp;mdash;&amp;nbsp;첫&amp;nbsp;MCP&amp;nbsp;실습&amp;nbsp;&amp;mdash;&amp;nbsp;접근성&amp;nbsp;트리&amp;nbsp;기반&amp;nbsp;Playwright&amp;nbsp;MCP&amp;nbsp;시작하기.&lt;br /&gt;15화.&amp;nbsp;MCP로&amp;nbsp;통합을&amp;nbsp;검증하다&amp;nbsp;&amp;mdash;&amp;nbsp;MCP&amp;nbsp;기반&amp;nbsp;통합&amp;nbsp;검증&amp;nbsp;실습.&lt;br /&gt;16화.&amp;nbsp;환각을&amp;nbsp;거르는&amp;nbsp;사람&amp;nbsp;&amp;mdash;&amp;nbsp;AI&amp;nbsp;결과의&amp;nbsp;환각&amp;middot;오탐을&amp;nbsp;걸러내는&amp;nbsp;인간&amp;nbsp;검증&amp;nbsp;체계&amp;nbsp;설계.&amp;nbsp;직무&amp;nbsp;특성상&amp;nbsp;가장&amp;nbsp;큰&amp;nbsp;강점이&amp;nbsp;되는&amp;nbsp;지점.&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;4.&amp;nbsp;파이프라인&amp;middot;운영&lt;br /&gt;개인기를&amp;nbsp;조직의&amp;nbsp;신뢰&amp;nbsp;시스템으로&amp;nbsp;연결&lt;br /&gt;17화.&amp;nbsp;문&amp;nbsp;앞의&amp;nbsp;품질&amp;nbsp;게이트&amp;nbsp;&amp;mdash;&amp;nbsp;CI/CD&amp;nbsp;품질&amp;nbsp;게이트&amp;nbsp;구성.&lt;br /&gt;18화.&amp;nbsp;플래키를&amp;nbsp;격리하라&amp;nbsp;&amp;mdash;&amp;nbsp;불안정&amp;nbsp;테스트&amp;nbsp;격리와&amp;nbsp;실패&amp;nbsp;원인&amp;nbsp;자동&amp;nbsp;분류.&lt;br /&gt;19화.&amp;nbsp;관측성을&amp;nbsp;테스트로&amp;nbsp;환원하기&amp;nbsp;&amp;mdash;&amp;nbsp;로그&amp;middot;메트릭&amp;middot;트레이스(OpenTelemetry)를&amp;nbsp;테스트&amp;nbsp;사고로&amp;nbsp;끌어오기.&lt;br /&gt;20화.&amp;nbsp;진짜&amp;nbsp;같은&amp;nbsp;가짜&amp;nbsp;데이터&amp;nbsp;&amp;mdash;&amp;nbsp;테스트&amp;nbsp;데이터&amp;nbsp;합성과&amp;nbsp;마스킹.&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;5.&amp;nbsp;비기능&amp;nbsp;영역&lt;br /&gt;눈에&amp;nbsp;보이지&amp;nbsp;않는&amp;nbsp;품질&amp;nbsp;지키기&lt;br /&gt;21화.&amp;nbsp;무게를&amp;nbsp;견디는가&amp;nbsp;&amp;mdash;&amp;nbsp;k6/JMeter로&amp;nbsp;부하&amp;middot;스트레스&amp;nbsp;테스트.&lt;br /&gt;22화.&amp;nbsp;손안의&amp;nbsp;성능&amp;nbsp;&amp;mdash;&amp;nbsp;모바일&amp;nbsp;성능&amp;nbsp;지표(FPS&amp;middot;시작속도&amp;middot;메모리&amp;middot;배터리).&lt;br /&gt;23화.&amp;nbsp;공격자처럼&amp;nbsp;생각하기&amp;nbsp;&amp;mdash;&amp;nbsp;OWASP&amp;nbsp;Top&amp;nbsp;10으로&amp;nbsp;본&amp;nbsp;보안&amp;nbsp;기본기.&lt;br /&gt;24화.&amp;nbsp;코드를&amp;nbsp;스캔하는&amp;nbsp;도구들&amp;nbsp;&amp;mdash;&amp;nbsp;SAST&amp;middot;DAST&amp;middot;SCA(SonarQube&amp;middot;OWASP&amp;nbsp;ZAP&amp;middot;Snyk)&amp;nbsp;실전.&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;6.&amp;nbsp;전략&amp;middot;리더십&amp;middot;표준&lt;br /&gt;아키텍트로서의&amp;nbsp;설계&amp;middot;운영&amp;middot;리더십&lt;br /&gt;25화.&amp;nbsp;테스트&amp;nbsp;가능성을&amp;nbsp;설계에&amp;nbsp;심다&amp;nbsp;&amp;mdash;&amp;nbsp;Testability를&amp;nbsp;기획&amp;middot;개발&amp;nbsp;단계로&amp;nbsp;끌어올리기.&lt;br /&gt;26화.&amp;nbsp;공통&amp;nbsp;언어로서의&amp;nbsp;BDD&amp;nbsp;&amp;mdash;&amp;nbsp;Gherkin으로&amp;nbsp;기획&amp;middot;개발&amp;middot;QA를&amp;nbsp;한&amp;nbsp;문장에&amp;nbsp;모으기.&lt;br /&gt;27화.&amp;nbsp;AI를&amp;nbsp;지휘하는&amp;nbsp;운영&amp;nbsp;모델&amp;nbsp;&amp;mdash;&amp;nbsp;20명&amp;nbsp;규모&amp;nbsp;팀을&amp;nbsp;위한&amp;nbsp;AI&amp;nbsp;오케스트레이션&amp;nbsp;가이드라인과&amp;nbsp;코칭.&lt;br /&gt;28화.&amp;nbsp;표준과&amp;nbsp;AI를&amp;nbsp;잇다&amp;nbsp;&amp;mdash;&amp;nbsp;KOLAS&amp;nbsp;인정&amp;nbsp;요건&amp;middot;품질&amp;nbsp;표준을&amp;nbsp;AI&amp;nbsp;검증&amp;nbsp;체계로&amp;nbsp;연결하는&amp;nbsp;도메인&amp;nbsp;전문성.&lt;br /&gt;29화.&amp;nbsp;데모를&amp;nbsp;프로덕션으로&amp;nbsp;옮기는&amp;nbsp;비용&amp;nbsp;&amp;mdash;&amp;nbsp;30분&amp;nbsp;데모와&amp;nbsp;실전의&amp;nbsp;거리,&amp;nbsp;사람의&amp;nbsp;감독이&amp;nbsp;끝까지&amp;nbsp;필요한&amp;nbsp;이유를&amp;nbsp;균형&amp;nbsp;있게&amp;nbsp;정리.&lt;br /&gt;30화.&amp;nbsp;테스터에서&amp;nbsp;품질&amp;nbsp;아키텍트로&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;API의 두 얼굴을 알면 테스트가 훨씬 똑똑해진다&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테스터라면 REST API만 알던 시대에서 GraphQL까지 마주하게 된 순간, &amp;ldquo;이걸 어떻게 테스트해야 하지?&amp;rdquo; 하고 당황한 적이 있을 겁니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;같은 기능을 두 방식으로 부르고 검증하는 실전 감각을 익히면, API 품질을 더 깊고 효율적으로 지킬 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;레고 상자와 레고 카탈로그, API의 두 가지 방식&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;중학생 때 친구 집에서 레고를 같이 맞춰본 적 있나요?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 친구는 &amp;ldquo;빨간 블록 4개, 파란 지붕 1개, 바퀴 2개 주세요&amp;rdquo;라고 하나씩 요청합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또 다른 친구는 &amp;ldquo;자동차 완성품 세트 하나 주세요&amp;rdquo;라고 한 번에 말하죠.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;REST API는 첫 번째 친구 방식이고, GraphQL은 두 번째 친구 방식입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;둘 다 레고(데이터)를 가져오지만, 요청하는 방법과 받는 결과가 완전히 다릅니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;REST에서는 URL과 HTTP 메서드( GET, POST 등 )로 자원을 지정합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어 사용자 정보를 가져오려면 &lt;code&gt;/users/123&lt;/code&gt;처럼 요청하죠.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필요한 데이터가 여러 곳에 있으면 여러 번 요청해야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GraphQL은 하나의 endpoint(&lt;code&gt;/graphql&lt;/code&gt;)로 모든 걸 처리합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;사용자 123번의 이름, 이메일, 그리고 그 사람이 작성한 게시물 제목 3개만 알려줘&amp;rdquo;처럼 정확히 원하는 것만 한 번에 요청할 수 있어요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;REST의 장점과 테스터가 주의할 점&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;REST는 직관적이고 이해하기 쉽습니다. 각 기능마다 URL이 명확하니, &amp;ldquo;이 API는 사용자 등록만 한다&amp;rdquo;처럼 역할이 뚜렷하죠.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 테스터 입장에서는 여러 번의 요청을 연속으로 보내야 하는 경우가 많아집니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어 사용자 프로필 페이지 하나를 검증하려면 로그인 &amp;rarr; 사용자 정보 &amp;rarr; 게시물 목록 &amp;rarr; 댓글 수 등을 따로 불러와야 해요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요청이 많아지면 네트워크 지연이 쌓이고, 중간에 하나라도 실패하면 전체 흐름이 깨지기 쉽습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 over-fetching(필요 이상으로 많은 데이터 받기)과 under-fetching(데이터가 부족해서 추가 요청)이 자주 발생해요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테스터는 이런 불필요한 데이터 전송이 성능에 미치는 영향을 꼭 확인해야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;GraphQL의 매력과 숨은 함정&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GraphQL은 &amp;ldquo;정확히 필요한 데이터만&amp;rdquo; 받을 수 있어요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 번의 요청으로 화면에 필요한 모든 걸 가져오니, 모바일처럼 네트워크가 느린 환경에서 특히 빛납니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테스터 관점에서는 schema(데이터 구조 명세)가 매우 중요합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;schema가 잘 정의되어 있으면, 요청한 필드가 실제로 존재하는지, 타입이 맞는지 자동으로 검증할 수 있어요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 한 번의 요청에 너무 많은 걸 물어보면 서버 부하가 커질 수 있고, 복잡한 쿼리를 잘못 만들면 &amp;ldquo;N+1 문제&amp;rdquo;처럼 비효율적인 데이터베이스 호출이 발생합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또 권한 검증이 세밀하게 필요해요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;이 사용자는 이 필드를 볼 수 있나?&amp;rdquo;를 매번 체크해야 하죠.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;같은 기능을 두 방식으로 직접 불러보고 검증하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이해를 더 단단히 하려면 직접 손으로 만져보는 게 최고입니다. 간단한 실습을 해보죠.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 무료 공개 API를 활용합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;REST로는 JSONPlaceholder (&lt;a href=&quot;https://jsonplaceholder.typicode.com&quot;&gt;https://jsonplaceholder.typicode.com&lt;/a&gt;), GraphQL로는 공개 GraphQL API (예: &lt;a href=&quot;https://countries.trevorblades.com&quot;&gt;https://countries.trevorblades.com&lt;/a&gt;) 등을 써보세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또는 Postman이나 VS Code의 REST Client, GraphQL Playground를 사용하면 편합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;REST 방식으로 사용자와 게시물 정보 가져오기&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;code&gt;/users/1&lt;/code&gt;을 GET으로 호출해 사용자 정보를 받습니다.&lt;/li&gt;
&lt;li&gt;그 사용자 id로 &lt;code&gt;/posts?userId=1&lt;/code&gt;을 다시 호출해 게시물을 가져옵니다.&lt;/li&gt;
&lt;li&gt;응답에 기대한 필드(이름, 이메일, 게시물 제목)가 있는지, 상태 코드가 200인지, 데이터 타입이 올바른지 확인합니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;GraphQL 방식으로 한 번에 가져오기&lt;/b&gt;&lt;br /&gt;같은 정보를 GraphQL 쿼리로 작성해 보세요.&lt;/p&gt;
&lt;pre class=&quot;applescript&quot;&gt;&lt;code&gt;query {
  user(id: &quot;1&quot;) {
    name
    email
    posts {
      title
    }
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 번의 요청으로 모든 게 돌아옵니다. 응답에서 불필요한 필드가 섞이지 않았는지, schema 오류는 없는지, 그리고 성능상 더 빠른지 비교해 보세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실습할 때 특히 신경 써야 할 점은 &lt;b&gt;오류 처리&lt;/b&gt;와 &lt;b&gt;인증&lt;/b&gt;입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;REST에서는 404, 401 같은 HTTP 상태 코드를 잘 봐야 하고, GraphQL에서는 errors 배열 안에 상세 메시지가 들어옵니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;둘 다 다르게 검증해야 해요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;실제 프로젝트에서 적용하는 감각&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로젝트에 따라 REST가 적합할 때도 있고 GraphQL이 더 나을 때도 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테스터로서 중요한 건 &amp;ldquo;이 API가 어떤 방식을 쓰든, 사용자에게 안정적으로 데이터가 전달되는가&amp;rdquo;를 확인하는 눈입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요청 횟수, 데이터 양, 응답 시간, 권한 우회 가능성, schema 변화에 따른 회귀 등을 꾸준히 체크하다 보면 자연스럽게 두 얼굴의 차이를 몸으로 느끼게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 감각을 익히면 AI가 생성한 API 테스트 코드도 더 날카롭게 검토할 수 있고, 개발자와 대화할 때도 &amp;ldquo;이 부분은 GraphQL에서 N+1 문제가 될 수 있으니&amp;hellip;&amp;rdquo;처럼 구체적인 피드백을 줄 수 있어요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫 실습부터 조금씩 시작해 보세요. API의 두 얼굴을 제대로 알게 되는 순간, 테스트의 깊이가 한층 더 단단해질 겁니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>11. 자료실&amp;middot;기타/테스트 관련 강좌</category>
      <category>API 비교</category>
      <category>API 테스트</category>
      <category>graphql</category>
      <category>GraphQL Playground</category>
      <category>Postman</category>
      <category>rest api</category>
      <category>소프트웨어 품질</category>
      <category>테스터 실습</category>
      <category>테스트 관점</category>
      <author>testmanager</author>
      <guid isPermaLink="true">https://testmanager.tistory.com/625</guid>
      <comments>https://testmanager.tistory.com/625#entry625comment</comments>
      <pubDate>Wed, 8 Jul 2026 08:11:54 +0900</pubDate>
    </item>
    <item>
      <title>4화. 인증의 지도 &amp;mdash; OAuth&amp;middot;JWT&amp;middot;RBAC를 테스터 시선으로. 실습: 토큰 만료&amp;middot;권한 우회 시나리오 설계.</title>
      <link>https://testmanager.tistory.com/624</link>
      <description>&lt;p data-ke-size=&quot;size14&quot;&gt;AI&amp;nbsp;시대의&amp;nbsp;품질&amp;nbsp;아키텍트&amp;nbsp;:&amp;nbsp;테스터에서&amp;nbsp;시스템&amp;nbsp;품질&amp;nbsp;설계자로&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;0.&amp;nbsp;오리엔테이션&lt;br /&gt;0화.&amp;nbsp;30분&amp;nbsp;데모와&amp;nbsp;프로덕션&amp;nbsp;사이의&amp;nbsp;거리&amp;nbsp;&amp;mdash;&amp;nbsp;현실&amp;nbsp;인식과&amp;nbsp;방향&amp;nbsp;제시&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;1.&amp;nbsp;기초&amp;nbsp;체력&lt;br /&gt;AI가&amp;nbsp;짠&amp;nbsp;코드를&amp;nbsp;읽고&amp;nbsp;검증할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;눈과&amp;nbsp;웹&amp;middot;API&amp;nbsp;원리&amp;nbsp;다지기&lt;br /&gt;1화.&amp;nbsp;AI가&amp;nbsp;짠&amp;nbsp;코드를&amp;nbsp;읽는&amp;nbsp;눈&amp;nbsp;&amp;mdash;&amp;nbsp;Python&amp;nbsp;또는&amp;nbsp;JS/TS&amp;nbsp;중&amp;nbsp;하나를&amp;nbsp;코드&amp;nbsp;리뷰&amp;nbsp;가능한&amp;nbsp;수준까지.&amp;nbsp;실습:&amp;nbsp;AI가&amp;nbsp;생성한&amp;nbsp;테스트&amp;nbsp;코드의&amp;nbsp;버그&amp;nbsp;3개&amp;nbsp;찾기.&lt;br /&gt;2화.&amp;nbsp;변경은&amp;nbsp;diff에서&amp;nbsp;시작된다&amp;nbsp;&amp;mdash;&amp;nbsp;Git과&amp;nbsp;PR&amp;nbsp;기반&amp;nbsp;협업,&amp;nbsp;변경&amp;nbsp;기반&amp;nbsp;테스트의&amp;nbsp;첫&amp;nbsp;단추.&amp;nbsp;실습:&amp;nbsp;PR&amp;nbsp;diff만&amp;nbsp;보고&amp;nbsp;영향&amp;nbsp;범위&amp;nbsp;추정해&amp;nbsp;보기.&lt;br /&gt;3화.&amp;nbsp;웹은&amp;nbsp;어떻게&amp;nbsp;움직이는가&amp;nbsp;&amp;mdash;&amp;nbsp;HTTP,&amp;nbsp;쿠키&amp;middot;세션의&amp;nbsp;원리.&amp;nbsp;실습:&amp;nbsp;개발자도구로&amp;nbsp;요청&amp;middot;응답&amp;nbsp;해부.&lt;br /&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;4화.&amp;nbsp;인증의&amp;nbsp;지도&amp;nbsp;&amp;mdash;&amp;nbsp;OAuth&amp;middot;JWT&amp;middot;RBAC를&amp;nbsp;테스터&amp;nbsp;시선으로.&amp;nbsp;실습:&amp;nbsp;토큰&amp;nbsp;만료&amp;middot;권한&amp;nbsp;우회&amp;nbsp;시나리오&amp;nbsp;설계.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;5화.&amp;nbsp;API의&amp;nbsp;두&amp;nbsp;얼굴&amp;nbsp;&amp;mdash;&amp;nbsp;REST와&amp;nbsp;GraphQL의&amp;nbsp;차이와&amp;nbsp;테스트&amp;nbsp;관점.&amp;nbsp;실습:&amp;nbsp;같은&amp;nbsp;기능을&amp;nbsp;두&amp;nbsp;방식으로&amp;nbsp;호출&amp;middot;검증.&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;2.&amp;nbsp;테스트&amp;nbsp;자동화&lt;br /&gt;Playwright를&amp;nbsp;주력으로&amp;nbsp;깊이&amp;nbsp;익히기&lt;br /&gt;6화.&amp;nbsp;왜&amp;nbsp;Playwright인가&amp;nbsp;&amp;mdash;&amp;nbsp;도구&amp;nbsp;선택의&amp;nbsp;근거와&amp;nbsp;첫&amp;nbsp;테스트&amp;nbsp;작성.&lt;br /&gt;7화.&amp;nbsp;플래키의&amp;nbsp;근원,&amp;nbsp;셀렉터와&amp;nbsp;대기&amp;nbsp;&amp;mdash;&amp;nbsp;안정적&amp;nbsp;셀렉터와&amp;nbsp;비동기&amp;nbsp;대기&amp;nbsp;전략.&lt;br /&gt;8화.&amp;nbsp;실패를&amp;nbsp;영상으로&amp;nbsp;읽는다&amp;nbsp;&amp;mdash;&amp;nbsp;Trace&amp;nbsp;Viewer로&amp;nbsp;원인&amp;nbsp;추적.&lt;br /&gt;9화.&amp;nbsp;계약을&amp;nbsp;테스트하라&amp;nbsp;&amp;mdash;&amp;nbsp;API&amp;middot;계약&amp;nbsp;테스트(OpenAPI/GraphQL&amp;nbsp;schema&amp;nbsp;기반).&lt;br /&gt;10화.&amp;nbsp;눈에&amp;nbsp;보이는&amp;nbsp;회귀,&amp;nbsp;모두에게&amp;nbsp;열린&amp;nbsp;화면&amp;nbsp;&amp;mdash;&amp;nbsp;시각적&amp;nbsp;회귀와&amp;nbsp;접근성&amp;nbsp;자동&amp;nbsp;검사.&amp;nbsp;(Selenium&amp;middot;Appium은&amp;nbsp;레거시&amp;middot;모바일&amp;nbsp;대응용으로&amp;nbsp;짧게&amp;nbsp;짚기)&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;3.&amp;nbsp;AI&amp;nbsp;활용&amp;middot;MCP&amp;nbsp;(연재&amp;nbsp;핵심)&lt;br /&gt;AI를&amp;nbsp;단순&amp;nbsp;도구가&amp;nbsp;아닌&amp;nbsp;차별화&amp;nbsp;무기로&amp;nbsp;만드는&amp;nbsp;구간&lt;br /&gt;11화.&amp;nbsp;프롬프트로&amp;nbsp;테스트를&amp;nbsp;설계하기&amp;nbsp;&amp;mdash;&amp;nbsp;명세&amp;middot;PR을&amp;nbsp;입력해&amp;nbsp;케이스를&amp;nbsp;생성&amp;middot;우선순위화하는&amp;nbsp;패턴&amp;nbsp;정립.&lt;br /&gt;12화.&amp;nbsp;에이전트는&amp;nbsp;무엇을&amp;nbsp;대신하는가&amp;nbsp;&amp;mdash;&amp;nbsp;에이전트형&amp;nbsp;테스트의&amp;nbsp;개념과&amp;nbsp;한계(수동&amp;nbsp;노력&amp;nbsp;최대&amp;nbsp;45%&amp;nbsp;절감&amp;nbsp;추정).&lt;br /&gt;13화.&amp;nbsp;스스로&amp;nbsp;고치는&amp;nbsp;테스트,&amp;nbsp;그리고&amp;nbsp;그&amp;nbsp;한계&amp;nbsp;&amp;mdash;&amp;nbsp;자가&amp;nbsp;치유와&amp;nbsp;AI&amp;nbsp;Healer.&amp;nbsp;셀렉터&amp;middot;DOM&amp;nbsp;변경에서&amp;nbsp;75%+&amp;nbsp;복구,&amp;nbsp;그러나&amp;nbsp;복잡한&amp;nbsp;로직&amp;nbsp;버그는&amp;nbsp;사람&amp;nbsp;몫.&lt;br /&gt;14화.&amp;nbsp;npx&amp;nbsp;playwright&amp;nbsp;init-agents&amp;nbsp;&amp;mdash;&amp;nbsp;첫&amp;nbsp;MCP&amp;nbsp;실습&amp;nbsp;&amp;mdash;&amp;nbsp;접근성&amp;nbsp;트리&amp;nbsp;기반&amp;nbsp;Playwright&amp;nbsp;MCP&amp;nbsp;시작하기.&lt;br /&gt;15화.&amp;nbsp;MCP로&amp;nbsp;통합을&amp;nbsp;검증하다&amp;nbsp;&amp;mdash;&amp;nbsp;MCP&amp;nbsp;기반&amp;nbsp;통합&amp;nbsp;검증&amp;nbsp;실습.&lt;br /&gt;16화.&amp;nbsp;환각을&amp;nbsp;거르는&amp;nbsp;사람&amp;nbsp;&amp;mdash;&amp;nbsp;AI&amp;nbsp;결과의&amp;nbsp;환각&amp;middot;오탐을&amp;nbsp;걸러내는&amp;nbsp;인간&amp;nbsp;검증&amp;nbsp;체계&amp;nbsp;설계.&amp;nbsp;직무&amp;nbsp;특성상&amp;nbsp;가장&amp;nbsp;큰&amp;nbsp;강점이&amp;nbsp;되는&amp;nbsp;지점.&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;4.&amp;nbsp;파이프라인&amp;middot;운영&lt;br /&gt;개인기를&amp;nbsp;조직의&amp;nbsp;신뢰&amp;nbsp;시스템으로&amp;nbsp;연결&lt;br /&gt;17화.&amp;nbsp;문&amp;nbsp;앞의&amp;nbsp;품질&amp;nbsp;게이트&amp;nbsp;&amp;mdash;&amp;nbsp;CI/CD&amp;nbsp;품질&amp;nbsp;게이트&amp;nbsp;구성.&lt;br /&gt;18화.&amp;nbsp;플래키를&amp;nbsp;격리하라&amp;nbsp;&amp;mdash;&amp;nbsp;불안정&amp;nbsp;테스트&amp;nbsp;격리와&amp;nbsp;실패&amp;nbsp;원인&amp;nbsp;자동&amp;nbsp;분류.&lt;br /&gt;19화.&amp;nbsp;관측성을&amp;nbsp;테스트로&amp;nbsp;환원하기&amp;nbsp;&amp;mdash;&amp;nbsp;로그&amp;middot;메트릭&amp;middot;트레이스(OpenTelemetry)를&amp;nbsp;테스트&amp;nbsp;사고로&amp;nbsp;끌어오기.&lt;br /&gt;20화.&amp;nbsp;진짜&amp;nbsp;같은&amp;nbsp;가짜&amp;nbsp;데이터&amp;nbsp;&amp;mdash;&amp;nbsp;테스트&amp;nbsp;데이터&amp;nbsp;합성과&amp;nbsp;마스킹.&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;5.&amp;nbsp;비기능&amp;nbsp;영역&lt;br /&gt;눈에&amp;nbsp;보이지&amp;nbsp;않는&amp;nbsp;품질&amp;nbsp;지키기&lt;br /&gt;21화.&amp;nbsp;무게를&amp;nbsp;견디는가&amp;nbsp;&amp;mdash;&amp;nbsp;k6/JMeter로&amp;nbsp;부하&amp;middot;스트레스&amp;nbsp;테스트.&lt;br /&gt;22화.&amp;nbsp;손안의&amp;nbsp;성능&amp;nbsp;&amp;mdash;&amp;nbsp;모바일&amp;nbsp;성능&amp;nbsp;지표(FPS&amp;middot;시작속도&amp;middot;메모리&amp;middot;배터리).&lt;br /&gt;23화.&amp;nbsp;공격자처럼&amp;nbsp;생각하기&amp;nbsp;&amp;mdash;&amp;nbsp;OWASP&amp;nbsp;Top&amp;nbsp;10으로&amp;nbsp;본&amp;nbsp;보안&amp;nbsp;기본기.&lt;br /&gt;24화.&amp;nbsp;코드를&amp;nbsp;스캔하는&amp;nbsp;도구들&amp;nbsp;&amp;mdash;&amp;nbsp;SAST&amp;middot;DAST&amp;middot;SCA(SonarQube&amp;middot;OWASP&amp;nbsp;ZAP&amp;middot;Snyk)&amp;nbsp;실전.&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;6.&amp;nbsp;전략&amp;middot;리더십&amp;middot;표준&lt;br /&gt;아키텍트로서의&amp;nbsp;설계&amp;middot;운영&amp;middot;리더십&lt;br /&gt;25화.&amp;nbsp;테스트&amp;nbsp;가능성을&amp;nbsp;설계에&amp;nbsp;심다&amp;nbsp;&amp;mdash;&amp;nbsp;Testability를&amp;nbsp;기획&amp;middot;개발&amp;nbsp;단계로&amp;nbsp;끌어올리기.&lt;br /&gt;26화.&amp;nbsp;공통&amp;nbsp;언어로서의&amp;nbsp;BDD&amp;nbsp;&amp;mdash;&amp;nbsp;Gherkin으로&amp;nbsp;기획&amp;middot;개발&amp;middot;QA를&amp;nbsp;한&amp;nbsp;문장에&amp;nbsp;모으기.&lt;br /&gt;27화.&amp;nbsp;AI를&amp;nbsp;지휘하는&amp;nbsp;운영&amp;nbsp;모델&amp;nbsp;&amp;mdash;&amp;nbsp;20명&amp;nbsp;규모&amp;nbsp;팀을&amp;nbsp;위한&amp;nbsp;AI&amp;nbsp;오케스트레이션&amp;nbsp;가이드라인과&amp;nbsp;코칭.&lt;br /&gt;28화.&amp;nbsp;표준과&amp;nbsp;AI를&amp;nbsp;잇다&amp;nbsp;&amp;mdash;&amp;nbsp;KOLAS&amp;nbsp;인정&amp;nbsp;요건&amp;middot;품질&amp;nbsp;표준을&amp;nbsp;AI&amp;nbsp;검증&amp;nbsp;체계로&amp;nbsp;연결하는&amp;nbsp;도메인&amp;nbsp;전문성.&lt;br /&gt;29화.&amp;nbsp;데모를&amp;nbsp;프로덕션으로&amp;nbsp;옮기는&amp;nbsp;비용&amp;nbsp;&amp;mdash;&amp;nbsp;30분&amp;nbsp;데모와&amp;nbsp;실전의&amp;nbsp;거리,&amp;nbsp;사람의&amp;nbsp;감독이&amp;nbsp;끝까지&amp;nbsp;필요한&amp;nbsp;이유를&amp;nbsp;균형&amp;nbsp;있게&amp;nbsp;정리.&lt;br /&gt;30화.&amp;nbsp;테스터에서&amp;nbsp;품질&amp;nbsp;아키텍트로&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;로그인 한 번으로 모든 문이 열린 듯하지만, 실제로는 열쇠와 자물쇠가 복잡하게 얽혀 있다&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테스터가 인증 문제를 제대로 이해하지 못하면, &amp;ldquo;로그인됐으니 다 될 거야&amp;rdquo;라는 착각 속에서 심각한 보안 구멍을 놓칩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;OAuth, JWT, RBAC를 테스터 눈으로 풀어보고, 토큰 만료와 권한 우회 시나리오를 직접 설계해 보는 시간을 가져보세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쉽게 이해할 수 있게 비유하며, 실전에서 바로 써먹을 수 있는 관점을 정리했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;집 열쇠와 출입증이 따로 노는 이유&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;집에 들어갈 때 현관 열쇠 하나만 있으면 모든 방이 열리나요?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아니죠. 현관은 공용 열쇠, 안방은 별도 열쇠, 중요한 금고는 비밀번호까지 필요합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;웹 인증도 똑같아요. 단순 로그인 하나로 끝나지 않고 여러 층위의 &amp;lsquo;열쇠&amp;rsquo;와 &amp;lsquo;자격 확인&amp;rsquo;이 작동합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;OAuth&lt;/b&gt;는 &amp;ldquo;다른 서비스의 문을 대신 열어달라&amp;rdquo;고 부탁하는 시스템입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어 구글 계정으로 네이버나 카카오에 로그인하는 거예요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내가 직접 비밀번호를 주는 대신, 구글이 &amp;ldquo;이 사람이 맞아요&amp;rdquo;라는 임시 출입증을 발급해 주는 방식입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테스터 관점에서는 OAuth 흐름이 제대로 끊기지 않는지, 리다이렉트가 이상하지 않은지, 토큰이 안전하게 전달되는지를 집중해서 봐야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;JWT&lt;/b&gt;는 그 출입증 자체를 말합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Json Web Token의 약자로, 서버가 사용자 정보를 작은 종이쪽지에 적어 서명까지 해서 주는 것입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 쪽지는 브라우저나 앱이 매번 서버에 보여주며 &amp;ldquo;나 이 사람 맞아요&amp;rdquo;라고 증명합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구조는 Header&amp;middot;Payload&amp;middot;Signature 세 부분으로 나뉘는데, Payload에 사용자 아이디, 권한, 만료 시간 등이 들어갑니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테스터가 특히 주의할 점은 JWT가 한 번 발급되면 서버가 따로 기억하지 않는다는 것입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 만료 시간을 제대로 설정하지 않거나, 서명이 약하면 큰 문제가 생깁니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;RBAC&lt;/b&gt;는 Role Based Access Control, 즉 &amp;ldquo;역할에 따른 권한 관리&amp;rdquo;예요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일반 직원은 파일 보기는 되지만 수정은 안 되고, 관리자는 모든 걸 할 수 있는 식입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드상에서 &amp;ldquo;이 역할의 사용자는 이 API를 호출할 수 있다&amp;rdquo;는 규칙이 명확히 설계됐는지를 확인하는 게 테스터의 역할입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;토큰 만료와 권한 우회 시나리오 직접 설계해 보기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 실습입니다. 개발자도구와 Postman 같은 도구를 열고 직접 테스트 시나리오를 만들어 보세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 &lt;b&gt;토큰 만료&lt;/b&gt; 시나리오.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;JWT에는 보통 exp(만료 시간)가 들어갑니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자가 로그인한 뒤 30분이 지나면 자동으로 로그아웃되게 설계하는 거죠.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 실제로는 이렇게 깨지기 쉽습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;브라우저를 오래 켜두고 작업하다가 갑자기 &amp;ldquo;인증 만료&amp;rdquo; 오류가 뜨는 경우&lt;/li&gt;
&lt;li&gt;토큰이 만료됐는데도 이전 캐시된 데이터로 계속 동작하는 경우&lt;/li&gt;
&lt;li&gt;모바일 앱에서 백그라운드로 돌아갔다가 다시 들어올 때 토큰 갱신(refresh token)이 제대로 안 되는 경우&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 상황을 미리 테스트 계획에 넣어 두면 사용자 불편을 크게 줄일 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음으로 &lt;b&gt;권한 우회&lt;/b&gt; 시나리오.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;RBAC가 제대로 안 되어 있으면 공격자가 일반 사용자 권한으로 관리자 메뉴에 들어갈 수 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;URL을 직접 바꿔서 /admin/dashboard로 접근해 보기&lt;/li&gt;
&lt;li&gt;JWT Payload를 디코딩해서 role을 &amp;ldquo;admin&amp;rdquo;으로 조작한 뒤 다시 서명 없이 보내기 (서버가 검증을 제대로 하는지 확인)&lt;/li&gt;
&lt;li&gt;다른 사용자 아이디를 가진 토큰을 빌려서 API 호출해 보기 (IDOR, Insecure Direct Object Reference)&lt;/li&gt;
&lt;li&gt;OAuth로 로그인한 뒤 권한 스코프(scope)가 제대로 제한됐는지 테스트&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 시나리오들을 PR diff에서 인증 관련 코드가 바뀌었다는 걸 발견하면 바로 적용해 보세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발자도구의 Application 탭에서 Storage &amp;rarr; Cookies와 Local Storage를 열어 토큰이 어떻게 저장되고 사라지는지도 직접 관찰하면 감이 빨리 잡힙니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;인증을 이해하는 순간, 보이지 않던 구멍이 보인다&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;OAuth로 문을 열고, JWT로 신원을 증명하고, RBAC로 &amp;ldquo;이 사람은 여기까지&amp;rdquo;를 제한하는 전체 흐름을 이해하면, 단순한 기능 테스트를 넘어 보안 품질까지 설계할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI가 인증 코드를 빠르게 만들어줘도, 우리가 그 열쇠와 자물쇠의 연결을 제대로 검증하지 않으면 프로덕션에서 큰 사고가 납니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;작은 변화 하나가 인증 체계를 흔들 수 있다는 걸 항상 기억하세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘부터 로그인 관련 PR이 올라오면 diff를 열고 &amp;ldquo;토큰은 어떻게 관리하나? 권한은 제대로 제한되나?&amp;rdquo;를 질문하는 습관을 들여보세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 눈이 바로 테스터를 시스템 품질 아키텍트로 만들어주는 핵심입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>11. 자료실&amp;middot;기타/테스트 관련 강좌</category>
      <category>access control</category>
      <category>AI 시대 QA</category>
      <category>OAuth JWT RBAC</category>
      <category>권한 우회 시나리오</category>
      <category>보안 테스팅</category>
      <category>인증 테스트</category>
      <category>테스터 인증 지식</category>
      <category>토큰 만료 테스트</category>
      <author>testmanager</author>
      <guid isPermaLink="true">https://testmanager.tistory.com/624</guid>
      <comments>https://testmanager.tistory.com/624#entry624comment</comments>
      <pubDate>Tue, 7 Jul 2026 08:00:43 +0900</pubDate>
    </item>
    <item>
      <title>28화. 표준과 AI를 잇다 &amp;mdash; KOLAS 인정 요건&amp;middot;품질 표준을 AI 검증 체계로 연결하는 도메인 전문성.</title>
      <link>https://testmanager.tistory.com/649</link>
      <description>&lt;p data-ke-size=&quot;size14&quot;&gt;AI&amp;nbsp;시대의&amp;nbsp;품질&amp;nbsp;아키텍트&amp;nbsp;:&amp;nbsp;테스터에서&amp;nbsp;시스템&amp;nbsp;품질&amp;nbsp;설계자로&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;0.&amp;nbsp;오리엔테이션&lt;br /&gt;0화.&amp;nbsp;30분&amp;nbsp;데모와&amp;nbsp;프로덕션&amp;nbsp;사이의&amp;nbsp;거리&amp;nbsp;&amp;mdash;&amp;nbsp;현실&amp;nbsp;인식과&amp;nbsp;방향&amp;nbsp;제시&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;1.&amp;nbsp;기초&amp;nbsp;체력&lt;br /&gt;AI가&amp;nbsp;짠&amp;nbsp;코드를&amp;nbsp;읽고&amp;nbsp;검증할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;눈과&amp;nbsp;웹&amp;middot;API&amp;nbsp;원리&amp;nbsp;다지기&lt;br /&gt;1화.&amp;nbsp;AI가&amp;nbsp;짠&amp;nbsp;코드를&amp;nbsp;읽는&amp;nbsp;눈&amp;nbsp;&amp;mdash;&amp;nbsp;Python&amp;nbsp;또는&amp;nbsp;JS/TS&amp;nbsp;중&amp;nbsp;하나를&amp;nbsp;코드&amp;nbsp;리뷰&amp;nbsp;가능한&amp;nbsp;수준까지.&amp;nbsp;실습:&amp;nbsp;AI가&amp;nbsp;생성한&amp;nbsp;테스트&amp;nbsp;코드의&amp;nbsp;버그&amp;nbsp;3개&amp;nbsp;찾기.&lt;br /&gt;2화.&amp;nbsp;변경은&amp;nbsp;diff에서&amp;nbsp;시작된다&amp;nbsp;&amp;mdash;&amp;nbsp;Git과&amp;nbsp;PR&amp;nbsp;기반&amp;nbsp;협업,&amp;nbsp;변경&amp;nbsp;기반&amp;nbsp;테스트의&amp;nbsp;첫&amp;nbsp;단추.&amp;nbsp;실습:&amp;nbsp;PR&amp;nbsp;diff만&amp;nbsp;보고&amp;nbsp;영향&amp;nbsp;범위&amp;nbsp;추정해&amp;nbsp;보기.&lt;br /&gt;3화.&amp;nbsp;웹은&amp;nbsp;어떻게&amp;nbsp;움직이는가&amp;nbsp;&amp;mdash;&amp;nbsp;HTTP,&amp;nbsp;쿠키&amp;middot;세션의&amp;nbsp;원리.&amp;nbsp;실습:&amp;nbsp;개발자도구로&amp;nbsp;요청&amp;middot;응답&amp;nbsp;해부.&lt;br /&gt;4화.&amp;nbsp;인증의&amp;nbsp;지도&amp;nbsp;&amp;mdash;&amp;nbsp;OAuth&amp;middot;JWT&amp;middot;RBAC를&amp;nbsp;테스터&amp;nbsp;시선으로.&amp;nbsp;실습:&amp;nbsp;토큰&amp;nbsp;만료&amp;middot;권한&amp;nbsp;우회&amp;nbsp;시나리오&amp;nbsp;설계.&lt;br /&gt;5화.&amp;nbsp;API의&amp;nbsp;두&amp;nbsp;얼굴&amp;nbsp;&amp;mdash;&amp;nbsp;REST와&amp;nbsp;GraphQL의&amp;nbsp;차이와&amp;nbsp;테스트&amp;nbsp;관점.&amp;nbsp;실습:&amp;nbsp;같은&amp;nbsp;기능을&amp;nbsp;두&amp;nbsp;방식으로&amp;nbsp;호출&amp;middot;검증.&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;2.&amp;nbsp;테스트&amp;nbsp;자동화&lt;br /&gt;Playwright를&amp;nbsp;주력으로&amp;nbsp;깊이&amp;nbsp;익히기&lt;br /&gt;6화.&amp;nbsp;왜&amp;nbsp;Playwright인가&amp;nbsp;&amp;mdash;&amp;nbsp;도구&amp;nbsp;선택의&amp;nbsp;근거와&amp;nbsp;첫&amp;nbsp;테스트&amp;nbsp;작성.&lt;br /&gt;7화.&amp;nbsp;플래키의&amp;nbsp;근원,&amp;nbsp;셀렉터와&amp;nbsp;대기&amp;nbsp;&amp;mdash;&amp;nbsp;안정적&amp;nbsp;셀렉터와&amp;nbsp;비동기&amp;nbsp;대기&amp;nbsp;전략.&lt;br /&gt;8화.&amp;nbsp;실패를&amp;nbsp;영상으로&amp;nbsp;읽는다&amp;nbsp;&amp;mdash;&amp;nbsp;Trace&amp;nbsp;Viewer로&amp;nbsp;원인&amp;nbsp;추적.&lt;br /&gt;9화.&amp;nbsp;계약을&amp;nbsp;테스트하라&amp;nbsp;&amp;mdash;&amp;nbsp;API&amp;middot;계약&amp;nbsp;테스트(OpenAPI/GraphQL&amp;nbsp;schema&amp;nbsp;기반).&lt;br /&gt;10화.&amp;nbsp;눈에&amp;nbsp;보이는&amp;nbsp;회귀,&amp;nbsp;모두에게&amp;nbsp;열린&amp;nbsp;화면&amp;nbsp;&amp;mdash;&amp;nbsp;시각적&amp;nbsp;회귀와&amp;nbsp;접근성&amp;nbsp;자동&amp;nbsp;검사.&amp;nbsp;(Selenium&amp;middot;Appium은&amp;nbsp;레거시&amp;middot;모바일&amp;nbsp;대응용으로&amp;nbsp;짧게&amp;nbsp;짚기)&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;3.&amp;nbsp;AI&amp;nbsp;활용&amp;middot;MCP&amp;nbsp;(연재&amp;nbsp;핵심)&lt;br /&gt;AI를&amp;nbsp;단순&amp;nbsp;도구가&amp;nbsp;아닌&amp;nbsp;차별화&amp;nbsp;무기로&amp;nbsp;만드는&amp;nbsp;구간&lt;br /&gt;11화.&amp;nbsp;프롬프트로&amp;nbsp;테스트를&amp;nbsp;설계하기&amp;nbsp;&amp;mdash;&amp;nbsp;명세&amp;middot;PR을&amp;nbsp;입력해&amp;nbsp;케이스를&amp;nbsp;생성&amp;middot;우선순위화하는&amp;nbsp;패턴&amp;nbsp;정립.&lt;br /&gt;12화.&amp;nbsp;에이전트는&amp;nbsp;무엇을&amp;nbsp;대신하는가&amp;nbsp;&amp;mdash;&amp;nbsp;에이전트형&amp;nbsp;테스트의&amp;nbsp;개념과&amp;nbsp;한계(수동&amp;nbsp;노력&amp;nbsp;최대&amp;nbsp;45%&amp;nbsp;절감&amp;nbsp;추정).&lt;br /&gt;13화.&amp;nbsp;스스로&amp;nbsp;고치는&amp;nbsp;테스트,&amp;nbsp;그리고&amp;nbsp;그&amp;nbsp;한계&amp;nbsp;&amp;mdash;&amp;nbsp;자가&amp;nbsp;치유와&amp;nbsp;AI&amp;nbsp;Healer.&amp;nbsp;셀렉터&amp;middot;DOM&amp;nbsp;변경에서&amp;nbsp;75%+&amp;nbsp;복구,&amp;nbsp;그러나&amp;nbsp;복잡한&amp;nbsp;로직&amp;nbsp;버그는&amp;nbsp;사람&amp;nbsp;몫.&lt;br /&gt;14화.&amp;nbsp;npx&amp;nbsp;playwright&amp;nbsp;init-agents&amp;nbsp;&amp;mdash;&amp;nbsp;첫&amp;nbsp;MCP&amp;nbsp;실습&amp;nbsp;&amp;mdash;&amp;nbsp;접근성&amp;nbsp;트리&amp;nbsp;기반&amp;nbsp;Playwright&amp;nbsp;MCP&amp;nbsp;시작하기.&lt;br /&gt;15화.&amp;nbsp;MCP로&amp;nbsp;통합을&amp;nbsp;검증하다&amp;nbsp;&amp;mdash;&amp;nbsp;MCP&amp;nbsp;기반&amp;nbsp;통합&amp;nbsp;검증&amp;nbsp;실습.&lt;br /&gt;16화.&amp;nbsp;환각을&amp;nbsp;거르는&amp;nbsp;사람&amp;nbsp;&amp;mdash;&amp;nbsp;AI&amp;nbsp;결과의&amp;nbsp;환각&amp;middot;오탐을&amp;nbsp;걸러내는&amp;nbsp;인간&amp;nbsp;검증&amp;nbsp;체계&amp;nbsp;설계.&amp;nbsp;직무&amp;nbsp;특성상&amp;nbsp;가장&amp;nbsp;큰&amp;nbsp;강점이&amp;nbsp;되는&amp;nbsp;지점.&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;4.&amp;nbsp;파이프라인&amp;middot;운영&lt;br /&gt;개인기를&amp;nbsp;조직의&amp;nbsp;신뢰&amp;nbsp;시스템으로&amp;nbsp;연결&lt;br /&gt;17화.&amp;nbsp;문&amp;nbsp;앞의&amp;nbsp;품질&amp;nbsp;게이트&amp;nbsp;&amp;mdash;&amp;nbsp;CI/CD&amp;nbsp;품질&amp;nbsp;게이트&amp;nbsp;구성.&lt;br /&gt;18화.&amp;nbsp;플래키를&amp;nbsp;격리하라&amp;nbsp;&amp;mdash;&amp;nbsp;불안정&amp;nbsp;테스트&amp;nbsp;격리와&amp;nbsp;실패&amp;nbsp;원인&amp;nbsp;자동&amp;nbsp;분류.&lt;br /&gt;19화.&amp;nbsp;관측성을&amp;nbsp;테스트로&amp;nbsp;환원하기&amp;nbsp;&amp;mdash;&amp;nbsp;로그&amp;middot;메트릭&amp;middot;트레이스(OpenTelemetry)를&amp;nbsp;테스트&amp;nbsp;사고로&amp;nbsp;끌어오기.&lt;br /&gt;20화.&amp;nbsp;진짜&amp;nbsp;같은&amp;nbsp;가짜&amp;nbsp;데이터&amp;nbsp;&amp;mdash;&amp;nbsp;테스트&amp;nbsp;데이터&amp;nbsp;합성과&amp;nbsp;마스킹.&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;5.&amp;nbsp;비기능&amp;nbsp;영역&lt;br /&gt;눈에&amp;nbsp;보이지&amp;nbsp;않는&amp;nbsp;품질&amp;nbsp;지키기&lt;br /&gt;21화.&amp;nbsp;무게를&amp;nbsp;견디는가&amp;nbsp;&amp;mdash;&amp;nbsp;k6/JMeter로&amp;nbsp;부하&amp;middot;스트레스&amp;nbsp;테스트.&lt;br /&gt;22화.&amp;nbsp;손안의&amp;nbsp;성능&amp;nbsp;&amp;mdash;&amp;nbsp;모바일&amp;nbsp;성능&amp;nbsp;지표(FPS&amp;middot;시작속도&amp;middot;메모리&amp;middot;배터리).&lt;br /&gt;23화.&amp;nbsp;공격자처럼&amp;nbsp;생각하기&amp;nbsp;&amp;mdash;&amp;nbsp;OWASP&amp;nbsp;Top&amp;nbsp;10으로&amp;nbsp;본&amp;nbsp;보안&amp;nbsp;기본기.&lt;br /&gt;24화.&amp;nbsp;코드를&amp;nbsp;스캔하는&amp;nbsp;도구들&amp;nbsp;&amp;mdash;&amp;nbsp;SAST&amp;middot;DAST&amp;middot;SCA(SonarQube&amp;middot;OWASP&amp;nbsp;ZAP&amp;middot;Snyk)&amp;nbsp;실전.&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;6.&amp;nbsp;전략&amp;middot;리더십&amp;middot;표준&lt;br /&gt;아키텍트로서의&amp;nbsp;설계&amp;middot;운영&amp;middot;리더십&lt;br /&gt;25화.&amp;nbsp;테스트&amp;nbsp;가능성을&amp;nbsp;설계에&amp;nbsp;심다&amp;nbsp;&amp;mdash;&amp;nbsp;Testability를&amp;nbsp;기획&amp;middot;개발&amp;nbsp;단계로&amp;nbsp;끌어올리기.&lt;br /&gt;26화.&amp;nbsp;공통&amp;nbsp;언어로서의&amp;nbsp;BDD&amp;nbsp;&amp;mdash;&amp;nbsp;Gherkin으로&amp;nbsp;기획&amp;middot;개발&amp;middot;QA를&amp;nbsp;한&amp;nbsp;문장에&amp;nbsp;모으기.&lt;br /&gt;27화.&amp;nbsp;AI를&amp;nbsp;지휘하는&amp;nbsp;운영&amp;nbsp;모델&amp;nbsp;&amp;mdash;&amp;nbsp;20명&amp;nbsp;규모&amp;nbsp;팀을&amp;nbsp;위한&amp;nbsp;AI&amp;nbsp;오케스트레이션&amp;nbsp;가이드라인과&amp;nbsp;코칭.&lt;br /&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;28화.&amp;nbsp;표준과&amp;nbsp;AI를&amp;nbsp;잇다&amp;nbsp;&amp;mdash;&amp;nbsp;KOLAS&amp;nbsp;인정&amp;nbsp;요건&amp;middot;품질&amp;nbsp;표준을&amp;nbsp;AI&amp;nbsp;검증&amp;nbsp;체계로&amp;nbsp;연결하는&amp;nbsp;도메인&amp;nbsp;전문성.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;29화.&amp;nbsp;데모를&amp;nbsp;프로덕션으로&amp;nbsp;옮기는&amp;nbsp;비용&amp;nbsp;&amp;mdash;&amp;nbsp;30분&amp;nbsp;데모와&amp;nbsp;실전의&amp;nbsp;거리,&amp;nbsp;사람의&amp;nbsp;감독이&amp;nbsp;끝까지&amp;nbsp;필요한&amp;nbsp;이유를&amp;nbsp;균형&amp;nbsp;있게&amp;nbsp;정리.&lt;br /&gt;30화.&amp;nbsp;테스터에서&amp;nbsp;품질&amp;nbsp;아키텍트로&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;div&gt;
&lt;h1 data-slug=&quot;%ED%91%9C%EC%A4%80%EA%B3%BCai%EB%A5%BC%EC%9E%87%EB%8B%A4%3A%EA%B1%B4%EC%B6%95%EB%AC%BC%EC%95%88%EC%A0%84%EC%A7%84%EB%8B%A8%EC%B2%98%EB%9F%BC%2C%EC%8B%9D%ED%92%88%EC%98%81%EC%96%91%EC%84%B1%EB%B6%84%ED%91%9C%EC%8B%9C%EC%B2%98%EB%9F%BC0&quot; data-anchor=&quot;%ED%91%9C%EC%A4%80%EA%B3%BCai%EB%A5%BC%EC%9E%87%EB%8B%A4%3A%EA%B1%B4%EC%B6%95%EB%AC%BC%EC%95%88%EC%A0%84%EC%A7%84%EB%8B%A8%EC%B2%98%EB%9F%BC%2C%EC%8B%9D%ED%92%88%EC%98%81%EC%96%91%EC%84%B1%EB%B6%84%ED%91%9C%EC%8B%9C%EC%B2%98%EB%9F%BC&quot; data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;표준과 AI를 잇다: 건축물 안전 진단처럼, 식품 영양 성분 표시처럼&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;우리는 매일 수많은 제품과 서비스를 이용하며 알게 모르게 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;표준&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;의 보호를 받고 있습니다. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;건축물의 안전 진단 기준이 건물의 붕괴를 막고, 식품의 영양 성분 표시가 우리가 먹는 음식의 안전과 건강을 보장하듯이, 소프트웨어에도 그 품질을 가늠하는 엄격한 표준이 존재합니다. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;특히 AI가 코드를 짜고 테스트를 자동화하는 시대에, 이러한 표준은 더욱 중요해지고 있습니다. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;오늘은 자칫 딱딱하게 느껴질 수 있는 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;KOLAS 인정 요건&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;이나 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;국제 품질 표준(ISO/IEC 25010 등)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;이 어떻게 AI 기반의 현대적 검증 체계와 연결되어 품질 아키텍트의 독보적인 전문성이 되는지 이야기해 보겠습니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h2 data-slug=&quot;%ED%91%9C%EC%A4%80%3A%EB%B3%B4%EC%9D%B4%EC%A7%80%EC%95%8A%EB%8A%94%EA%B3%B3%EC%97%90%EC%84%9C%ED%92%88%EC%A7%88%EC%9D%84%EC%A7%80%ED%82%A4%EB%8A%94%EC%95%BD%EC%86%8D2&quot; data-anchor=&quot;%ED%91%9C%EC%A4%80%3A%EB%B3%B4%EC%9D%B4%EC%A7%80%EC%95%8A%EB%8A%94%EA%B3%B3%EC%97%90%EC%84%9C%ED%92%88%EC%A7%88%EC%9D%84%EC%A7%80%ED%82%A4%EB%8A%94%EC%95%BD%EC%86%8D&quot; data-slate-node=&quot;element&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;표준: 보이지 않는 곳에서 품질을 지키는 약속&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;지난 연재에서 우리는 AI를 지휘하는 운영 모델을 통해 팀의 생산성을 극대화하는 방법을 알아보았습니다. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;이제는 AI가 만들어내는 결과물과 우리가 개발하는 소프트웨어 전체의 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;신뢰성&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;을 어떻게 확보할 것인가에 대한 질문에 답할 차례입니다. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;여기에 바로 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;표준&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;이 등장합니다. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;표준은 특정 제품, 서비스, 프로세스 또는 시스템이 특정 요구사항을 충족하는지 확인하기 위한 합의된 규칙, 지침 또는 특성입니다. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;이는 마치 전 세계 모든 나라의 운전자가 동일한 교통 신호를 이해하고 따르듯이, 모두가 동의하는 품질의 기준점이 됩니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;소프트웨어 분야에서 표준은 단순히 규제를 넘어, 개발 과정의 효율성을 높이고, 제품의 품질을 보장하며, 궁극적으로는 사용자에게 신뢰를 제공하는 중요한 역할을 합니다. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;특히 AI 기술이 빠르게 발전하면서, AI 시스템의 품질과 신뢰성을 어떻게 평가하고 보장할 것인가에 대한 논의가 활발해지고 있으며, 기존의 소프트웨어 표준을 AI에 적용하거나 새로운 AI 관련 표준을 만들어가는 노력이 계속되고 있습니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h2 data-slug=&quot;kolas%3A%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4%ED%92%88%EC%A7%88%EC%9D%98%EA%B5%AD%EC%A0%9C%EA%B3%B5%EC%9D%B8%EC%8B%9C%ED%97%98%EC%86%8C5&quot; data-anchor=&quot;kolas%3A%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4%ED%92%88%EC%A7%88%EC%9D%98%EA%B5%AD%EC%A0%9C%EA%B3%B5%EC%9D%B8%EC%8B%9C%ED%97%98%EC%86%8C&quot; data-slate-node=&quot;element&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;KOLAS: 소프트웨어 품질의 국제 공인 시험소&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;KOLAS(Korea Laboratory Accreditation Scheme)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;는 한국인정기구의 약자로, 시험, 검사, 교정 기관의 기술 능력을 국제 표준에 따라 평가하여 공인하는 제도입니다 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-index=&quot;1&quot; data-reference-id=&quot;1&quot; data-link-reference=&quot;true&quot; data-slate-void=&quot;true&quot; data-slate-inline=&quot;true&quot; data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-spacer=&quot;true&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;쉽게 말해, 어떤 기관이 특정 제품이나 서비스의 품질을 시험하고 그 결과를 보고서로 발행할 때, 그 보고서가 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;국제적으로 신뢰할 수 있는 공신력&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;을 갖도록 인증해 주는 시스템입니다. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;마치 건축물의 안전 진단을 하는 기관이 국가로부터&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;공인된 자격을 갖추어야 그 진단 결과가 신뢰를 얻는 것과 같습니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;소프트웨어 분야에서 KOLAS 공인 시험기관은 소프트웨어의 품질을 국제 표준에 따라 시험하고, 그 결과를 공인 시험성적서로 발행합니다. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;이 성적서는 ILAC-MRA(국제상호인정협정)에 따라 전 세계 주요 국가에서 통용되므로, 우리 기업이 개발한 AI 및 소프트웨어 제품이 해외 수출 시 품질을 증명하는 데 매우 중요한 역할을 합니다 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-index=&quot;2&quot; data-reference-id=&quot;2&quot; data-link-reference=&quot;true&quot; data-slate-void=&quot;true&quot; data-slate-inline=&quot;true&quot; data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-spacer=&quot;true&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;품질 아키텍트에게 KOLAS 인정 요건에 대한 이해는, 소프트웨어의 품질을 단순히 내부적으로만 확보하는 것을 넘어, 국제적인 신뢰도를 갖춘 검증 체계를 구축하는 데 필수적인 전문성이 됩니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h2 data-slug=&quot;iso%2Fiec25010%3A%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4%ED%92%88%EC%A7%88%EC%9D%98%EC%98%81%EC%96%91%EC%84%B1%EB%B6%84%ED%91%9C8&quot; data-anchor=&quot;iso%2Fiec25010%3A%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4%ED%92%88%EC%A7%88%EC%9D%98%EC%98%81%EC%96%91%EC%84%B1%EB%B6%84%ED%91%9C&quot; data-slate-node=&quot;element&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;ISO/IEC 25010: 소프트웨어 품질의 영양 성분표&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;ISO/IEC 25010&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;은 소프트웨어 제품의 품질 특성을 정의하는 국제 표준입니다. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;이는 마치 우리가 식품을 구매할 때 영양 성분표를 보고 어떤 성분이 얼마나 들어있는지 확인하듯이, 소프트웨어의 품질을 여러 가지 관점에서 체계적으로 평가할 수 있도록 돕는 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;소프트웨어 품질의 영양 성분표&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;와 같습니다 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-index=&quot;3&quot; data-reference-id=&quot;3&quot; data-link-reference=&quot;true&quot; data-slate-void=&quot;true&quot; data-slate-inline=&quot;true&quot; data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-spacer=&quot;true&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;이 표준은 소프트웨어 품질을 다음과 같은 8가지 주요 특성과 하위 특성으로 분류합니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody data-slate-node=&quot;element&quot;&gt;
&lt;tr data-slate-node=&quot;element&quot;&gt;
&lt;td data-slate-node=&quot;element&quot;&gt;
&lt;div&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;주요 품질 특성&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td data-slate-node=&quot;element&quot;&gt;
&lt;div&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;설명 (비유)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-slate-node=&quot;element&quot;&gt;
&lt;td data-slate-node=&quot;element&quot;&gt;
&lt;div&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;기능 적합성&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt; (Functional Suitability)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td data-slate-node=&quot;element&quot;&gt;
&lt;div&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;소프트웨어가 필요한 기능을 얼마나 정확하고 완전하게 제공하는가 (예: 계산기가 정확하게 계산하는가)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-slate-node=&quot;element&quot;&gt;
&lt;td data-slate-node=&quot;element&quot;&gt;
&lt;div&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;성능 효율성&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt; (Performance Efficiency)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td data-slate-node=&quot;element&quot;&gt;
&lt;div&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;소프트웨어가 주어진 자원(시간, 메모리 등)을 얼마나 효율적으로 사용하는가 (예: 앱이 얼마나 빠르고 부드럽게 작동하는가)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-slate-node=&quot;element&quot;&gt;
&lt;td data-slate-node=&quot;element&quot;&gt;
&lt;div&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;호환성&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt; (Compatibility)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td data-slate-node=&quot;element&quot;&gt;
&lt;div&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;소프트웨어가 다른 시스템이나 환경과 얼마나 잘 어울려 작동하는가 (예: 여러 운영체제나 브라우저에서 잘 실행되는가)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-slate-node=&quot;element&quot;&gt;
&lt;td data-slate-node=&quot;element&quot;&gt;
&lt;div&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;사용성&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt; (Usability)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td data-slate-node=&quot;element&quot;&gt;
&lt;div&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;사용자가 소프트웨어를 얼마나 쉽고 효율적으로 사용할 수 있는가 (예: 앱의 메뉴가 직관적이고 사용하기 편리한가)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-slate-node=&quot;element&quot;&gt;
&lt;td data-slate-node=&quot;element&quot;&gt;
&lt;div&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;신뢰성&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt; (Reliability)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td data-slate-node=&quot;element&quot;&gt;
&lt;div&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;소프트웨어가 주어진 조건에서 얼마나 오랫동안 오류 없이 안정적으로 작동하는가 (예: 앱이 자주 멈추거나 다운되지 않는가)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-slate-node=&quot;element&quot;&gt;
&lt;td data-slate-node=&quot;element&quot;&gt;
&lt;div&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;보안성&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt; (Security)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td data-slate-node=&quot;element&quot;&gt;
&lt;div&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;소프트웨어가 정보와 데이터를 얼마나 잘 보호하고, 무단 접근을 막는가 (예: 개인 정보가 안전하게 관리되는가)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-slate-node=&quot;element&quot;&gt;
&lt;td data-slate-node=&quot;element&quot;&gt;
&lt;div&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;유지보수성&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt; (Maintainability)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td data-slate-node=&quot;element&quot;&gt;
&lt;div&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;소프트웨어를 얼마나 쉽게 수정, 개선, 확장할 수 있는가 (예: 개발자가 코드를 이해하고 변경하기 쉬운가)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-slate-node=&quot;element&quot;&gt;
&lt;td data-slate-node=&quot;element&quot;&gt;
&lt;div&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;이식성&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt; (Portability)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td data-slate-node=&quot;element&quot;&gt;
&lt;div&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;소프트웨어를 다른 환경으로 얼마나 쉽게 옮겨 설치하고 사용할 수 있는가 (예: PC용 프로그램을 모바일에서도 쉽게 사용할 수 있는가)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;이러한 품질 특성들은 소프트웨어의 설계, 개발, 테스트 전 과정에서 고려되어야 할 중요한 지침이 됩니다. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;품질 아키텍트는 ISO/IEC 25010과 같은 표준을 활용하여 소프트웨어의 품질 목표를 설정하고, 각 특성에 대한 측정 지표를 정의하며, 개발된 소프트웨어가 이러한 표준을 충족하는지 검증하는 역할을 수행합니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h2 data-slug=&quot;ai%EA%B2%80%EC%A6%9D%EC%B2%B4%EA%B3%84%EC%99%80%EB%8F%84%EB%A9%94%EC%9D%B8%EC%A0%84%EB%AC%B8%EC%84%B1%3A%ED%91%9C%EC%A4%80%EC%9D%84ai%EC%97%90%EC%97%B0%EA%B2%B0%ED%95%98%EB%8B%A412&quot; data-anchor=&quot;ai%EA%B2%80%EC%A6%9D%EC%B2%B4%EA%B3%84%EC%99%80%EB%8F%84%EB%A9%94%EC%9D%B8%EC%A0%84%EB%AC%B8%EC%84%B1%3A%ED%91%9C%EC%A4%80%EC%9D%84ai%EC%97%90%EC%97%B0%EA%B2%B0%ED%95%98%EB%8B%A4&quot; data-slate-node=&quot;element&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;AI 검증 체계와 도메인 전문성: 표준을 AI에 연결하다&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;AI 기술이 소프트웨어 개발에 깊숙이 통합되면서, 기존의 품질 표준을 AI 시스템에 어떻게 적용하고 검증할 것인가가 중요한 과제로 떠오르고 있습니다. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;AI 모델의 성능, 공정성, 투명성, 견고성 등은 기존 소프트웨어 품질 특성과는 다른 새로운 관점의 검증을 요구합니다. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;예를 들어, AI 기반의 이미지 인식 시스템이 특정 인종이나 성별에 대해 편향된 결과를 내놓는다면, 이는 기능 적합성뿐만 아니라 공정성이라는 새로운 품질 특성에서 문제가 발생한 것입니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;여기서 품질 아키텍트의 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;도메인 전문성&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;이 빛을 발합니다. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;우리는 단순히 AI 도구를 사용하는 것을 넘어, KOLAS 인정 요건이나 ISO/IEC 25010과 같은 품질 표준을 AI 검증 체계에 연결하는 역할을 해야 합니다. 이는 마치 식품 영양 성분표를 보고 단순히 숫자를 읽는 것을 넘어, 각 성분이 우리 몸에 어떤 영향을 미치는지 이해하고, 개인의 건강 상태에 맞춰 식단을 조절하는 전문가의 역할과 같습니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;구체적으로 품질 아키텍트는 다음과 같은 역할을 수행할 수 있습니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span&gt;&lt;span&gt;&amp;bull;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;AI 시스템의 품질 목표 설정:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt; ISO/IEC 25010과 같은 표준을 기반으로 AI 모델의 성능, 신뢰성, 보안성 등 품질 목표를 정의하고, 이를 측정할 수 있는 지표를 수립합니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span&gt;&lt;span&gt;&amp;bull;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;AI 모델의 편향성 및 공정성 검증:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt; AI 모델이 특정 데이터에 편향되어 있거나, 특정 그룹에 대해 불공정한 결과를 내놓지는 않는지 도메인 지식을 활용하여 검증 시나리오를 설계하고 실행합니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span&gt;&lt;span&gt;&amp;bull;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;AI 시스템의 설명 가능성(Explainability) 평가:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt; AI 모델이 왜 특정 결정을 내렸는지, 그 과정을 얼마나 투명하게 설명할 수 있는지 평가하여 신뢰성을 확보합니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span&gt;&lt;span&gt;&amp;bull;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;AI 검증 프로세스의 표준화:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt; KOLAS 인정 요건과 같은 국제 표준에 맞춰 AI 모델의 학습 데이터 관리, 모델 개발 프로세스, 검증 방법 등을 표준화하고 문서화합니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span&gt;&lt;span&gt;&amp;bull;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;AI 기반 테스트 도구의 신뢰성 확보:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt; AI가 생성한 테스트 케이스나 테스트 코드의 품질을 평가하고, AI 기반 테스트 도구가 표준화된 검증 절차를 따르도록 관리합니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h2 data-slug=&quot;%ED%92%88%EC%A7%88%EC%95%84%ED%82%A4%ED%85%8D%ED%8A%B8%EC%9D%98%EB%8F%85%EB%B3%B4%EC%A0%81%EC%9D%B8%EC%A0%84%EB%AC%B8%EC%84%B1%3A%ED%91%9C%EC%A4%80%EC%9D%84%ED%86%B5%ED%95%B4ai%EC%8B%9C%EB%8C%80%EB%A5%BC%EC%9D%B4%EB%81%8C%EB%8B%A421&quot; data-anchor=&quot;%ED%92%88%EC%A7%88%EC%95%84%ED%82%A4%ED%85%8D%ED%8A%B8%EC%9D%98%EB%8F%85%EB%B3%B4%EC%A0%81%EC%9D%B8%EC%A0%84%EB%AC%B8%EC%84%B1%3A%ED%91%9C%EC%A4%80%EC%9D%84%ED%86%B5%ED%95%B4ai%EC%8B%9C%EB%8C%80%EB%A5%BC%EC%9D%B4%EB%81%8C%EB%8B%A4&quot; data-slate-node=&quot;element&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;품질 아키텍트의 독보적인 전문성: 표준을 통해 AI 시대를 이끌다&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;AI 시대의 품질 아키텍트는 기술적인 전문성뿐만 아니라, 국가적&amp;middot;국제적 품질 표준에 대한 깊이 있는 이해를 바탕으로 AI 시스템의 신뢰성을 확보하는 데 핵심적인 역할을 수행합니다. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;우리는 AI의 잠재력을 최대한 활용하면서도, 그 위험을 최소화하고, 궁극적으로는 사용자에게 안전하고 신뢰할 수 있는 AI 기반 서비스를 제공해야 합니다. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;표준은 이러한 목표를 달성하기 위한 강력한 지침이자 도구입니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;KOLAS 인정 요건과 ISO/IEC 25010과 같은 품질 표준을 AI 검증 체계에 연결하는 것은 단순히 규제를 준수하는 것을 넘어, 소프트웨어 품질에 대한 우리의 시야를 넓히고, AI 시대에 필요한 새로운 전문성을 구축하는 과정입니다. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;품질 아키텍트로서 우리는 이러한 표준을 적극적으로 활용하여 AI 기술의 건전한 발전을 이끌고, 소프트웨어 품질의 새로운 지평을 열어가는 선구자가 되어야 할 것입니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div data-slate-void=&quot;true&quot; data-slate-node=&quot;element&quot;&gt;
&lt;div contenteditable=&quot;false&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-spacer=&quot;true&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h3 data-slug=&quot;%EC%B0%B8%EA%B3%A0%EC%9E%90%EB%A3%8C25&quot; data-anchor=&quot;%EC%B0%B8%EA%B3%A0%EC%9E%90%EB%A3%8C&quot; data-slate-node=&quot;element&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;참고 자료&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;/div&gt;
&lt;div&gt;&lt;a href=&quot;https://www.knab.go.kr/en/Accreditation_Process.do&quot; data-definition-id=&quot;1&quot; data-slate-node=&quot;element&quot;&gt;&lt;span&gt;[1]&amp;nbsp;&lt;/span&gt;&lt;span&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;Korea Laboratory Accreditation Scheme (KOLAS). &quot;Accreditation Process.&quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&lt;a href=&quot;https://kait.or.kr/eng/user/MainMenuList.do?cateSeq=9&amp;amp;menuSeq=156&quot; data-definition-id=&quot;2&quot; data-slate-node=&quot;element&quot;&gt;&lt;span&gt;[2]&amp;nbsp;&lt;/span&gt;&lt;span&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;KAIT. &quot;KOLAS Accredited Testing Laboratory for Software.&quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&lt;a href=&quot;https://www.iso.org/standard/35733.html&quot; data-definition-id=&quot;3&quot; data-slate-node=&quot;element&quot;&gt;&lt;span&gt;[3]&amp;nbsp;&lt;/span&gt;&lt;span&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;ISO. &quot;ISO/IEC 25010:2011 - Systems and software engineering.&quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div data-slate-fragment=&quot;JTVCJTdCJTIydHlwZSUyMiUzQSUyMmhlYWRpbmclMjIlMkMlMjJsZXZlbCUyMiUzQTElMkMlMjJjaGlsZHJlbiUyMiUzQSU1QiU3QiUyMnRleHQlMjIlM0ElMjIlRUQlOTElOUMlRUMlQTQlODAlRUElQjMlQkMlMjBBSSVFQiVBNSVCQyUyMCVFQyU5RSU4NyVFQiU4QiVBNCUzQSUyMCVFQSVCMSVCNCVFQyVCNiU5NSVFQiVBQyVCQyUyMCVFQyU5NSU4OCVFQyVBMCU4NCUyMCVFQyVBNyU4NCVFQiU4QiVBOCVFQyVCMiU5OCVFQiU5RiVCQyUyQyUyMCVFQyU4QiU5RCVFRCU5MiU4OCUyMCVFQyU5OCU4MSVFQyU5NiU5MSUyMCVFQyU4NCVCMSVFQiVCNiU4NCUyMCVFRCU5MSU5QyVFQyU4QiU5QyVFQyVCMiU5OCVFQiU5RiVCQyUyMiU3RCU1RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJwJTIyJTJDJTIyY2hpbGRyZW4lMjIlM0ElNUIlN0IlMjJ0ZXh0JTIyJTNBJTIyJUVDJTlBJUIwJUVCJUE2JUFDJUVCJThBJTk0JTIwJUVCJUE3JUE0JUVDJTlEJUJDJTIwJUVDJTg4JTk4JUVCJUE3JThFJUVDJTlEJTgwJTIwJUVDJUEwJTlDJUVEJTkyJTg4JUVBJUIzJUJDJTIwJUVDJTg0JTlDJUVCJUI5JTg0JUVDJThBJUE0JUVCJUE1JUJDJTIwJUVDJTlEJUI0JUVDJTlBJUE5JUVEJTk1JTk4JUVCJUE5JUIwJTIwJUVDJTk1JThDJUVBJUIyJThDJTIwJUVCJUFBJUE4JUVCJUE1JUI0JUVBJUIyJThDJTIwJTIyJTdEJTJDJTdCJTIydGV4dCUyMiUzQSUyMiVFRCU5MSU5QyVFQyVBNCU4MCUyMiUyQyUyMmJvbGQlMjIlM0F0cnVlJTdEJTJDJTdCJTIydGV4dCUyMiUzQSUyMiVFQyU5RCU5OCUyMCVFQiVCMyVCNCVFRCU5OCVCOCVFQiVBNSVCQyUyMCVFQiVCMCU5QiVFQSVCMyVBMCUyMCVFQyU5RSU4OCVFQyU4QSVCNSVFQiU4QiU4OCVFQiU4QiVBNC4lMjAlRUElQjElQjQlRUMlQjYlOTUlRUIlQUMlQkMlRUMlOUQlOTglMjAlRUMlOTUlODglRUMlQTAlODQlMjAlRUMlQTclODQlRUIlOEIlQTglMjAlRUElQjglQjAlRUMlQTQlODAlRUMlOUQlQjQlMjAlRUElQjElQjQlRUIlQUMlQkMlRUMlOUQlOTglMjAlRUIlQjYlOTUlRUElQjQlQjQlRUIlQTUlQkMlMjAlRUIlQTclODklRUElQjMlQTAlMkMlMjAlRUMlOEIlOUQlRUQlOTIlODglRUMlOUQlOTglMjAlRUMlOTglODElRUMlOTYlOTElMjAlRUMlODQlQjElRUIlQjYlODQlMjAlRUQlOTElOUMlRUMlOEIlOUMlRUElQjAlODAlMjAlRUMlOUElQjAlRUIlQTYlQUMlRUElQjAlODAlMjAlRUIlQTglQjklRUIlOEElOTQlMjAlRUMlOUQlOEMlRUMlOEIlOUQlRUMlOUQlOTglMjAlRUMlOTUlODglRUMlQTAlODQlRUElQjMlQkMlMjAlRUElQjElQjQlRUElQjAlOTUlRUMlOUQlODQlMjAlRUIlQjMlQjQlRUMlOUUlQTUlRUQlOTUlOTglRUIlOTMlQUYlRUMlOUQlQjQlMkMlMjAlRUMlODYlOEMlRUQlOTQlODQlRUQlOEElQjglRUMlOUIlQTglRUMlOTYlQjQlRUMlOTclOTAlRUIlOEYlODQlMjAlRUElQjclQjglMjAlRUQlOTIlODglRUMlQTclODglRUMlOUQlODQlMjAlRUElQjAlODAlRUIlOEElQTAlRUQlOTUlOTglRUIlOEElOTQlMjAlRUMlOTclODQlRUElQjIlQTklRUQlOTUlOUMlMjAlRUQlOTElOUMlRUMlQTQlODAlRUMlOUQlQjQlMjAlRUMlQTElQjQlRUMlOUUlQUMlRUQlOTUlQTklRUIlOEIlODglRUIlOEIlQTQuJTIwJUVEJThBJUI5JUVEJTlFJTg4JTIwQUklRUElQjAlODAlMjAlRUMlQkQlOTQlRUIlOTMlOUMlRUIlQTUlQkMlMjAlRUMlQTclOUMlRUElQjMlQTAlMjAlRUQlODUlOEMlRUMlOEElQTQlRUQlOEElQjglRUIlQTUlQkMlMjAlRUMlOUUlOTAlRUIlOEYlOTklRUQlOTklOTQlRUQlOTUlOTglRUIlOEElOTQlMjAlRUMlOEIlOUMlRUIlOEMlODAlRUMlOTclOTAlMkMlMjAlRUMlOUQlQjQlRUIlOUYlQUMlRUQlOTUlOUMlMjAlRUQlOTElOUMlRUMlQTQlODAlRUMlOUQlODAlMjAlRUIlOEQlOTQlRUMlOUElQjElMjAlRUMlQTQlOTElRUMlOUElOTQlRUQlOTUlQjQlRUMlQTclODAlRUElQjMlQTAlMjAlRUMlOUUlODglRUMlOEElQjUlRUIlOEIlODglRUIlOEIlQTQuJTIwJUVDJTk4JUE0JUVCJThBJTk4JUVDJTlEJTgwJTIwJUVDJTlFJTkwJUVDJUI5JUFCJTIwJUVCJTk0JUIxJUVCJTk0JUIxJUVEJTk1JTk4JUVBJUIyJThDJTIwJUVCJThBJTkwJUVBJUJCJUI0JUVDJUE3JTg4JTIwJUVDJTg4JTk4JTIwJUVDJTlFJTg4JUVCJThBJTk0JTIwJTIyJTdEJTJDJTdCJTIydGV4dCUyMiUzQSUyMktPTEFTJTIwJUVDJTlEJUI4JUVDJUEwJTk1JTIwJUVDJTlBJTk0JUVBJUIxJUI0JTIyJTJDJTIyYm9sZCUyMiUzQXRydWUlN0QlMkMlN0IlMjJ0ZXh0JTIyJTNBJTIyJUVDJTlEJUI0JUVCJTgyJTk4JTIwJTIyJTdEJTJDJTdCJTIydGV4dCUyMiUzQSUyMiVFQSVCNSVBRCVFQyVBMCU5QyUyMCVFRCU5MiU4OCVFQyVBNyU4OCUyMCVFRCU5MSU5QyVFQyVBNCU4MChJU08lMkZJRUMlMjAyNTAxMCUyMCVFQiU5MyVCMSklMjIlMkMlMjJib2xkJTIyJTNBdHJ1ZSU3RCUyQyU3QiUyMnRleHQlMjIlM0ElMjIlRUMlOUQlQjQlMjAlRUMlOTYlQjQlRUIlOTYlQkIlRUElQjIlOEMlMjBBSSUyMCVFQSVCOCVCMCVFQiVCMCU5OCVFQyU5RCU5OCUyMCVFRCU5OCU4NCVFQiU4QyU4MCVFQyVBMCU4MSUyMCVFQSVCMiU4MCVFQyVBNiU5RCUyMCVFQyVCMiVCNCVFQSVCMyU4NCVFQyU5OSU4MCUyMCVFQyU5NyVCMCVFQSVCMiVCMCVFQiU5MCU5OCVFQyU5NiVCNCUyMCVFRCU5MiU4OCVFQyVBNyU4OCUyMCVFQyU5NSU4NCVFRCU4MiVBNCVFRCU4NSU4RCVFRCU4QSVCOCVFQyU5RCU5OCUyMCVFQiU4RiU4NSVFQiVCMyVCNCVFQyVBMCU4MSVFQyU5RCVCOCUyMCVFQyVBMCU4NCVFQiVBQyVCOCVFQyU4NCVCMSVFQyU5RCVCNCUyMCVFQiU5MCU5OCVFQiU4QSU5NCVFQyVBNyU4MCUyMCVFQyU5RCVCNCVFQyU5NSVCQyVFQSVCOCVCMCVFRCU5NSVCNCUyMCVFQiVCMyVCNCVFQSVCMiVBMCVFQyU4QSVCNSVFQiU4QiU4OCVFQiU4QiVBNC4lMjIlN0QlNUQlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyaGVhZGluZyUyMiUyQyUyMmxldmVsJTIyJTNBMiUyQyUyMmNoaWxkcmVuJTIyJTNBJTVCJTdCJTIydGV4dCUyMiUzQSUyMiVFRCU5MSU5QyVFQyVBNCU4MCUzQSUyMCVFQiVCMyVCNCVFQyU5RCVCNCVFQyVBNyU4MCUyMCVFQyU5NSU4QSVFQiU4QSU5NCUyMCVFQSVCMyVCMyVFQyU5NyU5MCVFQyU4NCU5QyUyMCVFRCU5MiU4OCVFQyVBNyU4OCVFQyU5RCU4NCUyMCVFQyVBNyU4MCVFRCU4MiVBNCVFQiU4QSU5NCUyMCVFQyU5NSVCRCVFQyU4NiU4RCUyMiU3RCU1RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJwJTIyJTJDJTIyY2hpbGRyZW4lMjIlM0ElNUIlN0IlMjJ0ZXh0JTIyJTNBJTIyJUVDJUE3JTgwJUVCJTgyJTlDJTIwJUVDJTk3JUIwJUVDJTlFJUFDJUVDJTk3JTkwJUVDJTg0JTlDJTIwJUVDJTlBJUIwJUVCJUE2JUFDJUVCJThBJTk0JTIwQUklRUIlQTUlQkMlMjAlRUMlQTclODAlRUQlOUMlOTglRUQlOTUlOTglRUIlOEElOTQlMjAlRUMlOUElQjQlRUMlOTglODElMjAlRUIlQUElQTglRUIlOEQlQjglRUMlOUQlODQlMjAlRUQlODYlQjUlRUQlOTUlQjQlMjAlRUQlOEMlODAlRUMlOUQlOTglMjAlRUMlODMlOUQlRUMlODIlQjAlRUMlODQlQjElRUMlOUQlODQlMjAlRUElQjclQjklRUIlOEMlODAlRUQlOTklOTQlRUQlOTUlOTglRUIlOEElOTQlMjAlRUIlQjAlQTklRUIlQjIlOTUlRUMlOUQlODQlMjAlRUMlOTUlOEMlRUMlOTUlODQlRUIlQjMlQjQlRUMlOTUlOTglRUMlOEElQjUlRUIlOEIlODglRUIlOEIlQTQuJTIwJUVDJTlEJUI0JUVDJUEwJTlDJUVCJThBJTk0JTIwQUklRUElQjAlODAlMjAlRUIlQTclOEMlRUIlOTMlQTQlRUMlOTYlQjQlRUIlODIlQjQlRUIlOEElOTQlMjAlRUElQjIlQjAlRUElQjMlQkMlRUIlQUMlQkMlRUElQjMlQkMlMjAlRUMlOUElQjAlRUIlQTYlQUMlRUElQjAlODAlMjAlRUElQjAlOUMlRUIlQjAlOUMlRUQlOTUlOTglRUIlOEElOTQlMjAlRUMlODYlOEMlRUQlOTQlODQlRUQlOEElQjglRUMlOUIlQTglRUMlOTYlQjQlMjAlRUMlQTAlODQlRUMlQjIlQjQlRUMlOUQlOTglMjAlMjIlN0QlMkMlN0IlMjJ0ZXh0JTIyJTNBJTIyJUVDJThCJUEwJUVCJUEyJUIwJUVDJTg0JUIxJTIyJTJDJTIyYm9sZCUyMiUzQXRydWUlN0QlMkMlN0IlMjJ0ZXh0JTIyJTNBJTIyJUVDJTlEJTg0JTIwJUVDJTk2JUI0JUVCJTk2JUJCJUVBJUIyJThDJTIwJUVEJTk5JTk1JUVCJUIzJUI0JUVEJTk1JUEwJTIwJUVBJUIyJTgzJUVDJTlEJUI4JUVBJUIwJTgwJUVDJTk3JTkwJTIwJUVCJThDJTgwJUVEJTk1JTlDJTIwJUVDJUE3JTg4JUVCJUFDJUI4JUVDJTk3JTkwJTIwJUVCJThCJUI1JUVEJTk1JUEwJTIwJUVDJUIwJUE4JUVCJUExJTgwJUVDJTlFJTg1JUVCJThCJTg4JUVCJThCJUE0LiUyMCVFQyU5NyVBQyVFQSVCOCVCMCVFQyU5NyU5MCUyMCVFQiVCMCU5NCVFQiVBMSU5QyUyMCUyMiU3RCUyQyU3QiUyMnRleHQlMjIlM0ElMjIlRUQlOTElOUMlRUMlQTQlODAlMjIlMkMlMjJib2xkJTIyJTNBdHJ1ZSU3RCUyQyU3QiUyMnRleHQlMjIlM0ElMjIlRUMlOUQlQjQlMjAlRUIlOTMlQjElRUMlOUUlQTUlRUQlOTUlQTklRUIlOEIlODglRUIlOEIlQTQuJTIwJUVEJTkxJTlDJUVDJUE0JTgwJUVDJTlEJTgwJTIwJUVEJThBJUI5JUVDJUEwJTk1JTIwJUVDJUEwJTlDJUVEJTkyJTg4JTJDJTIwJUVDJTg0JTlDJUVCJUI5JTg0JUVDJThBJUE0JTJDJTIwJUVEJTk0JTg0JUVCJUExJTlDJUVDJTg0JUI4JUVDJThBJUE0JTIwJUVCJTk4JTkwJUVCJThBJTk0JTIwJUVDJThCJTlDJUVDJThBJUE0JUVEJTg1JTlDJUVDJTlEJUI0JTIwJUVEJThBJUI5JUVDJUEwJTk1JTIwJUVDJTlBJTk0JUVBJUI1JUFDJUVDJTgyJUFDJUVEJTk1JUFEJUVDJTlEJTg0JTIwJUVDJUI2JUE5JUVDJUExJUIxJUVEJTk1JTk4JUVCJThBJTk0JUVDJUE3JTgwJTIwJUVEJTk5JTk1JUVDJTlEJUI4JUVEJTk1JTk4JUVBJUI4JUIwJTIwJUVDJTlDJTg0JUVEJTk1JTlDJTIwJUVEJTk1JUE5JUVDJTlEJTk4JUVCJTkwJTlDJTIwJUVBJUI3JTlDJUVDJUI5JTk5JTJDJTIwJUVDJUE3JTgwJUVDJUI5JUE4JTIwJUVCJTk4JTkwJUVCJThBJTk0JTIwJUVEJThBJUI5JUVDJTg0JUIxJUVDJTlFJTg1JUVCJThCJTg4JUVCJThCJUE0LiUyMCVFQyU5RCVCNCVFQiU4QSU5NCUyMCVFQiVBNyU4OCVFQyVCOSU5OCUyMCVFQyVBMCU4NCUyMCVFQyU4NCVCOCVFQSVCMyU4NCUyMCVFQiVBQSVBOCVFQiU5MyVBMCUyMCVFQiU4MiU5OCVFQiU5RCVCQyVFQyU5RCU5OCUyMCVFQyU5QSVCNCVFQyVBMCU4NCVFQyU5RSU5MCVFQSVCMCU4MCUyMCVFQiU4RiU5OSVFQyU5RCVCQyVFRCU5NSU5QyUyMCVFQSVCNSU5MCVFRCU4NiVCNSUyMCVFQyU4QiVBMCVFRCU5OCVCOCVFQiVBNSVCQyUyMCVFQyU5RCVCNCVFRCU5NSVCNCVFRCU5NSU5OCVFQSVCMyVBMCUyMCVFQiU5NCVCMCVFQiVBNSVCNCVFQiU5MyVBRiVFQyU5RCVCNCUyQyUyMCVFQiVBQSVBOCVFQiU5MSU5MCVFQSVCMCU4MCUyMCVFQiU4RiU5OSVFQyU5RCU5OCVFRCU5NSU5OCVFQiU4QSU5NCUyMCVFRCU5MiU4OCVFQyVBNyU4OCVFQyU5RCU5OCUyMCVFQSVCOCVCMCVFQyVBNCU4MCVFQyVBMCU5MCVFQyU5RCVCNCUyMCVFQiU5MCVBOSVFQiU4QiU4OCVFQiU4QiVBNC4lMjIlN0QlNUQlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIycCUyMiUyQyUyMmNoaWxkcmVuJTIyJTNBJTVCJTdCJTIydGV4dCUyMiUzQSUyMiVFQyU4NiU4QyVFRCU5NCU4NCVFRCU4QSVCOCVFQyU5QiVBOCVFQyU5NiVCNCUyMCVFQiVCNiU4NCVFQyU5NSVCQyVFQyU5NyU5MCVFQyU4NCU5QyUyMCVFRCU5MSU5QyVFQyVBNCU4MCVFQyU5RCU4MCUyMCVFQiU4QiVBOCVFQyU4OCU5QyVFRCU5RSU4OCUyMCVFQSVCNyU5QyVFQyVBMCU5QyVFQiVBNSVCQyUyMCVFQiU4NCU5OCVFQyU5NiVCNCUyQyUyMCVFQSVCMCU5QyVFQiVCMCU5QyUyMCVFQSVCMyVCQyVFQyVBMCU5NSVFQyU5RCU5OCUyMCVFRCU5QSVBOCVFQyU5QyVBOCVFQyU4NCVCMSVFQyU5RCU4NCUyMCVFQiU4NiU5MiVFQyU5RCVCNCVFQSVCMyVBMCUyQyUyMCVFQyVBMCU5QyVFRCU5MiU4OCVFQyU5RCU5OCUyMCVFRCU5MiU4OCVFQyVBNyU4OCVFQyU5RCU4NCUyMCVFQiVCMyVCNCVFQyU5RSVBNSVFRCU5NSU5OCVFQiVBOSVCMCUyQyUyMCVFQSVCNiU4MSVFQSVCNyVCOSVFQyVBMCU4MSVFQyU5QyVCQyVFQiVBMSU5QyVFQiU4QSU5NCUyMCVFQyU4MiVBQyVFQyU5QSVBOSVFQyU5RSU5MCVFQyU5NyU5MCVFQSVCMiU4QyUyMCVFQyU4QiVBMCVFQiVBMiVCMCVFQiVBNSVCQyUyMCVFQyVBMCU5QyVFQSVCMyVCNSVFRCU5NSU5OCVFQiU4QSU5NCUyMCVFQyVBNCU5MSVFQyU5QSU5NCVFRCU5NSU5QyUyMCVFQyU5NyVBRCVFRCU5NSVBMCVFQyU5RCU4NCUyMCVFRCU5NSVBOSVFQiU4QiU4OCVFQiU4QiVBNC4lMjAlRUQlOEElQjklRUQlOUUlODglMjBBSSUyMCVFQSVCOCVCMCVFQyU4OCVBMCVFQyU5RCVCNCUyMCVFQiVCOSVBMCVFQiVBNSVCNCVFQSVCMiU4QyUyMCVFQiVCMCU5QyVFQyVBMCU4NCVFRCU5NSU5OCVFQiVBOSVCNCVFQyU4NCU5QyUyQyUyMEFJJTIwJUVDJThCJTlDJUVDJThBJUE0JUVEJTg1JTlDJUVDJTlEJTk4JTIwJUVEJTkyJTg4JUVDJUE3JTg4JUVBJUIzJUJDJTIwJUVDJThCJUEwJUVCJUEyJUIwJUVDJTg0JUIxJUVDJTlEJTg0JTIwJUVDJTk2JUI0JUVCJTk2JUJCJUVBJUIyJThDJTIwJUVEJThGJTg5JUVBJUIwJTgwJUVEJTk1JTk4JUVBJUIzJUEwJTIwJUVCJUIzJUI0JUVDJTlFJUE1JUVEJTk1JUEwJTIwJUVBJUIyJTgzJUVDJTlEJUI4JUVBJUIwJTgwJUVDJTk3JTkwJTIwJUVCJThDJTgwJUVEJTk1JTlDJTIwJUVCJTg1JUJDJUVDJTlEJTk4JUVBJUIwJTgwJTIwJUVEJTk5JTlDJUVCJUIwJTlDJUVEJTk1JUI0JUVDJUE3JTgwJUVBJUIzJUEwJTIwJUVDJTlFJTg4JUVDJTlDJUJDJUVCJUE5JUIwJTJDJTIwJUVBJUI4JUIwJUVDJUExJUI0JUVDJTlEJTk4JTIwJUVDJTg2JThDJUVEJTk0JTg0JUVEJThBJUI4JUVDJTlCJUE4JUVDJTk2JUI0JTIwJUVEJTkxJTlDJUVDJUE0JTgwJUVDJTlEJTg0JTIwQUklRUMlOTclOTAlMjAlRUMlQTAlODElRUMlOUElQTklRUQlOTUlOTglRUElQjElQjAlRUIlODIlOTglMjAlRUMlODMlODglRUIlQTElOUMlRUMlOUElQjQlMjBBSSUyMCVFQSVCNCU4MCVFQiVBMCVBOCUyMCVFRCU5MSU5QyVFQyVBNCU4MCVFQyU5RCU4NCUyMCVFQiVBNyU4QyVFQiU5MyVBNCVFQyU5NiVCNCVFQSVCMCU4MCVFQiU4QSU5NCUyMCVFQiU4NSVCOCVFQiVBMCVBNSVFQyU5RCVCNCUyMCVFQSVCMyU4NCVFQyU4NiU4RCVFQiU5MCU5OCVFQSVCMyVBMCUyMCVFQyU5RSU4OCVFQyU4QSVCNSVFQiU4QiU4OCVFQiU4QiVBNC4lMjIlN0QlNUQlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyaGVhZGluZyUyMiUyQyUyMmxldmVsJTIyJTNBMiUyQyUyMmNoaWxkcmVuJTIyJTNBJTVCJTdCJTIydGV4dCUyMiUzQSUyMktPTEFTJTNBJTIwJUVDJTg2JThDJUVEJTk0JTg0JUVEJThBJUI4JUVDJTlCJUE4JUVDJTk2JUI0JTIwJUVEJTkyJTg4JUVDJUE3JTg4JUVDJTlEJTk4JTIwJUVBJUI1JUFEJUVDJUEwJTlDJTIwJUVBJUIzJUI1JUVDJTlEJUI4JTIwJUVDJThCJTlDJUVEJTk3JTk4JUVDJTg2JThDJTIyJTdEJTVEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMnAlMjIlMkMlMjJjaGlsZHJlbiUyMiUzQSU1QiU3QiUyMnRleHQlMjIlM0ElMjJLT0xBUyhLb3JlYSUyMExhYm9yYXRvcnklMjBBY2NyZWRpdGF0aW9uJTIwU2NoZW1lKSUyMiUyQyUyMmJvbGQlMjIlM0F0cnVlJTdEJTJDJTdCJTIydGV4dCUyMiUzQSUyMiVFQiU4QSU5NCUyMCVFRCU5NSU5QyVFQSVCNSVBRCVFQyU5RCVCOCVFQyVBMCU5NSVFQSVCOCVCMCVFQSVCNSVBQyVFQyU5RCU5OCUyMCVFQyU5NSVCRCVFQyU5RSU5MCVFQiVBMSU5QyUyQyUyMCVFQyU4QiU5QyVFRCU5NyU5OCUyQyUyMCVFQSVCMiU4MCVFQyU4MiVBQyUyQyUyMCVFQSVCNSU5MCVFQyVBMCU5NSUyMCVFQSVCOCVCMCVFQSVCNCU4MCVFQyU5RCU5OCUyMCVFQSVCOCVCMCVFQyU4OCVBMCUyMCVFQiU4QSVBNSVFQiVBMCVBNSVFQyU5RCU4NCUyMCVFQSVCNSVBRCVFQyVBMCU5QyUyMCVFRCU5MSU5QyVFQyVBNCU4MCVFQyU5NyU5MCUyMCVFQiU5NCVCMCVFQiU5RCVCQyUyMCVFRCU4RiU4OSVFQSVCMCU4MCVFRCU5NSU5OCVFQyU5NyVBQyUyMCVFQSVCMyVCNSVFQyU5RCVCOCVFRCU5NSU5OCVFQiU4QSU5NCUyMCVFQyVBMCU5QyVFQiU4RiU4NCVFQyU5RSU4NSVFQiU4QiU4OCVFQiU4QiVBNCUyMCUyMiU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJsaW5rUmVmZXJlbmNlJTIyJTJDJTIycmVmZXJlbmNlSWQlMjIlM0ElMjIxJTIyJTJDJTIycmVmZXJlbmNlVXJsJTIyJTNBJTIyaHR0cHMlM0ElMkYlMkZ3d3cua25hYi5nby5rciUyRmVuJTJGQWNjcmVkaXRhdGlvbl9Qcm9jZXNzLmRvJTIyJTJDJTIycmVmZXJlbmNlVGl0bGUlMjIlM0ElMjJLb3JlYSUyMExhYm9yYXRvcnklMjBBY2NyZWRpdGF0aW9uJTIwU2NoZW1lJTIwKEtPTEFTKS4lMjAlNUMlMjJBY2NyZWRpdGF0aW9uJTIwUHJvY2Vzcy4lNUMlMjIlMjIlMkMlMjJyZWZlcmVuY2VJbmRleCUyMiUzQTElMkMlMjJjaGlsZHJlbiUyMiUzQSU1QiU3QiUyMnRleHQlMjIlM0ElMjIlMjIlN0QlNUQlN0QlMkMlN0IlMjJ0ZXh0JTIyJTNBJTIyLiUyMCVFQyU4OSVCRCVFQSVCMiU4QyUyMCVFQiVBNyU5MCVFRCU5NSVCNCUyQyUyMCVFQyU5NiVCNCVFQiU5NiVBNCUyMCVFQSVCOCVCMCVFQSVCNCU4MCVFQyU5RCVCNCUyMCVFRCU4QSVCOSVFQyVBMCU5NSUyMCVFQyVBMCU5QyVFRCU5MiU4OCVFQyU5RCVCNCVFQiU4MiU5OCUyMCVFQyU4NCU5QyVFQiVCOSU4NCVFQyU4QSVBNCVFQyU5RCU5OCUyMCVFRCU5MiU4OCVFQyVBNyU4OCVFQyU5RCU4NCUyMCVFQyU4QiU5QyVFRCU5NyU5OCVFRCU5NSU5OCVFQSVCMyVBMCUyMCVFQSVCNyVCOCUyMCVFQSVCMiVCMCVFQSVCMyVCQyVFQiVBNSVCQyUyMCVFQiVCMyVCNCVFQSVCMyVBMCVFQyU4NCU5QyVFQiVBMSU5QyUyMCVFQiVCMCU5QyVFRCU5NiU4OSVFRCU5NSVBMCUyMCVFQiU5NSU4QyUyQyUyMCVFQSVCNyVCOCUyMCVFQiVCMyVCNCVFQSVCMyVBMCVFQyU4NCU5QyVFQSVCMCU4MCUyMCUyMiU3RCUyQyU3QiUyMnRleHQlMjIlM0ElMjIlRUElQjUlQUQlRUMlQTAlOUMlRUMlQTAlODElRUMlOUMlQkMlRUIlQTElOUMlMjAlRUMlOEIlQTAlRUIlQTIlQjAlRUQlOTUlQTAlMjAlRUMlODglOTglMjAlRUMlOUUlODglRUIlOEElOTQlMjAlRUElQjMlQjUlRUMlOEIlQTAlRUIlQTAlQTUlMjIlMkMlMjJib2xkJTIyJTNBdHJ1ZSU3RCUyQyU3QiUyMnRleHQlMjIlM0ElMjIlRUMlOUQlODQlMjAlRUElQjAlOTYlRUIlOEYlODQlRUIlQTElOUQlMjAlRUMlOUQlQjglRUMlQTYlOUQlRUQlOTUlQjQlMjAlRUMlQTMlQkMlRUIlOEElOTQlMjAlRUMlOEIlOUMlRUMlOEElQTQlRUQlODUlOUMlRUMlOUUlODUlRUIlOEIlODglRUIlOEIlQTQuJTIwJUVCJUE3JTg4JUVDJUI5JTk4JTIwJUVBJUIxJUI0JUVDJUI2JTk1JUVCJUFDJUJDJUVDJTlEJTk4JTIwJUVDJTk1JTg4JUVDJUEwJTg0JTIwJUVDJUE3JTg0JUVCJThCJUE4JUVDJTlEJTg0JTIwJUVEJTk1JTk4JUVCJThBJTk0JTIwJUVBJUI4JUIwJUVBJUI0JTgwJUVDJTlEJUI0JTIwJUVBJUI1JUFEJUVBJUIwJTgwJUVCJUExJTlDJUVCJUI2JTgwJUVEJTg0JUIwJTIyJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMnAlMjIlMkMlMjJpc0JyZWFrJTIyJTNBdHJ1ZSUyQyUyMmNoaWxkcmVuJTIyJTNBJTVCJTdCJTIydGV4dCUyMiUzQSUyMiUyMiU3RCU1RCU3RCUyQyU3QiUyMnRleHQlMjIlM0ElMjIlRUElQjMlQjUlRUMlOUQlQjglRUIlOTAlOUMlMjAlRUMlOUUlOTAlRUElQjIlQTklRUMlOUQlODQlMjAlRUElQjAlOTYlRUMlQjYlOTQlRUMlOTYlQjQlRUMlOTUlQkMlMjAlRUElQjclQjglMjAlRUMlQTclODQlRUIlOEIlQTglMjAlRUElQjIlQjAlRUElQjMlQkMlRUElQjAlODAlMjAlRUMlOEIlQTAlRUIlQTIlQjAlRUIlQTUlQkMlMjAlRUMlOTYlQkIlRUIlOEElOTQlMjAlRUElQjIlODMlRUElQjMlQkMlMjAlRUElQjAlOTklRUMlOEElQjUlRUIlOEIlODglRUIlOEIlQTQuJTIyJTdEJTVEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMnAlMjIlMkMlMjJjaGlsZHJlbiUyMiUzQSU1QiU3QiUyMnRleHQlMjIlM0ElMjIlRUMlODYlOEMlRUQlOTQlODQlRUQlOEElQjglRUMlOUIlQTglRUMlOTYlQjQlMjAlRUIlQjYlODQlRUMlOTUlQkMlRUMlOTclOTAlRUMlODQlOUMlMjBLT0xBUyUyMCVFQSVCMyVCNSVFQyU5RCVCOCUyMCVFQyU4QiU5QyVFRCU5NyU5OCVFQSVCOCVCMCVFQSVCNCU4MCVFQyU5RCU4MCUyMCVFQyU4NiU4QyVFRCU5NCU4NCVFRCU4QSVCOCVFQyU5QiVBOCVFQyU5NiVCNCVFQyU5RCU5OCUyMCVFRCU5MiU4OCVFQyVBNyU4OCVFQyU5RCU4NCUyMCVFQSVCNSVBRCVFQyVBMCU5QyUyMCVFRCU5MSU5QyVFQyVBNCU4MCVFQyU5NyU5MCUyMCVFQiU5NCVCMCVFQiU5RCVCQyUyMCVFQyU4QiU5QyVFRCU5NyU5OCVFRCU5NSU5OCVFQSVCMyVBMCUyQyUyMCVFQSVCNyVCOCUyMCVFQSVCMiVCMCVFQSVCMyVCQyVFQiVBNSVCQyUyMCVFQSVCMyVCNSVFQyU5RCVCOCUyMCVFQyU4QiU5QyVFRCU5NyU5OCVFQyU4NCVCMSVFQyVBMCU4MSVFQyU4NCU5QyVFQiVBMSU5QyUyMCVFQiVCMCU5QyVFRCU5NiU4OSVFRCU5NSVBOSVFQiU4QiU4OCVFQiU4QiVBNC4lMjAlRUMlOUQlQjQlMjAlRUMlODQlQjElRUMlQTAlODElRUMlODQlOUMlRUIlOEElOTQlMjBJTEFDLU1SQSglRUElQjUlQUQlRUMlQTAlOUMlRUMlODMlODElRUQlOTglQjglRUMlOUQlQjglRUMlQTAlOTUlRUQlOTglOTElRUMlQTAlOTUpJUVDJTk3JTkwJTIwJUVCJTk0JUIwJUVCJTlEJUJDJTIwJUVDJUEwJTg0JTIwJUVDJTg0JUI4JUVBJUIzJTg0JTIwJUVDJUEzJUJDJUVDJTlBJTk0JTIwJUVBJUI1JUFEJUVBJUIwJTgwJUVDJTk3JTkwJUVDJTg0JTlDJTIwJUVEJTg2JUI1JUVDJTlBJUE5JUVCJTkwJTk4JUVCJUFGJTgwJUVCJUExJTlDJTJDJTIwJUVDJTlBJUIwJUVCJUE2JUFDJTIwJUVBJUI4JUIwJUVDJTk3JTg1JUVDJTlEJUI0JTIwJUVBJUIwJTlDJUVCJUIwJTlDJUVEJTk1JTlDJTIwQUklMjAlRUIlQjAlOEYlMjAlRUMlODYlOEMlRUQlOTQlODQlRUQlOEElQjglRUMlOUIlQTglRUMlOTYlQjQlMjAlRUMlQTAlOUMlRUQlOTIlODglRUMlOUQlQjQlMjAlRUQlOTUlQjQlRUMlOTklQjglMjAlRUMlODglOTglRUMlQjYlOUMlMjAlRUMlOEIlOUMlMjAlRUQlOTIlODglRUMlQTclODglRUMlOUQlODQlMjAlRUMlQTYlOUQlRUIlQUElODUlRUQlOTUlOTglRUIlOEElOTQlMjAlRUIlOEQlQjAlMjAlRUIlQTclQTQlRUMlOUElQjAlMjAlRUMlQTQlOTElRUMlOUElOTQlRUQlOTUlOUMlMjAlRUMlOTclQUQlRUQlOTUlQTAlRUMlOUQlODQlMjAlRUQlOTUlQTklRUIlOEIlODglRUIlOEIlQTQlMjAlMjIlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIybGlua1JlZmVyZW5jZSUyMiUyQyUyMnJlZmVyZW5jZUlkJTIyJTNBJTIyMiUyMiUyQyUyMnJlZmVyZW5jZVVybCUyMiUzQSUyMmh0dHBzJTNBJTJGJTJGa2FpdC5vci5rciUyRmVuZyUyRnVzZXIlMkZNYWluTWVudUxpc3QuZG8lM0ZjYXRlU2VxJTNEOSUyNm1lbnVTZXElM0QxNTYlMjIlMkMlMjJyZWZlcmVuY2VUaXRsZSUyMiUzQSUyMktBSVQuJTIwJTVDJTIyS09MQVMlMjBBY2NyZWRpdGVkJTIwVGVzdGluZyUyMExhYm9yYXRvcnklMjBmb3IlMjBTb2Z0d2FyZS4lNUMlMjIlMjIlMkMlMjJyZWZlcmVuY2VJbmRleCUyMiUzQTIlMkMlMjJjaGlsZHJlbiUyMiUzQSU1QiU3QiUyMnRleHQlMjIlM0ElMjIlMjIlN0QlNUQlN0QlMkMlN0IlMjJ0ZXh0JTIyJTNBJTIyLiUyMCVFRCU5MiU4OCVFQyVBNyU4OCUyMCVFQyU5NSU4NCVFRCU4MiVBNCVFRCU4NSU4RCVFRCU4QSVCOCVFQyU5NyU5MCVFQSVCMiU4QyUyMEtPTEFTJTIwJUVDJTlEJUI4JUVDJUEwJTk1JTIwJUVDJTlBJTk0JUVBJUIxJUI0JUVDJTk3JTkwJTIwJUVCJThDJTgwJUVEJTk1JTlDJTIwJUVDJTlEJUI0JUVEJTk1JUI0JUVCJThBJTk0JTJDJTIwJUVDJTg2JThDJUVEJTk0JTg0JUVEJThBJUI4JUVDJTlCJUE4JUVDJTk2JUI0JUVDJTlEJTk4JTIwJUVEJTkyJTg4JUVDJUE3JTg4JUVDJTlEJTg0JTIwJUVCJThCJUE4JUVDJTg4JTlDJUVEJTlFJTg4JTIwJUVCJTgyJUI0JUVCJUI2JTgwJUVDJUEwJTgxJUVDJTlDJUJDJUVCJUExJTlDJUVCJUE3JThDJTIwJUVEJTk5JTk1JUVCJUIzJUI0JUVEJTk1JTk4JUVCJThBJTk0JTIwJUVBJUIyJTgzJUVDJTlEJTg0JTIwJUVCJTg0JTk4JUVDJTk2JUI0JTJDJTIwJUVBJUI1JUFEJUVDJUEwJTlDJUVDJUEwJTgxJUVDJTlEJUI4JTIwJUVDJThCJUEwJUVCJUEyJUIwJUVCJThGJTg0JUVCJUE1JUJDJTIwJUVBJUIwJTk2JUVDJUI2JTk4JTIwJUVBJUIyJTgwJUVDJUE2JTlEJTIwJUVDJUIyJUI0JUVBJUIzJTg0JUVCJUE1JUJDJTIwJUVBJUI1JUFDJUVDJUI2JTk1JUVEJTk1JTk4JUVCJThBJTk0JTIwJUVCJThEJUIwJTIwJUVEJTk1JTg0JUVDJTg4JTk4JUVDJUEwJTgxJUVDJTlEJUI4JTIwJUVDJUEwJTg0JUVCJUFDJUI4JUVDJTg0JUIxJUVDJTlEJUI0JTIwJUVCJTkwJUE5JUVCJThCJTg4JUVCJThCJUE0LiUyMiU3RCU1RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJoZWFkaW5nJTIyJTJDJTIybGV2ZWwlMjIlM0EyJTJDJTIyY2hpbGRyZW4lMjIlM0ElNUIlN0IlMjJ0ZXh0JTIyJTNBJTIySVNPJTJGSUVDJTIwMjUwMTAlM0ElMjAlRUMlODYlOEMlRUQlOTQlODQlRUQlOEElQjglRUMlOUIlQTglRUMlOTYlQjQlMjAlRUQlOTIlODglRUMlQTclODglRUMlOUQlOTglMjAlRUMlOTglODElRUMlOTYlOTElMjAlRUMlODQlQjElRUIlQjYlODQlRUQlOTElOUMlMjIlN0QlNUQlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIycCUyMiUyQyUyMmNoaWxkcmVuJTIyJTNBJTVCJTdCJTIydGV4dCUyMiUzQSUyMklTTyUyRklFQyUyMDI1MDEwJTIyJTJDJTIyYm9sZCUyMiUzQXRydWUlN0QlMkMlN0IlMjJ0ZXh0JTIyJTNBJTIyJUVDJTlEJTgwJTIwJUVDJTg2JThDJUVEJTk0JTg0JUVEJThBJUI4JUVDJTlCJUE4JUVDJTk2JUI0JTIwJUVDJUEwJTlDJUVEJTkyJTg4JUVDJTlEJTk4JTIwJUVEJTkyJTg4JUVDJUE3JTg4JTIwJUVEJThBJUI5JUVDJTg0JUIxJUVDJTlEJTg0JTIwJUVDJUEwJTk1JUVDJTlEJTk4JUVEJTk1JTk4JUVCJThBJTk0JTIwJUVBJUI1JUFEJUVDJUEwJTlDJTIwJUVEJTkxJTlDJUVDJUE0JTgwJUVDJTlFJTg1JUVCJThCJTg4JUVCJThCJUE0LiUyMCVFQyU5RCVCNCVFQiU4QSU5NCUyMCVFQiVBNyU4OCVFQyVCOSU5OCUyMCVFQyU5QSVCMCVFQiVBNiVBQyVFQSVCMCU4MCUyMCVFQyU4QiU5RCVFRCU5MiU4OCVFQyU5RCU4NCUyMCVFQSVCNSVBQyVFQiVBNyVBNCVFRCU5NSVBMCUyMCVFQiU5NSU4QyUyMCVFQyU5OCU4MSVFQyU5NiU5MSUyMCVFQyU4NCVCMSVFQiVCNiU4NCVFRCU5MSU5QyVFQiVBNSVCQyUyMCVFQiVCMyVCNCVFQSVCMyVBMCUyMCVFQyU5NiVCNCVFQiU5NiVBNCUyMCVFQyU4NCVCMSVFQiVCNiU4NCVFQyU5RCVCNCUyMCVFQyU5NiVCQyVFQiVBNyU4OCVFQiU4MiU5OCUyMCVFQiU5MyVBNCVFQyU5NiVCNCVFQyU5RSU4OCVFQiU4QSU5NCVFQyVBNyU4MCUyMCVFRCU5OSU5NSVFQyU5RCVCOCVFRCU5NSU5OCVFQiU5MyVBRiVFQyU5RCVCNCUyQyUyMCVFQyU4NiU4QyVFRCU5NCU4NCVFRCU4QSVCOCVFQyU5QiVBOCVFQyU5NiVCNCVFQyU5RCU5OCUyMCVFRCU5MiU4OCVFQyVBNyU4OCVFQyU5RCU4NCUyMCVFQyU5NyVBQyVFQiU5RiVBQyUyMCVFQSVCMCU4MCVFQyVBNyU4MCUyMCVFQSVCNCU4MCVFQyVBMCU5MCVFQyU5NyU5MCVFQyU4NCU5QyUyMCVFQyVCMiVCNCVFQSVCMyU4NCVFQyVBMCU4MSVFQyU5QyVCQyVFQiVBMSU5QyUyMCVFRCU4RiU4OSVFQSVCMCU4MCVFRCU5NSVBMCUyMCVFQyU4OCU5OCUyMCVFQyU5RSU4OCVFQiU4RiU4NCVFQiVBMSU5RCUyMCVFQiU4RiU5NSVFQiU4QSU5NCUyMCUyMiU3RCUyQyU3QiUyMnRleHQlMjIlM0ElMjIlRUMlODYlOEMlRUQlOTQlODQlRUQlOEElQjglRUMlOUIlQTglRUMlOTYlQjQlMjAlRUQlOTIlODglRUMlQTclODglRUMlOUQlOTglMjAlRUMlOTglODElRUMlOTYlOTElMjAlRUMlODQlQjElRUIlQjYlODQlRUQlOTElOUMlMjIlMkMlMjJib2xkJTIyJTNBdHJ1ZSU3RCUyQyU3QiUyMnRleHQlMjIlM0ElMjIlRUMlOTklODAlMjAlRUElQjAlOTklRUMlOEElQjUlRUIlOEIlODglRUIlOEIlQTQlMjAlMjIlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIybGlua1JlZmVyZW5jZSUyMiUyQyUyMnJlZmVyZW5jZUlkJTIyJTNBJTIyMyUyMiUyQyUyMnJlZmVyZW5jZVVybCUyMiUzQSUyMmh0dHBzJTNBJTJGJTJGd3d3Lmlzby5vcmclMkZzdGFuZGFyZCUyRjM1NzMzLmh0bWwlMjIlMkMlMjJyZWZlcmVuY2VUaXRsZSUyMiUzQSUyMklTTy4lMjAlNUMlMjJJU08lMkZJRUMlMjAyNTAxMCUzQTIwMTElMjAtJTIwU3lzdGVtcyUyMGFuZCUyMHNvZnR3YXJlJTIwZW5naW5lZXJpbmcuJTVDJTIyJTIyJTJDJTIycmVmZXJlbmNlSW5kZXglMjIlM0EzJTJDJTIyY2hpbGRyZW4lMjIlM0ElNUIlN0IlMjJ0ZXh0JTIyJTNBJTIyJTIyJTdEJTVEJTdEJTJDJTdCJTIydGV4dCUyMiUzQSUyMi4lMjAlRUMlOUQlQjQlMjAlRUQlOTElOUMlRUMlQTQlODAlRUMlOUQlODAlMjAlRUMlODYlOEMlRUQlOTQlODQlRUQlOEElQjglRUMlOUIlQTglRUMlOTYlQjQlMjAlRUQlOTIlODglRUMlQTclODglRUMlOUQlODQlMjAlRUIlOEIlQTQlRUMlOUQlOEMlRUElQjMlQkMlMjAlRUElQjAlOTklRUMlOUQlODAlMjA4JUVBJUIwJTgwJUVDJUE3JTgwJTIwJUVDJUEzJUJDJUVDJTlBJTk0JTIwJUVEJThBJUI5JUVDJTg0JUIxJUVBJUIzJUJDJTIwJUVEJTk1JTk4JUVDJTlDJTg0JTIwJUVEJThBJUI5JUVDJTg0JUIxJUVDJTlDJUJDJUVCJUExJTlDJTIwJUVCJUI2JTg0JUVCJUE1JTk4JUVEJTk1JUE5JUVCJThCJTg4JUVCJThCJUE0LiUyMiU3RCU1RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJ0YWJsZSUyMiUyQyUyMmNoaWxkcmVuJTIyJTNBJTVCJTdCJTIydHlwZSUyMiUzQSUyMnRhYmxlUm93JTIyJTJDJTIyY2hpbGRyZW4lMjIlM0ElNUIlN0IlMjJ0eXBlJTIyJTNBJTIydGFibGVDZWxsJTIyJTJDJTIyY2hpbGRyZW4lMjIlM0ElNUIlN0IlMjJ0ZXh0JTIyJTNBJTIyJUVDJUEzJUJDJUVDJTlBJTk0JTIwJUVEJTkyJTg4JUVDJUE3JTg4JTIwJUVEJThBJUI5JUVDJTg0JUIxJTIyJTdEJTVEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMnRhYmxlQ2VsbCUyMiUyQyUyMmNoaWxkcmVuJTIyJTNBJTVCJTdCJTIydGV4dCUyMiUzQSUyMiVFQyU4NCVBNCVFQiVBQSU4NSUyMCglRUIlQjklODQlRUMlOUMlQTApJTIyJTdEJTVEJTdEJTVEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMnRhYmxlUm93JTIyJTJDJTIyY2hpbGRyZW4lMjIlM0ElNUIlN0IlMjJ0eXBlJTIyJTNBJTIydGFibGVDZWxsJTIyJTJDJTIyY2hpbGRyZW4lMjIlM0ElNUIlN0IlMjJ0ZXh0JTIyJTNBJTIyJUVBJUI4JUIwJUVCJThBJUE1JTIwJUVDJUEwJTgxJUVEJTk1JUE5JUVDJTg0JUIxJTIyJTJDJTIyYm9sZCUyMiUzQXRydWUlN0QlMkMlN0IlMjJ0ZXh0JTIyJTNBJTIyJTIwKEZ1bmN0aW9uYWwlMjBTdWl0YWJpbGl0eSklMjIlN0QlNUQlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIydGFibGVDZWxsJTIyJTJDJTIyY2hpbGRyZW4lMjIlM0ElNUIlN0IlMjJ0ZXh0JTIyJTNBJTIyJUVDJTg2JThDJUVEJTk0JTg0JUVEJThBJUI4JUVDJTlCJUE4JUVDJTk2JUI0JUVBJUIwJTgwJTIwJUVEJTk1JTg0JUVDJTlBJTk0JUVEJTk1JTlDJTIwJUVBJUI4JUIwJUVCJThBJUE1JUVDJTlEJTg0JTIwJUVDJTk2JUJDJUVCJUE3JTg4JUVCJTgyJTk4JTIwJUVDJUEwJTk1JUVEJTk5JTk1JUVEJTk1JTk4JUVBJUIzJUEwJTIwJUVDJTk5JTg0JUVDJUEwJTg0JUVEJTk1JTk4JUVBJUIyJThDJTIwJUVDJUEwJTlDJUVBJUIzJUI1JUVEJTk1JTk4JUVCJThBJTk0JUVBJUIwJTgwJTIwKCVFQyU5OCU4OCUzQSUyMCVFQSVCMyU4NCVFQyU4MiVCMCVFQSVCOCVCMCVFQSVCMCU4MCUyMCVFQyVBMCU5NSVFRCU5OSU5NSVFRCU5NSU5OCVFQSVCMiU4QyUyMCVFQSVCMyU4NCVFQyU4MiVCMCVFRCU5NSU5OCVFQiU4QSU5NCVFQSVCMCU4MCklMjIlN0QlNUQlN0QlNUQlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIydGFibGVSb3clMjIlMkMlMjJjaGlsZHJlbiUyMiUzQSU1QiU3QiUyMnR5cGUlMjIlM0ElMjJ0YWJsZUNlbGwlMjIlMkMlMjJjaGlsZHJlbiUyMiUzQSU1QiU3QiUyMnRleHQlMjIlM0ElMjIlRUMlODQlQjElRUIlOEElQTUlMjAlRUQlOUElQTglRUMlOUMlQTglRUMlODQlQjElMjIlMkMlMjJib2xkJTIyJTNBdHJ1ZSU3RCUyQyU3QiUyMnRleHQlMjIlM0ElMjIlMjAoUGVyZm9ybWFuY2UlMjBFZmZpY2llbmN5KSUyMiU3RCU1RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJ0YWJsZUNlbGwlMjIlMkMlMjJjaGlsZHJlbiUyMiUzQSU1QiU3QiUyMnRleHQlMjIlM0ElMjIlRUMlODYlOEMlRUQlOTQlODQlRUQlOEElQjglRUMlOUIlQTglRUMlOTYlQjQlRUElQjAlODAlMjAlRUMlQTMlQkMlRUMlOTYlQjQlRUMlQTclODQlMjAlRUMlOUUlOTAlRUMlOUIlOTAoJUVDJThCJTlDJUVBJUIwJTg0JTJDJTIwJUVCJUE5JTk0JUVCJUFBJUE4JUVCJUE2JUFDJTIwJUVCJTkzJUIxKSVFQyU5RCU4NCUyMCVFQyU5NiVCQyVFQiVBNyU4OCVFQiU4MiU5OCUyMCVFRCU5QSVBOCVFQyU5QyVBOCVFQyVBMCU4MSVFQyU5QyVCQyVFQiVBMSU5QyUyMCVFQyU4MiVBQyVFQyU5QSVBOSVFRCU5NSU5OCVFQiU4QSU5NCVFQSVCMCU4MCUyMCglRUMlOTglODglM0ElMjAlRUMlOTUlQjElRUMlOUQlQjQlMjAlRUMlOTYlQkMlRUIlQTclODglRUIlODIlOTglMjAlRUIlQjklQTAlRUIlQTUlQjQlRUElQjMlQTAlMjAlRUIlQjYlODAlRUIlOTMlOUMlRUIlOUYlQkQlRUElQjIlOEMlMjAlRUMlOUUlOTElRUIlOEYlOTklRUQlOTUlOTglRUIlOEElOTQlRUElQjAlODApJTIyJTdEJTVEJTdEJTVEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMnRhYmxlUm93JTIyJTJDJTIyY2hpbGRyZW4lMjIlM0ElNUIlN0IlMjJ0eXBlJTIyJTNBJTIydGFibGVDZWxsJTIyJTJDJTIyY2hpbGRyZW4lMjIlM0ElNUIlN0IlMjJ0ZXh0JTIyJTNBJTIyJUVEJTk4JUI4JUVEJTk5JTk4JUVDJTg0JUIxJTIyJTJDJTIyYm9sZCUyMiUzQXRydWUlN0QlMkMlN0IlMjJ0ZXh0JTIyJTNBJTIyJTIwKENvbXBhdGliaWxpdHkpJTIyJTdEJTVEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMnRhYmxlQ2VsbCUyMiUyQyUyMmNoaWxkcmVuJTIyJTNBJTVCJTdCJTIydGV4dCUyMiUzQSUyMiVFQyU4NiU4QyVFRCU5NCU4NCVFRCU4QSVCOCVFQyU5QiVBOCVFQyU5NiVCNCVFQSVCMCU4MCUyMCVFQiU4QiVBNCVFQiVBNSVCOCUyMCVFQyU4QiU5QyVFQyU4QSVBNCVFRCU4NSU5QyVFQyU5RCVCNCVFQiU4MiU5OCUyMCVFRCU5OSU5OCVFQSVCMiVCRCVFQSVCMyVCQyUyMCVFQyU5NiVCQyVFQiVBNyU4OCVFQiU4MiU5OCUyMCVFQyU5RSU5OCUyMCVFQyU5NiVCNCVFQyU5QSVCOCVFQiVBMCVBNCUyMCVFQyU5RSU5MSVFQiU4RiU5OSVFRCU5NSU5OCVFQiU4QSU5NCVFQSVCMCU4MCUyMCglRUMlOTglODglM0ElMjAlRUMlOTclQUMlRUIlOUYlQUMlMjAlRUMlOUElQjQlRUMlOTglODElRUMlQjIlQjQlRUMlQTAlOUMlRUIlODIlOTglMjAlRUIlQjglOEMlRUIlOUQlQkMlRUMlOUElQjAlRUMlQTAlODAlRUMlOTclOTAlRUMlODQlOUMlMjAlRUMlOUUlOTglMjAlRUMlOEIlQTQlRUQlOTYlODklRUIlOTAlOTglRUIlOEElOTQlRUElQjAlODApJTIyJTdEJTVEJTdEJTVEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMnRhYmxlUm93JTIyJTJDJTIyY2hpbGRyZW4lMjIlM0ElNUIlN0IlMjJ0eXBlJTIyJTNBJTIydGFibGVDZWxsJTIyJTJDJTIyY2hpbGRyZW4lMjIlM0ElNUIlN0IlMjJ0ZXh0JTIyJTNBJTIyJUVDJTgyJUFDJUVDJTlBJUE5JUVDJTg0JUIxJTIyJTJDJTIyYm9sZCUyMiUzQXRydWUlN0QlMkMlN0IlMjJ0ZXh0JTIyJTNBJTIyJTIwKFVzYWJpbGl0eSklMjIlN0QlNUQlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIydGFibGVDZWxsJTIyJTJDJTIyY2hpbGRyZW4lMjIlM0ElNUIlN0IlMjJ0ZXh0JTIyJTNBJTIyJUVDJTgyJUFDJUVDJTlBJUE5JUVDJTlFJTkwJUVBJUIwJTgwJTIwJUVDJTg2JThDJUVEJTk0JTg0JUVEJThBJUI4JUVDJTlCJUE4JUVDJTk2JUI0JUVCJUE1JUJDJTIwJUVDJTk2JUJDJUVCJUE3JTg4JUVCJTgyJTk4JTIwJUVDJTg5JUJEJUVBJUIzJUEwJTIwJUVEJTlBJUE4JUVDJTlDJUE4JUVDJUEwJTgxJUVDJTlDJUJDJUVCJUExJTlDJTIwJUVDJTgyJUFDJUVDJTlBJUE5JUVEJTk1JUEwJTIwJUVDJTg4JTk4JTIwJUVDJTlFJTg4JUVCJThBJTk0JUVBJUIwJTgwJTIwKCVFQyU5OCU4OCUzQSUyMCVFQyU5NSVCMSVFQyU5RCU5OCUyMCVFQiVBOSU5NCVFQiU4OSVCNCVFQSVCMCU4MCUyMCVFQyVBNyU4MSVFQSVCNCU4MCVFQyVBMCU4MSVFQyU5RCVCNCVFQSVCMyVBMCUyMCVFQyU4MiVBQyVFQyU5QSVBOSVFRCU5NSU5OCVFQSVCOCVCMCUyMCVFRCU4RSVCOCVFQiVBNiVBQyVFRCU5NSU5QyVFQSVCMCU4MCklMjIlN0QlNUQlN0QlNUQlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIydGFibGVSb3clMjIlMkMlMjJjaGlsZHJlbiUyMiUzQSU1QiU3QiUyMnR5cGUlMjIlM0ElMjJ0YWJsZUNlbGwlMjIlMkMlMjJjaGlsZHJlbiUyMiUzQSU1QiU3QiUyMnRleHQlMjIlM0ElMjIlRUMlOEIlQTAlRUIlQTIlQjAlRUMlODQlQjElMjIlMkMlMjJib2xkJTIyJTNBdHJ1ZSU3RCUyQyU3QiUyMnRleHQlMjIlM0ElMjIlMjAoUmVsaWFiaWxpdHkpJTIyJTdEJTVEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMnRhYmxlQ2VsbCUyMiUyQyUyMmNoaWxkcmVuJTIyJTNBJTVCJTdCJTIydGV4dCUyMiUzQSUyMiVFQyU4NiU4QyVFRCU5NCU4NCVFRCU4QSVCOCVFQyU5QiVBOCVFQyU5NiVCNCVFQSVCMCU4MCUyMCVFQyVBMyVCQyVFQyU5NiVCNCVFQyVBNyU4NCUyMCVFQyVBMSVCMCVFQSVCMSVCNCVFQyU5NyU5MCVFQyU4NCU5QyUyMCVFQyU5NiVCQyVFQiVBNyU4OCVFQiU4MiU5OCUyMCVFQyU5OCVBNCVFQiU5RSVBQiVFQiU4RiU5OSVFQyU5NSU4OCUyMCVFQyU5OCVBNCVFQiVBNSU5OCUyMCVFQyU5NyU4NiVFQyU5RCVCNCUyMCVFQyU5NSU4OCVFQyVBMCU5NSVFQyVBMCU4MSVFQyU5QyVCQyVFQiVBMSU5QyUyMCVFQyU5RSU5MSVFQiU4RiU5OSVFRCU5NSU5OCVFQiU4QSU5NCVFQSVCMCU4MCUyMCglRUMlOTglODglM0ElMjAlRUMlOTUlQjElRUMlOUQlQjQlMjAlRUMlOUUlOTAlRUMlQTMlQkMlMjAlRUIlQTklODglRUMlQjYlOTQlRUElQjElQjAlRUIlODIlOTglMjAlRUIlOEIlQTQlRUMlOUElQjQlRUIlOTAlOTglRUMlQTclODAlMjAlRUMlOTUlOEElRUIlOEElOTQlRUElQjAlODApJTIyJTdEJTVEJTdEJTVEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMnRhYmxlUm93JTIyJTJDJTIyY2hpbGRyZW4lMjIlM0ElNUIlN0IlMjJ0eXBlJTIyJTNBJTIydGFibGVDZWxsJTIyJTJDJTIyY2hpbGRyZW4lMjIlM0ElNUIlN0IlMjJ0ZXh0JTIyJTNBJTIyJUVCJUIzJUI0JUVDJTk1JTg4JUVDJTg0JUIxJTIyJTJDJTIyYm9sZCUyMiUzQXRydWUlN0QlMkMlN0IlMjJ0ZXh0JTIyJTNBJTIyJTIwKFNlY3VyaXR5KSUyMiU3RCU1RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJ0YWJsZUNlbGwlMjIlMkMlMjJjaGlsZHJlbiUyMiUzQSU1QiU3QiUyMnRleHQlMjIlM0ElMjIlRUMlODYlOEMlRUQlOTQlODQlRUQlOEElQjglRUMlOUIlQTglRUMlOTYlQjQlRUElQjAlODAlMjAlRUMlQTAlOTUlRUIlQjMlQjQlRUMlOTklODAlMjAlRUIlOEQlQjAlRUMlOUQlQjQlRUQlODQlQjAlRUIlQTUlQkMlMjAlRUMlOTYlQkMlRUIlQTclODglRUIlODIlOTglMjAlRUMlOUUlOTglMjAlRUIlQjMlQjQlRUQlOTglQjglRUQlOTUlOTglRUElQjMlQTAlMkMlMjAlRUIlQUMlQjQlRUIlOEIlQTglMjAlRUMlQTAlOTElRUElQjclQkMlRUMlOUQlODQlMjAlRUIlQTclODklRUIlOEElOTQlRUElQjAlODAlMjAoJUVDJTk4JTg4JTNBJTIwJUVBJUIwJTlDJUVDJTlEJUI4JTIwJUVDJUEwJTk1JUVCJUIzJUI0JUVBJUIwJTgwJTIwJUVDJTk1JTg4JUVDJUEwJTg0JUVEJTk1JTk4JUVBJUIyJThDJTIwJUVBJUI0JTgwJUVCJUE2JUFDJUVCJTkwJTk4JUVCJThBJTk0JUVBJUIwJTgwKSUyMiU3RCU1RCU3RCU1RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJ0YWJsZVJvdyUyMiUyQyUyMmNoaWxkcmVuJTIyJTNBJTVCJTdCJTIydHlwZSUyMiUzQSUyMnRhYmxlQ2VsbCUyMiUyQyUyMmNoaWxkcmVuJTIyJTNBJTVCJTdCJTIydGV4dCUyMiUzQSUyMiVFQyU5QyVBMCVFQyVBNyU4MCVFQiVCMyVCNCVFQyU4OCU5OCVFQyU4NCVCMSUyMiUyQyUyMmJvbGQlMjIlM0F0cnVlJTdEJTJDJTdCJTIydGV4dCUyMiUzQSUyMiUyMChNYWludGFpbmFiaWxpdHkpJTIyJTdEJTVEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMnRhYmxlQ2VsbCUyMiUyQyUyMmNoaWxkcmVuJTIyJTNBJTVCJTdCJTIydGV4dCUyMiUzQSUyMiVFQyU4NiU4QyVFRCU5NCU4NCVFRCU4QSVCOCVFQyU5QiVBOCVFQyU5NiVCNCVFQiVBNSVCQyUyMCVFQyU5NiVCQyVFQiVBNyU4OCVFQiU4MiU5OCUyMCVFQyU4OSVCRCVFQSVCMiU4QyUyMCVFQyU4OCU5OCVFQyVBMCU5NSUyQyUyMCVFQSVCMCU5QyVFQyU4NCVBMCUyQyUyMCVFRCU5OSU5NSVFQyU5RSVBNSVFRCU5NSVBMCUyMCVFQyU4OCU5OCUyMCVFQyU5RSU4OCVFQiU4QSU5NCVFQSVCMCU4MCUyMCglRUMlOTglODglM0ElMjAlRUElQjAlOUMlRUIlQjAlOUMlRUMlOUUlOTAlRUElQjAlODAlMjAlRUMlQkQlOTQlRUIlOTMlOUMlRUIlQTUlQkMlMjAlRUMlOUQlQjQlRUQlOTUlQjQlRUQlOTUlOTglRUElQjMlQTAlMjAlRUIlQjMlODAlRUElQjIlQkQlRUQlOTUlOTglRUElQjglQjAlMjAlRUMlODklQUMlRUMlOUElQjQlRUElQjAlODApJTIyJTdEJTVEJTdEJTVEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMnRhYmxlUm93JTIyJTJDJTIyY2hpbGRyZW4lMjIlM0ElNUIlN0IlMjJ0eXBlJTIyJTNBJTIydGFibGVDZWxsJTIyJTJDJTIyY2hpbGRyZW4lMjIlM0ElNUIlN0IlMjJ0ZXh0JTIyJTNBJTIyJUVDJTlEJUI0JUVDJThCJTlEJUVDJTg0JUIxJTIyJTJDJTIyYm9sZCUyMiUzQXRydWUlN0QlMkMlN0IlMjJ0ZXh0JTIyJTNBJTIyJTIwKFBvcnRhYmlsaXR5KSUyMiU3RCU1RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJ0YWJsZUNlbGwlMjIlMkMlMjJjaGlsZHJlbiUyMiUzQSU1QiU3QiUyMnRleHQlMjIlM0ElMjIlRUMlODYlOEMlRUQlOTQlODQlRUQlOEElQjglRUMlOUIlQTglRUMlOTYlQjQlRUIlQTUlQkMlMjAlRUIlOEIlQTQlRUIlQTUlQjglMjAlRUQlOTklOTglRUElQjIlQkQlRUMlOUMlQkMlRUIlQTElOUMlMjAlRUMlOTYlQkMlRUIlQTclODglRUIlODIlOTglMjAlRUMlODklQkQlRUElQjIlOEMlMjAlRUMlOTglQUUlRUElQjIlQTglMjAlRUMlODQlQTQlRUMlQjklOTglRUQlOTUlOTglRUElQjMlQTAlMjAlRUMlODIlQUMlRUMlOUElQTklRUQlOTUlQTAlMjAlRUMlODglOTglMjAlRUMlOUUlODglRUIlOEElOTQlRUElQjAlODAlMjAoJUVDJTk4JTg4JTNBJTIwUEMlRUMlOUElQTklMjAlRUQlOTQlODQlRUIlQTElOUMlRUElQjclQjglRUIlOUUlQTglRUMlOUQlODQlMjAlRUIlQUElQTglRUIlQjAlOTQlRUMlOUQlQkMlRUMlOTclOTAlRUMlODQlOUMlRUIlOEYlODQlMjAlRUMlODklQkQlRUElQjIlOEMlMjAlRUMlODIlQUMlRUMlOUElQTklRUQlOTUlQTAlMjAlRUMlODglOTglMjAlRUMlOUUlODglRUIlOEElOTQlRUElQjAlODApJTIyJTdEJTVEJTdEJTVEJTdEJTVEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMnAlMjIlMkMlMjJjaGlsZHJlbiUyMiUzQSU1QiU3QiUyMnRleHQlMjIlM0ElMjIlRUMlOUQlQjQlRUIlOUYlQUMlRUQlOTUlOUMlMjAlRUQlOTIlODglRUMlQTclODglMjAlRUQlOEElQjklRUMlODQlQjElRUIlOTMlQTQlRUMlOUQlODAlMjAlRUMlODYlOEMlRUQlOTQlODQlRUQlOEElQjglRUMlOUIlQTglRUMlOTYlQjQlRUMlOUQlOTglMjAlRUMlODQlQTQlRUElQjMlODQlMkMlMjAlRUElQjAlOUMlRUIlQjAlOUMlMkMlMjAlRUQlODUlOEMlRUMlOEElQTQlRUQlOEElQjglMjAlRUMlQTAlODQlMjAlRUElQjMlQkMlRUMlQTAlOTUlRUMlOTclOTAlRUMlODQlOUMlMjAlRUElQjMlQTAlRUIlQTAlQTQlRUIlOTAlOTglRUMlOTYlQjQlRUMlOTUlQkMlMjAlRUQlOTUlQTAlMjAlRUMlQTQlOTElRUMlOUElOTQlRUQlOTUlOUMlMjAlRUMlQTclODAlRUMlQjklQTglRUMlOUQlQjQlMjAlRUIlOTAlQTklRUIlOEIlODglRUIlOEIlQTQuJTIwJUVEJTkyJTg4JUVDJUE3JTg4JTIwJUVDJTk1JTg0JUVEJTgyJUE0JUVEJTg1JThEJUVEJThBJUI4JUVCJThBJTk0JTIwSVNPJTJGSUVDJTIwMjUwMTAlRUElQjMlQkMlMjAlRUElQjAlOTklRUMlOUQlODAlMjAlRUQlOTElOUMlRUMlQTQlODAlRUMlOUQlODQlMjAlRUQlOTklOUMlRUMlOUElQTklRUQlOTUlOTglRUMlOTclQUMlMjAlRUMlODYlOEMlRUQlOTQlODQlRUQlOEElQjglRUMlOUIlQTglRUMlOTYlQjQlRUMlOUQlOTglMjAlRUQlOTIlODglRUMlQTclODglMjAlRUIlQUElQTklRUQlOTElOUMlRUIlQTUlQkMlMjAlRUMlODQlQTQlRUMlQTAlOTUlRUQlOTUlOTglRUElQjMlQTAlMkMlMjAlRUElQjAlODElMjAlRUQlOEElQjklRUMlODQlQjElRUMlOTclOTAlMjAlRUIlOEMlODAlRUQlOTUlOUMlMjAlRUMlQjglQTElRUMlQTAlOTUlMjAlRUMlQTclODAlRUQlOTElOUMlRUIlQTUlQkMlMjAlRUMlQTAlOTUlRUMlOUQlOTglRUQlOTUlOTglRUIlQTklQjAlMkMlMjAlRUElQjAlOUMlRUIlQjAlOUMlRUIlOTAlOUMlMjAlRUMlODYlOEMlRUQlOTQlODQlRUQlOEElQjglRUMlOUIlQTglRUMlOTYlQjQlRUElQjAlODAlMjAlRUMlOUQlQjQlRUIlOUYlQUMlRUQlOTUlOUMlMjAlRUQlOTElOUMlRUMlQTQlODAlRUMlOUQlODQlMjAlRUMlQjYlQTklRUMlQTElQjElRUQlOTUlOTglRUIlOEElOTQlRUMlQTclODAlMjAlRUElQjIlODAlRUMlQTYlOUQlRUQlOTUlOTglRUIlOEElOTQlMjAlRUMlOTclQUQlRUQlOTUlQTAlRUMlOUQlODQlMjAlRUMlODglOTglRUQlOTYlODklRUQlOTUlQTklRUIlOEIlODglRUIlOEIlQTQuJTIyJTdEJTVEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmhlYWRpbmclMjIlMkMlMjJsZXZlbCUyMiUzQTIlMkMlMjJjaGlsZHJlbiUyMiUzQSU1QiU3QiUyMnRleHQlMjIlM0ElMjJBSSUyMCVFQSVCMiU4MCVFQyVBNiU5RCUyMCVFQyVCMiVCNCVFQSVCMyU4NCVFQyU5OSU4MCUyMCVFQiU4RiU4NCVFQiVBOSU5NCVFQyU5RCVCOCUyMCVFQyVBMCU4NCVFQiVBQyVCOCVFQyU4NCVCMSUzQSUyMCVFRCU5MSU5QyVFQyVBNCU4MCVFQyU5RCU4NCUyMEFJJUVDJTk3JTkwJTIwJUVDJTk3JUIwJUVBJUIyJUIwJUVEJTk1JTk4JUVCJThCJUE0JTIyJTdEJTVEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMnAlMjIlMkMlMjJjaGlsZHJlbiUyMiUzQSU1QiU3QiUyMnRleHQlMjIlM0ElMjJBSSUyMCVFQSVCOCVCMCVFQyU4OCVBMCVFQyU5RCVCNCUyMCVFQyU4NiU4QyVFRCU5NCU4NCVFRCU4QSVCOCVFQyU5QiVBOCVFQyU5NiVCNCUyMCVFQSVCMCU5QyVFQiVCMCU5QyVFQyU5NyU5MCUyMCVFQSVCOSU4QSVFQyU4OCU5OSVFQyU5RCVCNCUyMCVFRCU4NiVCNSVFRCU5NSVBOSVFQiU5MCU5OCVFQiVBOSVCNCVFQyU4NCU5QyUyQyUyMCVFQSVCOCVCMCVFQyVBMSVCNCVFQyU5RCU5OCUyMCVFRCU5MiU4OCVFQyVBNyU4OCUyMCVFRCU5MSU5QyVFQyVBNCU4MCVFQyU5RCU4NCUyMEFJJTIwJUVDJThCJTlDJUVDJThBJUE0JUVEJTg1JTlDJUVDJTk3JTkwJTIwJUVDJTk2JUI0JUVCJTk2JUJCJUVBJUIyJThDJTIwJUVDJUEwJTgxJUVDJTlBJUE5JUVEJTk1JTk4JUVBJUIzJUEwJTIwJUVBJUIyJTgwJUVDJUE2JTlEJUVEJTk1JUEwJTIwJUVBJUIyJTgzJUVDJTlEJUI4JUVBJUIwJTgwJUVBJUIwJTgwJTIwJUVDJUE0JTkxJUVDJTlBJTk0JUVEJTk1JTlDJTIwJUVBJUIzJUJDJUVDJUEwJTlDJUVCJUExJTlDJTIwJUVCJTk2JUEwJUVDJTk4JUE0JUVCJUE1JUI0JUVBJUIzJUEwJTIwJUVDJTlFJTg4JUVDJThBJUI1JUVCJThCJTg4JUVCJThCJUE0LiUyMEFJJTIwJUVCJUFBJUE4JUVCJThEJUI4JUVDJTlEJTk4JTIwJUVDJTg0JUIxJUVCJThBJUE1JTJDJTIwJUVBJUIzJUI1JUVDJUEwJTk1JUVDJTg0JUIxJTJDJTIwJUVEJTg4JUFDJUVCJUFBJTg1JUVDJTg0JUIxJTJDJTIwJUVBJUIyJUFDJUVBJUIzJUEwJUVDJTg0JUIxJTIwJUVCJTkzJUIxJUVDJTlEJTgwJTIwJUVBJUI4JUIwJUVDJUExJUI0JTIwJUVDJTg2JThDJUVEJTk0JTg0JUVEJThBJUI4JUVDJTlCJUE4JUVDJTk2JUI0JTIwJUVEJTkyJTg4JUVDJUE3JTg4JTIwJUVEJThBJUI5JUVDJTg0JUIxJUVBJUIzJUJDJUVCJThBJTk0JTIwJUVCJThCJUE0JUVCJUE1JUI4JTIwJUVDJTgzJTg4JUVCJUExJTlDJUVDJTlBJUI0JTIwJUVBJUI0JTgwJUVDJUEwJTkwJUVDJTlEJTk4JTIwJUVBJUIyJTgwJUVDJUE2JTlEJUVDJTlEJTg0JTIwJUVDJTlBJTk0JUVBJUI1JUFDJUVEJTk1JUE5JUVCJThCJTg4JUVCJThCJUE0LiUyMCVFQyU5OCU4OCVFQiVBNSVCQyUyMCVFQiU5MyVBNCVFQyU5NiVCNCUyQyUyMEFJJTIwJUVBJUI4JUIwJUVCJUIwJTk4JUVDJTlEJTk4JTIwJUVDJTlEJUI0JUVCJUFGJUI4JUVDJUE3JTgwJTIwJUVDJTlEJUI4JUVDJThCJTlEJTIwJUVDJThCJTlDJUVDJThBJUE0JUVEJTg1JTlDJUVDJTlEJUI0JTIwJUVEJThBJUI5JUVDJUEwJTk1JTIwJUVDJTlEJUI4JUVDJUEyJTg1JUVDJTlEJUI0JUVCJTgyJTk4JTIwJUVDJTg0JUIxJUVCJUIzJTg0JUVDJTk3JTkwJTIwJUVCJThDJTgwJUVEJTk1JUI0JTIwJUVEJThFJUI4JUVEJTk2JUE1JUVCJTkwJTlDJTIwJUVBJUIyJUIwJUVBJUIzJUJDJUVCJUE1JUJDJTIwJUVCJTgyJUI0JUVCJTg2JTkzJUVCJThBJTk0JUVCJThCJUE0JUVCJUE5JUI0JTJDJTIwJUVDJTlEJUI0JUVCJThBJTk0JTIwJUVBJUI4JUIwJUVCJThBJUE1JTIwJUVDJUEwJTgxJUVEJTk1JUE5JUVDJTg0JUIxJUVCJUJGJTkwJUVCJUE3JThDJTIwJUVDJTk1JTg0JUVCJThCJTg4JUVCJTlEJUJDJTIwJUVBJUIzJUI1JUVDJUEwJTk1JUVDJTg0JUIxJUVDJTlEJUI0JUVCJTlEJUJDJUVCJThBJTk0JTIwJUVDJTgzJTg4JUVCJUExJTlDJUVDJTlBJUI0JTIwJUVEJTkyJTg4JUVDJUE3JTg4JTIwJUVEJThBJUI5JUVDJTg0JUIxJUVDJTk3JTkwJUVDJTg0JTlDJTIwJUVCJUFDJUI4JUVDJUEwJTlDJUVBJUIwJTgwJTIwJUVCJUIwJTlDJUVDJTgzJTlEJUVEJTk1JTlDJTIwJUVBJUIyJTgzJUVDJTlFJTg1JUVCJThCJTg4JUVCJThCJUE0LiUyMiU3RCU1RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJwJTIyJTJDJTIyY2hpbGRyZW4lMjIlM0ElNUIlN0IlMjJ0ZXh0JTIyJTNBJTIyJUVDJTk3JUFDJUVBJUI4JUIwJUVDJTg0JTlDJTIwJUVEJTkyJTg4JUVDJUE3JTg4JTIwJUVDJTk1JTg0JUVEJTgyJUE0JUVEJTg1JThEJUVEJThBJUI4JUVDJTlEJTk4JTIwJTIyJTdEJTJDJTdCJTIydGV4dCUyMiUzQSUyMiVFQiU4RiU4NCVFQiVBOSU5NCVFQyU5RCVCOCUyMCVFQyVBMCU4NCVFQiVBQyVCOCVFQyU4NCVCMSUyMiUyQyUyMmJvbGQlMjIlM0F0cnVlJTdEJTJDJTdCJTIydGV4dCUyMiUzQSUyMiVFQyU5RCVCNCUyMCVFQiVCOSU5QiVFQyU5RCU4NCUyMCVFQiVCMCU5QyVFRCU5NSVBOSVFQiU4QiU4OCVFQiU4QiVBNC4lMjAlRUMlOUElQjAlRUIlQTYlQUMlRUIlOEElOTQlMjAlRUIlOEIlQTglRUMlODglOUMlRUQlOUUlODglMjBBSSUyMCVFQiU4RiU4NCVFQSVCNSVBQyVFQiVBNSVCQyUyMCVFQyU4MiVBQyVFQyU5QSVBOSVFRCU5NSU5OCVFQiU4QSU5NCUyMCVFQSVCMiU4MyVFQyU5RCU4NCUyMCVFQiU4NCU5OCVFQyU5NiVCNCUyQyUyMEtPTEFTJTIwJUVDJTlEJUI4JUVDJUEwJTk1JTIwJUVDJTlBJTk0JUVBJUIxJUI0JUVDJTlEJUI0JUVCJTgyJTk4JTIwSVNPJTJGSUVDJTIwMjUwMTAlRUElQjMlQkMlMjAlRUElQjAlOTklRUMlOUQlODAlMjAlRUQlOTIlODglRUMlQTclODglMjAlRUQlOTElOUMlRUMlQTQlODAlRUMlOUQlODQlMjBBSSUyMCVFQSVCMiU4MCVFQyVBNiU5RCUyMCVFQyVCMiVCNCVFQSVCMyU4NCVFQyU5NyU5MCUyMCVFQyU5NyVCMCVFQSVCMiVCMCVFRCU5NSU5OCVFQiU4QSU5NCUyMCVFQyU5NyVBRCVFRCU5NSVBMCVFQyU5RCU4NCUyMCVFRCU5NSVCNCVFQyU5NSVCQyUyMCVFRCU5NSVBOSVFQiU4QiU4OCVFQiU4QiVBNC4lMjAlRUMlOUQlQjQlRUIlOEElOTQlMjAlRUIlQTclODglRUMlQjklOTglMjAlRUMlOEIlOUQlRUQlOTIlODglMjAlRUMlOTglODElRUMlOTYlOTElMjAlRUMlODQlQjElRUIlQjYlODQlRUQlOTElOUMlRUIlQTUlQkMlMjAlRUIlQjMlQjQlRUElQjMlQTAlMjAlRUIlOEIlQTglRUMlODglOUMlRUQlOUUlODglMjAlRUMlODglQUIlRUMlOUUlOTAlRUIlQTUlQkMlMjAlRUMlOUQlQkQlRUIlOEElOTQlMjAlRUElQjIlODMlRUMlOUQlODQlMjAlRUIlODQlOTglRUMlOTYlQjQlMkMlMjAlRUElQjAlODElMjAlRUMlODQlQjElRUIlQjYlODQlRUMlOUQlQjQlMjAlRUMlOUElQjAlRUIlQTYlQUMlMjAlRUIlQUElQjglRUMlOTclOTAlMjAlRUMlOTYlQjQlRUIlOTYlQTQlMjAlRUMlOTglODElRUQlOTYlQTUlRUMlOUQlODQlMjAlRUIlQUYlQjglRUMlQjklOTglRUIlOEElOTQlRUMlQTclODAlMjAlRUMlOUQlQjQlRUQlOTUlQjQlRUQlOTUlOTglRUElQjMlQTAlMkMlMjAlRUElQjAlOUMlRUMlOUQlQjglRUMlOUQlOTglMjAlRUElQjElQjQlRUElQjAlOTUlMjAlRUMlODMlODElRUQlODMlOUMlRUMlOTclOTAlMjAlRUIlQTclOUUlRUMlQjYlQjAlMjAlRUMlOEIlOUQlRUIlOEIlQTglRUMlOUQlODQlMjAlRUMlQTElQjAlRUMlQTAlODglRUQlOTUlOTglRUIlOEElOTQlMjAlRUMlQTAlODQlRUIlQUMlQjglRUElQjAlODAlRUMlOUQlOTglMjAlRUMlOTclQUQlRUQlOTUlQTAlRUElQjMlQkMlMjAlRUElQjAlOTklRUMlOEElQjUlRUIlOEIlODglRUIlOEIlQTQuJTIyJTdEJTVEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMnAlMjIlMkMlMjJjaGlsZHJlbiUyMiUzQSU1QiU3QiUyMnRleHQlMjIlM0ElMjIlRUElQjUlQUMlRUMlQjIlQjQlRUMlQTAlODElRUMlOUMlQkMlRUIlQTElOUMlMjAlRUQlOTIlODglRUMlQTclODglMjAlRUMlOTUlODQlRUQlODIlQTQlRUQlODUlOEQlRUQlOEElQjglRUIlOEElOTQlMjAlRUIlOEIlQTQlRUMlOUQlOEMlRUElQjMlQkMlMjAlRUElQjAlOTklRUMlOUQlODAlMjAlRUMlOTclQUQlRUQlOTUlQTAlRUMlOUQlODQlMjAlRUMlODglOTglRUQlOTYlODklRUQlOTUlQTAlMjAlRUMlODglOTglMjAlRUMlOUUlODglRUMlOEElQjUlRUIlOEIlODglRUIlOEIlQTQuJTIyJTdEJTVEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmxpc3RJdGVtJTIyJTJDJTIyb3JkZXJlZCUyMiUzQWZhbHNlJTJDJTIyY2hpbGRyZW4lMjIlM0ElNUIlN0IlMjJ0ZXh0JTIyJTNBJTIyQUklMjAlRUMlOEIlOUMlRUMlOEElQTQlRUQlODUlOUMlRUMlOUQlOTglMjAlRUQlOTIlODglRUMlQTclODglMjAlRUIlQUElQTklRUQlOTElOUMlMjAlRUMlODQlQTQlRUMlQTAlOTUlM0ElMjIlMkMlMjJib2xkJTIyJTNBdHJ1ZSU3RCUyQyU3QiUyMnRleHQlMjIlM0ElMjIlMjBJU08lMkZJRUMlMjAyNTAxMCVFQSVCMyVCQyUyMCVFQSVCMCU5OSVFQyU5RCU4MCUyMCVFRCU5MSU5QyVFQyVBNCU4MCVFQyU5RCU4NCUyMCVFQSVCOCVCMCVFQiVCMCU5OCVFQyU5QyVCQyVFQiVBMSU5QyUyMEFJJTIwJUVCJUFBJUE4JUVCJThEJUI4JUVDJTlEJTk4JTIwJUVDJTg0JUIxJUVCJThBJUE1JTJDJTIwJUVDJThCJUEwJUVCJUEyJUIwJUVDJTg0JUIxJTJDJTIwJUVCJUIzJUI0JUVDJTk1JTg4JUVDJTg0JUIxJTIwJUVCJTkzJUIxJTIwJUVEJTkyJTg4JUVDJUE3JTg4JTIwJUVCJUFBJUE5JUVEJTkxJTlDJUVCJUE1JUJDJTIwJUVDJUEwJTk1JUVDJTlEJTk4JUVEJTk1JTk4JUVBJUIzJUEwJTJDJTIwJUVDJTlEJUI0JUVCJUE1JUJDJTIwJUVDJUI4JUExJUVDJUEwJTk1JUVEJTk1JUEwJTIwJUVDJTg4JTk4JTIwJUVDJTlFJTg4JUVCJThBJTk0JTIwJUVDJUE3JTgwJUVEJTkxJTlDJUVCJUE1JUJDJTIwJUVDJTg4JTk4JUVCJUE2JUJEJUVEJTk1JUE5JUVCJThCJTg4JUVCJThCJUE0LiUyMiU3RCU1RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJsaXN0SXRlbSUyMiUyQyUyMm9yZGVyZWQlMjIlM0FmYWxzZSUyQyUyMmNoaWxkcmVuJTIyJTNBJTVCJTdCJTIydGV4dCUyMiUzQSUyMkFJJTIwJUVCJUFBJUE4JUVCJThEJUI4JUVDJTlEJTk4JTIwJUVEJThFJUI4JUVEJTk2JUE1JUVDJTg0JUIxJTIwJUVCJUIwJThGJTIwJUVBJUIzJUI1JUVDJUEwJTk1JUVDJTg0JUIxJTIwJUVBJUIyJTgwJUVDJUE2JTlEJTNBJTIyJTJDJTIyYm9sZCUyMiUzQXRydWUlN0QlMkMlN0IlMjJ0ZXh0JTIyJTNBJTIyJTIwQUklMjAlRUIlQUElQTglRUIlOEQlQjglRUMlOUQlQjQlMjAlRUQlOEElQjklRUMlQTAlOTUlMjAlRUIlOEQlQjAlRUMlOUQlQjQlRUQlODQlQjAlRUMlOTclOTAlMjAlRUQlOEUlQjglRUQlOTYlQTUlRUIlOTAlOTglRUMlOTYlQjQlMjAlRUMlOUUlODglRUElQjElQjAlRUIlODIlOTglMkMlMjAlRUQlOEElQjklRUMlQTAlOTUlMjAlRUElQjclQjglRUIlQTMlQjklRUMlOTclOTAlMjAlRUIlOEMlODAlRUQlOTUlQjQlMjAlRUIlQjYlODglRUElQjMlQjUlRUMlQTAlOTUlRUQlOTUlOUMlMjAlRUElQjIlQjAlRUElQjMlQkMlRUIlQTUlQkMlMjAlRUIlODIlQjQlRUIlODYlOTMlRUMlQTclODAlRUIlOEElOTQlMjAlRUMlOTUlOEElRUIlOEElOTQlRUMlQTclODAlMjAlRUIlOEYlODQlRUIlQTklOTQlRUMlOUQlQjglMjAlRUMlQTclODAlRUMlOEIlOUQlRUMlOUQlODQlMjAlRUQlOTklOUMlRUMlOUElQTklRUQlOTUlOTglRUMlOTclQUMlMjAlRUElQjIlODAlRUMlQTYlOUQlMjAlRUMlOEIlOUMlRUIlODIlOTglRUIlQTYlQUMlRUMlOTglQTQlRUIlQTUlQkMlMjAlRUMlODQlQTQlRUElQjMlODQlRUQlOTUlOTglRUElQjMlQTAlMjAlRUMlOEIlQTQlRUQlOTYlODklRUQlOTUlQTklRUIlOEIlODglRUIlOEIlQTQuJTIyJTdEJTVEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmxpc3RJdGVtJTIyJTJDJTIyb3JkZXJlZCUyMiUzQWZhbHNlJTJDJTIyY2hpbGRyZW4lMjIlM0ElNUIlN0IlMjJ0ZXh0JTIyJTNBJTIyQUklMjAlRUMlOEIlOUMlRUMlOEElQTQlRUQlODUlOUMlRUMlOUQlOTglMjAlRUMlODQlQTQlRUIlQUElODUlMjAlRUElQjAlODAlRUIlOEElQTUlRUMlODQlQjEoRXhwbGFpbmFiaWxpdHkpJTIwJUVEJThGJTg5JUVBJUIwJTgwJTNBJTIyJTJDJTIyYm9sZCUyMiUzQXRydWUlN0QlMkMlN0IlMjJ0ZXh0JTIyJTNBJTIyJTIwQUklMjAlRUIlQUElQTglRUIlOEQlQjglRUMlOUQlQjQlMjAlRUMlOTklOUMlMjAlRUQlOEElQjklRUMlQTAlOTUlMjAlRUElQjIlQjAlRUMlQTAlOTUlRUMlOUQlODQlMjAlRUIlODIlQjQlRUIlQTAlQjglRUIlOEElOTQlRUMlQTclODAlMkMlMjAlRUElQjclQjglMjAlRUElQjMlQkMlRUMlQTAlOTUlRUMlOUQlODQlMjAlRUMlOTYlQkMlRUIlQTclODglRUIlODIlOTglMjAlRUQlODglQUMlRUIlQUElODUlRUQlOTUlOTglRUElQjIlOEMlMjAlRUMlODQlQTQlRUIlQUElODUlRUQlOTUlQTAlMjAlRUMlODglOTglMjAlRUMlOUUlODglRUIlOEElOTQlRUMlQTclODAlMjAlRUQlOEYlODklRUElQjAlODAlRUQlOTUlOTglRUMlOTclQUMlMjAlRUMlOEIlQTAlRUIlQTIlQjAlRUMlODQlQjElRUMlOUQlODQlMjAlRUQlOTklOTUlRUIlQjMlQjQlRUQlOTUlQTklRUIlOEIlODglRUIlOEIlQTQuJTIyJTdEJTVEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmxpc3RJdGVtJTIyJTJDJTIyb3JkZXJlZCUyMiUzQWZhbHNlJTJDJTIyY2hpbGRyZW4lMjIlM0ElNUIlN0IlMjJ0ZXh0JTIyJTNBJTIyQUklMjAlRUElQjIlODAlRUMlQTYlOUQlMjAlRUQlOTQlODQlRUIlQTElOUMlRUMlODQlQjglRUMlOEElQTQlRUMlOUQlOTglMjAlRUQlOTElOUMlRUMlQTQlODAlRUQlOTklOTQlM0ElMjIlMkMlMjJib2xkJTIyJTNBdHJ1ZSU3RCUyQyU3QiUyMnRleHQlMjIlM0ElMjIlMjBLT0xBUyUyMCVFQyU5RCVCOCVFQyVBMCU5NSUyMCVFQyU5QSU5NCVFQSVCMSVCNCVFQSVCMyVCQyUyMCVFQSVCMCU5OSVFQyU5RCU4MCUyMCVFQSVCNSVBRCVFQyVBMCU5QyUyMCVFRCU5MSU5QyVFQyVBNCU4MCVFQyU5NyU5MCUyMCVFQiVBNyU5RSVFQyVCNiVCMCUyMEFJJTIwJUVCJUFBJUE4JUVCJThEJUI4JUVDJTlEJTk4JTIwJUVEJTk1JTk5JUVDJThBJUI1JTIwJUVCJThEJUIwJUVDJTlEJUI0JUVEJTg0JUIwJTIwJUVBJUI0JTgwJUVCJUE2JUFDJTJDJTIwJUVCJUFBJUE4JUVCJThEJUI4JTIwJUVBJUIwJTlDJUVCJUIwJTlDJTIwJUVEJTk0JTg0JUVCJUExJTlDJUVDJTg0JUI4JUVDJThBJUE0JTJDJTIwJUVBJUIyJTgwJUVDJUE2JTlEJTIwJUVCJUIwJUE5JUVCJUIyJTk1JTIwJUVCJTkzJUIxJUVDJTlEJTg0JTIwJUVEJTkxJTlDJUVDJUE0JTgwJUVEJTk5JTk0JUVEJTk1JTk4JUVBJUIzJUEwJTIwJUVCJUFDJUI4JUVDJTg0JTlDJUVEJTk5JTk0JUVEJTk1JUE5JUVCJThCJTg4JUVCJThCJUE0LiUyMiU3RCU1RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJsaXN0SXRlbSUyMiUyQyUyMm9yZGVyZWQlMjIlM0FmYWxzZSUyQyUyMmNoaWxkcmVuJTIyJTNBJTVCJTdCJTIydGV4dCUyMiUzQSUyMkFJJTIwJUVBJUI4JUIwJUVCJUIwJTk4JTIwJUVEJTg1JThDJUVDJThBJUE0JUVEJThBJUI4JTIwJUVCJThGJTg0JUVBJUI1JUFDJUVDJTlEJTk4JTIwJUVDJThCJUEwJUVCJUEyJUIwJUVDJTg0JUIxJTIwJUVEJTk5JTk1JUVCJUIzJUI0JTNBJTIyJTJDJTIyYm9sZCUyMiUzQXRydWUlN0QlMkMlN0IlMjJ0ZXh0JTIyJTNBJTIyJTIwQUklRUElQjAlODAlMjAlRUMlODMlOUQlRUMlODQlQjElRUQlOTUlOUMlMjAlRUQlODUlOEMlRUMlOEElQTQlRUQlOEElQjglMjAlRUMlQkMlODAlRUMlOUQlQjQlRUMlOEElQTQlRUIlODIlOTglMjAlRUQlODUlOEMlRUMlOEElQTQlRUQlOEElQjglMjAlRUMlQkQlOTQlRUIlOTMlOUMlRUMlOUQlOTglMjAlRUQlOTIlODglRUMlQTclODglRUMlOUQlODQlMjAlRUQlOEYlODklRUElQjAlODAlRUQlOTUlOTglRUElQjMlQTAlMkMlMjBBSSUyMCVFQSVCOCVCMCVFQiVCMCU5OCUyMCVFRCU4NSU4QyVFQyU4QSVBNCVFRCU4QSVCOCUyMCVFQiU4RiU4NCVFQSVCNSVBQyVFQSVCMCU4MCUyMCVFRCU5MSU5QyVFQyVBNCU4MCVFRCU5OSU5NCVFQiU5MCU5QyUyMCVFQSVCMiU4MCVFQyVBNiU5RCUyMCVFQyVBMCU4OCVFQyVCMCVBOCVFQiVBNSVCQyUyMCVFQiU5NCVCMCVFQiVBNSVCNCVFQiU4RiU4NCVFQiVBMSU5RCUyMCVFQSVCNCU4MCVFQiVBNiVBQyVFRCU5NSVBOSVFQiU4QiU4OCVFQiU4QiVBNC4lMjIlN0QlNUQlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyaGVhZGluZyUyMiUyQyUyMmxldmVsJTIyJTNBMiUyQyUyMmNoaWxkcmVuJTIyJTNBJTVCJTdCJTIydGV4dCUyMiUzQSUyMiVFRCU5MiU4OCVFQyVBNyU4OCUyMCVFQyU5NSU4NCVFRCU4MiVBNCVFRCU4NSU4RCVFRCU4QSVCOCVFQyU5RCU5OCUyMCVFQiU4RiU4NSVFQiVCMyVCNCVFQyVBMCU4MSVFQyU5RCVCOCUyMCVFQyVBMCU4NCVFQiVBQyVCOCVFQyU4NCVCMSUzQSUyMCVFRCU5MSU5QyVFQyVBNCU4MCVFQyU5RCU4NCUyMCVFRCU4NiVCNSVFRCU5NSVCNCUyMEFJJTIwJUVDJThCJTlDJUVCJThDJTgwJUVCJUE1JUJDJTIwJUVDJTlEJUI0JUVCJTgxJThDJUVCJThCJUE0JTIyJTdEJTVEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMnAlMjIlMkMlMjJjaGlsZHJlbiUyMiUzQSU1QiU3QiUyMnRleHQlMjIlM0ElMjJBSSUyMCVFQyU4QiU5QyVFQiU4QyU4MCVFQyU5RCU5OCUyMCVFRCU5MiU4OCVFQyVBNyU4OCUyMCVFQyU5NSU4NCVFRCU4MiVBNCVFRCU4NSU4RCVFRCU4QSVCOCVFQiU4QSU5NCUyMCVFQSVCOCVCMCVFQyU4OCVBMCVFQyVBMCU4MSVFQyU5RCVCOCUyMCVFQyVBMCU4NCVFQiVBQyVCOCVFQyU4NCVCMSVFQiVCRiU5MCVFQiVBNyU4QyUyMCVFQyU5NSU4NCVFQiU4QiU4OCVFQiU5RCVCQyUyQyUyMCVFQSVCNSVBRCVFQSVCMCU4MCVFQyVBMCU4MSVDMiVCNyVFQSVCNSVBRCVFQyVBMCU5QyVFQyVBMCU4MSUyMCVFRCU5MiU4OCVFQyVBNyU4OCUyMCVFRCU5MSU5QyVFQyVBNCU4MCVFQyU5NyU5MCUyMCVFQiU4QyU4MCVFRCU5NSU5QyUyMCVFQSVCOSU4QSVFQyU5RCVCNCUyMCVFQyU5RSU4OCVFQiU4QSU5NCUyMCVFQyU5RCVCNCVFRCU5NSVCNCVFQiVBNSVCQyUyMCVFQiVCMCU5NCVFRCU4MyU5NSVFQyU5QyVCQyVFQiVBMSU5QyUyMEFJJTIwJUVDJThCJTlDJUVDJThBJUE0JUVEJTg1JTlDJUVDJTlEJTk4JTIwJUVDJThCJUEwJUVCJUEyJUIwJUVDJTg0JUIxJUVDJTlEJTg0JTIwJUVEJTk5JTk1JUVCJUIzJUI0JUVEJTk1JTk4JUVCJThBJTk0JTIwJUVCJThEJUIwJTIwJUVEJTk1JUI1JUVDJThCJUFDJUVDJUEwJTgxJUVDJTlEJUI4JTIwJUVDJTk3JUFEJUVEJTk1JUEwJUVDJTlEJTg0JTIwJUVDJTg4JTk4JUVEJTk2JTg5JUVEJTk1JUE5JUVCJThCJTg4JUVCJThCJUE0LiUyMCVFQyU5QSVCMCVFQiVBNiVBQyVFQiU4QSU5NCUyMEFJJUVDJTlEJTk4JTIwJUVDJTlFJUEwJUVDJTlFJUFDJUVCJUEwJUE1JUVDJTlEJTg0JTIwJUVDJUI1JTlDJUVCJThDJTgwJUVEJTk1JTlDJTIwJUVEJTk5JTlDJUVDJTlBJUE5JUVEJTk1JTk4JUVCJUE5JUI0JUVDJTg0JTlDJUVCJThGJTg0JTJDJTIwJUVBJUI3JUI4JTIwJUVDJTlDJTg0JUVEJTk3JTk4JUVDJTlEJTg0JTIwJUVDJUI1JTlDJUVDJTg2JThDJUVEJTk5JTk0JUVEJTk1JTk4JUVBJUIzJUEwJTJDJTIwJUVBJUI2JTgxJUVBJUI3JUI5JUVDJUEwJTgxJUVDJTlDJUJDJUVCJUExJTlDJUVCJThBJTk0JTIwJUVDJTgyJUFDJUVDJTlBJUE5JUVDJTlFJTkwJUVDJTk3JTkwJUVBJUIyJThDJTIwJUVDJTk1JTg4JUVDJUEwJTg0JUVEJTk1JTk4JUVBJUIzJUEwJTIwJUVDJThCJUEwJUVCJUEyJUIwJUVEJTk1JUEwJTIwJUVDJTg4JTk4JTIwJUVDJTlFJTg4JUVCJThBJTk0JTIwQUklMjAlRUElQjglQjAlRUIlQjAlOTglMjAlRUMlODQlOUMlRUIlQjklODQlRUMlOEElQTQlRUIlQTUlQkMlMjAlRUMlQTAlOUMlRUElQjMlQjUlRUQlOTUlQjQlRUMlOTUlQkMlMjAlRUQlOTUlQTklRUIlOEIlODglRUIlOEIlQTQuJTIwJUVEJTkxJTlDJUVDJUE0JTgwJUVDJTlEJTgwJTIwJUVDJTlEJUI0JUVCJTlGJUFDJUVEJTk1JTlDJTIwJUVCJUFBJUE5JUVEJTkxJTlDJUVCJUE1JUJDJTIwJUVCJThCJUFDJUVDJTg0JUIxJUVEJTk1JTk4JUVBJUI4JUIwJTIwJUVDJTlDJTg0JUVEJTk1JTlDJTIwJUVBJUIwJTk1JUVCJUEwJUE1JUVEJTk1JTlDJTIwJUVDJUE3JTgwJUVDJUI5JUE4JUVDJTlEJUI0JUVDJTlFJTkwJTIwJUVCJThGJTg0JUVBJUI1JUFDJUVDJTlFJTg1JUVCJThCJTg4JUVCJThCJUE0LiUyMiU3RCU1RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJwJTIyJTJDJTIyY2hpbGRyZW4lMjIlM0ElNUIlN0IlMjJ0ZXh0JTIyJTNBJTIyS09MQVMlMjAlRUMlOUQlQjglRUMlQTAlOTUlMjAlRUMlOUElOTQlRUElQjElQjQlRUElQjMlQkMlMjBJU08lMkZJRUMlMjAyNTAxMCVFQSVCMyVCQyUyMCVFQSVCMCU5OSVFQyU5RCU4MCUyMCVFRCU5MiU4OCVFQyVBNyU4OCUyMCVFRCU5MSU5QyVFQyVBNCU4MCVFQyU5RCU4NCUyMEFJJTIwJUVBJUIyJTgwJUVDJUE2JTlEJTIwJUVDJUIyJUI0JUVBJUIzJTg0JUVDJTk3JTkwJTIwJUVDJTk3JUIwJUVBJUIyJUIwJUVEJTk1JTk4JUVCJThBJTk0JTIwJUVBJUIyJTgzJUVDJTlEJTgwJTIwJUVCJThCJUE4JUVDJTg4JTlDJUVEJTlFJTg4JTIwJUVBJUI3JTlDJUVDJUEwJTlDJUVCJUE1JUJDJTIwJUVDJUE0JTgwJUVDJTg4JTk4JUVEJTk1JTk4JUVCJThBJTk0JTIwJUVBJUIyJTgzJUVDJTlEJTg0JTIwJUVCJTg0JTk4JUVDJTk2JUI0JTJDJTIwJUVDJTg2JThDJUVEJTk0JTg0JUVEJThBJUI4JUVDJTlCJUE4JUVDJTk2JUI0JTIwJUVEJTkyJTg4JUVDJUE3JTg4JUVDJTk3JTkwJTIwJUVCJThDJTgwJUVEJTk1JTlDJTIwJUVDJTlBJUIwJUVCJUE2JUFDJUVDJTlEJTk4JTIwJUVDJThCJTlDJUVDJTk1JUJDJUVCJUE1JUJDJTIwJUVCJTg0JTkzJUVEJTlFJTg4JUVBJUIzJUEwJTJDJTIwQUklMjAlRUMlOEIlOUMlRUIlOEMlODAlRUMlOTclOTAlMjAlRUQlOTUlODQlRUMlOUElOTQlRUQlOTUlOUMlMjAlRUMlODMlODglRUIlQTElOUMlRUMlOUElQjQlMjAlRUMlQTAlODQlRUIlQUMlQjglRUMlODQlQjElRUMlOUQlODQlMjAlRUElQjUlQUMlRUMlQjYlOTUlRUQlOTUlOTglRUIlOEElOTQlMjAlRUElQjMlQkMlRUMlQTAlOTUlRUMlOUUlODUlRUIlOEIlODglRUIlOEIlQTQuJTIwJUVEJTkyJTg4JUVDJUE3JTg4JTIwJUVDJTk1JTg0JUVEJTgyJUE0JUVEJTg1JThEJUVEJThBJUI4JUVCJUExJTlDJUVDJTg0JTlDJTIwJUVDJTlBJUIwJUVCJUE2JUFDJUVCJThBJTk0JTIwJUVDJTlEJUI0JUVCJTlGJUFDJUVEJTk1JTlDJTIwJUVEJTkxJTlDJUVDJUE0JTgwJUVDJTlEJTg0JTIwJUVDJUEwJTgxJUVBJUI3JUI5JUVDJUEwJTgxJUVDJTlDJUJDJUVCJUExJTlDJTIwJUVEJTk5JTlDJUVDJTlBJUE5JUVEJTk1JTk4JUVDJTk3JUFDJTIwQUklMjAlRUElQjglQjAlRUMlODglQTAlRUMlOUQlOTglMjAlRUElQjElQjQlRUMlQTAlODQlRUQlOTUlOUMlMjAlRUIlQjAlOUMlRUMlQTAlODQlRUMlOUQlODQlMjAlRUMlOUQlQjQlRUIlODElOEMlRUElQjMlQTAlMkMlMjAlRUMlODYlOEMlRUQlOTQlODQlRUQlOEElQjglRUMlOUIlQTglRUMlOTYlQjQlMjAlRUQlOTIlODglRUMlQTclODglRUMlOUQlOTglMjAlRUMlODMlODglRUIlQTElOUMlRUMlOUElQjQlMjAlRUMlQTclODAlRUQlOEYlODklRUMlOUQlODQlMjAlRUMlOTclQjQlRUMlOTYlQjQlRUElQjAlODAlRUIlOEElOTQlMjAlRUMlODQlQTAlRUElQjUlQUMlRUMlOUUlOTAlRUElQjAlODAlMjAlRUIlOTAlOTglRUMlOTYlQjQlRUMlOTUlQkMlMjAlRUQlOTUlQTAlMjAlRUElQjIlODMlRUMlOUUlODUlRUIlOEIlODglRUIlOEIlQTQuJTIyJTdEJTVEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmRpdmlkZXIlMjIlMkMlMjJjaGlsZHJlbiUyMiUzQSU1QiU3QiUyMnRleHQlMjIlM0ElMjIlMjIlN0QlNUQlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyaGVhZGluZyUyMiUyQyUyMmxldmVsJTIyJTNBMyUyQyUyMmNoaWxkcmVuJTIyJTNBJTVCJTdCJTIydGV4dCUyMiUzQSUyMiVFQyVCMCVCOCVFQSVCMyVBMCUyMCVFQyU5RSU5MCVFQiVBMyU4QyUyMiU3RCU1RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJkZWZpbml0aW9uJTIyJTJDJTIyZGVmaW5pdGlvbklkJTIyJTNBJTIyMSUyMiUyQyUyMnVybCUyMiUzQSUyMmh0dHBzJTNBJTJGJTJGd3d3LmtuYWIuZ28ua3IlMkZlbiUyRkFjY3JlZGl0YXRpb25fUHJvY2Vzcy5kbyUyMiUyQyUyMnRpdGxlJTIyJTNBJTIyS29yZWElMjBMYWJvcmF0b3J5JTIwQWNjcmVkaXRhdGlvbiUyMFNjaGVtZSUyMChLT0xBUykuJTIwJTVDJTIyQWNjcmVkaXRhdGlvbiUyMFByb2Nlc3MuJTVDJTIyJTIyJTJDJTIyaW5kZXglMjIlM0ExJTJDJTIyY2hpbGRyZW4lMjIlM0ElNUIlN0IlMjJ0ZXh0JTIyJTNBJTIyS29yZWElMjBMYWJvcmF0b3J5JTIwQWNjcmVkaXRhdGlvbiUyMFNjaGVtZSUyMChLT0xBUykuJTIwJTVDJTIyQWNjcmVkaXRhdGlvbiUyMFByb2Nlc3MuJTVDJTIyJTIyJTdEJTVEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmRlZmluaXRpb24lMjIlMkMlMjJkZWZpbml0aW9uSWQlMjIlM0ElMjIyJTIyJTJDJTIydXJsJTIyJTNBJTIyaHR0cHMlM0ElMkYlMkZrYWl0Lm9yLmtyJTJGZW5nJTJGdXNlciUyRk1haW5NZW51TGlzdC5kbyUzRmNhdGVTZXElM0Q5JTI2bWVudVNlcSUzRDE1NiUyMiUyQyUyMnRpdGxlJTIyJTNBJTIyS0FJVC4lMjAlNUMlMjJLT0xBUyUyMEFjY3JlZGl0ZWQlMjBUZXN0aW5nJTIwTGFib3JhdG9yeSUyMGZvciUyMFNvZnR3YXJlLiU1QyUyMiUyMiUyQyUyMmluZGV4JTIyJTNBMiUyQyUyMmNoaWxkcmVuJTIyJTNBJTVCJTdCJTIydGV4dCUyMiUzQSUyMktBSVQuJTIwJTVDJTIyS09MQVMlMjBBY2NyZWRpdGVkJTIwVGVzdGluZyUyMExhYm9yYXRvcnklMjBmb3IlMjBTb2Z0d2FyZS4lNUMlMjIlMjIlN0QlNUQlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyZGVmaW5pdGlvbiUyMiUyQyUyMmRlZmluaXRpb25JZCUyMiUzQSUyMjMlMjIlMkMlMjJ1cmwlMjIlM0ElMjJodHRwcyUzQSUyRiUyRnd3dy5pc28ub3JnJTJGc3RhbmRhcmQlMkYzNTczMy5odG1sJTIyJTJDJTIydGl0bGUlMjIlM0ElMjJJU08uJTIwJTVDJTIySVNPJTJGSUVDJTIwMjUwMTAlM0EyMDExJTIwLSUyMFN5c3RlbXMlMjBhbmQlMjBzb2Z0d2FyZSUyMGVuZ2luZWVyaW5nLiU1QyUyMiUyMiUyQyUyMmluZGV4JTIyJTNBMyUyQyUyMmNoaWxkcmVuJTIyJTNBJTVCJTdCJTIydGV4dCUyMiUzQSUyMklTTy4lMjAlNUMlMjJJU08lMkZJRUMlMjAyNTAxMCUzQTIwMTElMjAtJTIwU3lzdGVtcyUyMGFuZCUyMHNvZnR3YXJlJTIwZW5naW5lZXJpbmcuJTVDJTIyJTIyJTdEJTVEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMnAlMjIlMkMlMjJjaGlsZHJlbiUyMiUzQSU1QiU3QiUyMnRleHQlMjIlM0ElMjIlRUQlODMlOUMlRUElQjclQjglM0ElMjBLT0xBUyUyQyUyMElTTyUyRklFQyUyMDI1MDEwJTJDJTIwJUVDJTg2JThDJUVEJTk0JTg0JUVEJThBJUI4JUVDJTlCJUE4JUVDJTk2JUI0JTIwJUVEJTkyJTg4JUVDJUE3JTg4JTIwJUVEJTkxJTlDJUVDJUE0JTgwJTJDJTIwQUklMjAlRUElQjIlODAlRUMlQTYlOUQlMkMlMjAlRUIlOEYlODQlRUIlQTklOTQlRUMlOUQlQjglMjAlRUMlQTAlODQlRUIlQUMlQjglRUMlODQlQjElMkMlMjAlRUQlOTIlODglRUMlQTclODglMjAlRUMlOTUlODQlRUQlODIlQTQlRUQlODUlOEQlRUQlOEElQjglMkMlMjAlRUIlQjklODQlRUElQjglQjAlRUIlOEElQTUlMjAlRUQlODUlOEMlRUMlOEElQTQlRUQlOEElQjglMkMlMjBBSSUyMCVFQyU4QiVBMCVFQiVBMiVCMCVFQyU4NCVCMSUyQyUyMCVFRCU5MiU4OCVFQyVBNyU4OCUyMCVFQiVCMyVCNCVFQyVBNiU5RCUyQyUyMCVFRCU5MSU5QyVFQyVBNCU4MCVFRCU5OSU5NCUyMiU3RCU1RCU3RCU1RA==&quot;&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;</description>
      <category>11. 자료실&amp;middot;기타/테스트 관련 강좌</category>
      <category>AI 검증</category>
      <category>ai 신뢰성</category>
      <category>ISO/IEC 25010</category>
      <category>KOLAS</category>
      <category>도메인 전문성</category>
      <category>비기능 테스트</category>
      <category>소프트웨어 품질 표준</category>
      <category>표준화</category>
      <category>품질 보증</category>
      <category>품질 아키텍트</category>
      <author>testmanager</author>
      <guid isPermaLink="true">https://testmanager.tistory.com/649</guid>
      <comments>https://testmanager.tistory.com/649#entry649comment</comments>
      <pubDate>Tue, 7 Jul 2026 07:27:33 +0900</pubDate>
    </item>
    <item>
      <title>25화. 테스트 가능성을 설계에 심다 &amp;mdash; Testability를 기획&amp;middot;개발 단계로 끌어올리기.</title>
      <link>https://testmanager.tistory.com/646</link>
      <description>&lt;p data-ke-size=&quot;size14&quot;&gt;AI&amp;nbsp;시대의&amp;nbsp;품질&amp;nbsp;아키텍트&amp;nbsp;:&amp;nbsp;테스터에서&amp;nbsp;시스템&amp;nbsp;품질&amp;nbsp;설계자로&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;0.&amp;nbsp;오리엔테이션&lt;br /&gt;0화.&amp;nbsp;30분&amp;nbsp;데모와&amp;nbsp;프로덕션&amp;nbsp;사이의&amp;nbsp;거리&amp;nbsp;&amp;mdash;&amp;nbsp;현실&amp;nbsp;인식과&amp;nbsp;방향&amp;nbsp;제시&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;1.&amp;nbsp;기초&amp;nbsp;체력&lt;br /&gt;AI가&amp;nbsp;짠&amp;nbsp;코드를&amp;nbsp;읽고&amp;nbsp;검증할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;눈과&amp;nbsp;웹&amp;middot;API&amp;nbsp;원리&amp;nbsp;다지기&lt;br /&gt;1화.&amp;nbsp;AI가&amp;nbsp;짠&amp;nbsp;코드를&amp;nbsp;읽는&amp;nbsp;눈&amp;nbsp;&amp;mdash;&amp;nbsp;Python&amp;nbsp;또는&amp;nbsp;JS/TS&amp;nbsp;중&amp;nbsp;하나를&amp;nbsp;코드&amp;nbsp;리뷰&amp;nbsp;가능한&amp;nbsp;수준까지.&amp;nbsp;실습:&amp;nbsp;AI가&amp;nbsp;생성한&amp;nbsp;테스트&amp;nbsp;코드의&amp;nbsp;버그&amp;nbsp;3개&amp;nbsp;찾기.&lt;br /&gt;2화.&amp;nbsp;변경은&amp;nbsp;diff에서&amp;nbsp;시작된다&amp;nbsp;&amp;mdash;&amp;nbsp;Git과&amp;nbsp;PR&amp;nbsp;기반&amp;nbsp;협업,&amp;nbsp;변경&amp;nbsp;기반&amp;nbsp;테스트의&amp;nbsp;첫&amp;nbsp;단추.&amp;nbsp;실습:&amp;nbsp;PR&amp;nbsp;diff만&amp;nbsp;보고&amp;nbsp;영향&amp;nbsp;범위&amp;nbsp;추정해&amp;nbsp;보기.&lt;br /&gt;3화.&amp;nbsp;웹은&amp;nbsp;어떻게&amp;nbsp;움직이는가&amp;nbsp;&amp;mdash;&amp;nbsp;HTTP,&amp;nbsp;쿠키&amp;middot;세션의&amp;nbsp;원리.&amp;nbsp;실습:&amp;nbsp;개발자도구로&amp;nbsp;요청&amp;middot;응답&amp;nbsp;해부.&lt;br /&gt;4화.&amp;nbsp;인증의&amp;nbsp;지도&amp;nbsp;&amp;mdash;&amp;nbsp;OAuth&amp;middot;JWT&amp;middot;RBAC를&amp;nbsp;테스터&amp;nbsp;시선으로.&amp;nbsp;실습:&amp;nbsp;토큰&amp;nbsp;만료&amp;middot;권한&amp;nbsp;우회&amp;nbsp;시나리오&amp;nbsp;설계.&lt;br /&gt;5화.&amp;nbsp;API의&amp;nbsp;두&amp;nbsp;얼굴&amp;nbsp;&amp;mdash;&amp;nbsp;REST와&amp;nbsp;GraphQL의&amp;nbsp;차이와&amp;nbsp;테스트&amp;nbsp;관점.&amp;nbsp;실습:&amp;nbsp;같은&amp;nbsp;기능을&amp;nbsp;두&amp;nbsp;방식으로&amp;nbsp;호출&amp;middot;검증.&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;2.&amp;nbsp;테스트&amp;nbsp;자동화&lt;br /&gt;Playwright를&amp;nbsp;주력으로&amp;nbsp;깊이&amp;nbsp;익히기&lt;br /&gt;6화.&amp;nbsp;왜&amp;nbsp;Playwright인가&amp;nbsp;&amp;mdash;&amp;nbsp;도구&amp;nbsp;선택의&amp;nbsp;근거와&amp;nbsp;첫&amp;nbsp;테스트&amp;nbsp;작성.&lt;br /&gt;7화.&amp;nbsp;플래키의&amp;nbsp;근원,&amp;nbsp;셀렉터와&amp;nbsp;대기&amp;nbsp;&amp;mdash;&amp;nbsp;안정적&amp;nbsp;셀렉터와&amp;nbsp;비동기&amp;nbsp;대기&amp;nbsp;전략.&lt;br /&gt;8화.&amp;nbsp;실패를&amp;nbsp;영상으로&amp;nbsp;읽는다&amp;nbsp;&amp;mdash;&amp;nbsp;Trace&amp;nbsp;Viewer로&amp;nbsp;원인&amp;nbsp;추적.&lt;br /&gt;9화.&amp;nbsp;계약을&amp;nbsp;테스트하라&amp;nbsp;&amp;mdash;&amp;nbsp;API&amp;middot;계약&amp;nbsp;테스트(OpenAPI/GraphQL&amp;nbsp;schema&amp;nbsp;기반).&lt;br /&gt;10화.&amp;nbsp;눈에&amp;nbsp;보이는&amp;nbsp;회귀,&amp;nbsp;모두에게&amp;nbsp;열린&amp;nbsp;화면&amp;nbsp;&amp;mdash;&amp;nbsp;시각적&amp;nbsp;회귀와&amp;nbsp;접근성&amp;nbsp;자동&amp;nbsp;검사.&amp;nbsp;(Selenium&amp;middot;Appium은&amp;nbsp;레거시&amp;middot;모바일&amp;nbsp;대응용으로&amp;nbsp;짧게&amp;nbsp;짚기)&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;3.&amp;nbsp;AI&amp;nbsp;활용&amp;middot;MCP&amp;nbsp;(연재&amp;nbsp;핵심)&lt;br /&gt;AI를&amp;nbsp;단순&amp;nbsp;도구가&amp;nbsp;아닌&amp;nbsp;차별화&amp;nbsp;무기로&amp;nbsp;만드는&amp;nbsp;구간&lt;br /&gt;11화.&amp;nbsp;프롬프트로&amp;nbsp;테스트를&amp;nbsp;설계하기&amp;nbsp;&amp;mdash;&amp;nbsp;명세&amp;middot;PR을&amp;nbsp;입력해&amp;nbsp;케이스를&amp;nbsp;생성&amp;middot;우선순위화하는&amp;nbsp;패턴&amp;nbsp;정립.&lt;br /&gt;12화.&amp;nbsp;에이전트는&amp;nbsp;무엇을&amp;nbsp;대신하는가&amp;nbsp;&amp;mdash;&amp;nbsp;에이전트형&amp;nbsp;테스트의&amp;nbsp;개념과&amp;nbsp;한계(수동&amp;nbsp;노력&amp;nbsp;최대&amp;nbsp;45%&amp;nbsp;절감&amp;nbsp;추정).&lt;br /&gt;13화.&amp;nbsp;스스로&amp;nbsp;고치는&amp;nbsp;테스트,&amp;nbsp;그리고&amp;nbsp;그&amp;nbsp;한계&amp;nbsp;&amp;mdash;&amp;nbsp;자가&amp;nbsp;치유와&amp;nbsp;AI&amp;nbsp;Healer.&amp;nbsp;셀렉터&amp;middot;DOM&amp;nbsp;변경에서&amp;nbsp;75%+&amp;nbsp;복구,&amp;nbsp;그러나&amp;nbsp;복잡한&amp;nbsp;로직&amp;nbsp;버그는&amp;nbsp;사람&amp;nbsp;몫.&lt;br /&gt;14화.&amp;nbsp;npx&amp;nbsp;playwright&amp;nbsp;init-agents&amp;nbsp;&amp;mdash;&amp;nbsp;첫&amp;nbsp;MCP&amp;nbsp;실습&amp;nbsp;&amp;mdash;&amp;nbsp;접근성&amp;nbsp;트리&amp;nbsp;기반&amp;nbsp;Playwright&amp;nbsp;MCP&amp;nbsp;시작하기.&lt;br /&gt;15화.&amp;nbsp;MCP로&amp;nbsp;통합을&amp;nbsp;검증하다&amp;nbsp;&amp;mdash;&amp;nbsp;MCP&amp;nbsp;기반&amp;nbsp;통합&amp;nbsp;검증&amp;nbsp;실습.&lt;br /&gt;16화.&amp;nbsp;환각을&amp;nbsp;거르는&amp;nbsp;사람&amp;nbsp;&amp;mdash;&amp;nbsp;AI&amp;nbsp;결과의&amp;nbsp;환각&amp;middot;오탐을&amp;nbsp;걸러내는&amp;nbsp;인간&amp;nbsp;검증&amp;nbsp;체계&amp;nbsp;설계.&amp;nbsp;직무&amp;nbsp;특성상&amp;nbsp;가장&amp;nbsp;큰&amp;nbsp;강점이&amp;nbsp;되는&amp;nbsp;지점.&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;4.&amp;nbsp;파이프라인&amp;middot;운영&lt;br /&gt;개인기를&amp;nbsp;조직의&amp;nbsp;신뢰&amp;nbsp;시스템으로&amp;nbsp;연결&lt;br /&gt;17화.&amp;nbsp;문&amp;nbsp;앞의&amp;nbsp;품질&amp;nbsp;게이트&amp;nbsp;&amp;mdash;&amp;nbsp;CI/CD&amp;nbsp;품질&amp;nbsp;게이트&amp;nbsp;구성.&lt;br /&gt;18화.&amp;nbsp;플래키를&amp;nbsp;격리하라&amp;nbsp;&amp;mdash;&amp;nbsp;불안정&amp;nbsp;테스트&amp;nbsp;격리와&amp;nbsp;실패&amp;nbsp;원인&amp;nbsp;자동&amp;nbsp;분류.&lt;br /&gt;19화.&amp;nbsp;관측성을&amp;nbsp;테스트로&amp;nbsp;환원하기&amp;nbsp;&amp;mdash;&amp;nbsp;로그&amp;middot;메트릭&amp;middot;트레이스(OpenTelemetry)를&amp;nbsp;테스트&amp;nbsp;사고로&amp;nbsp;끌어오기.&lt;br /&gt;20화.&amp;nbsp;진짜&amp;nbsp;같은&amp;nbsp;가짜&amp;nbsp;데이터&amp;nbsp;&amp;mdash;&amp;nbsp;테스트&amp;nbsp;데이터&amp;nbsp;합성과&amp;nbsp;마스킹.&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;5.&amp;nbsp;비기능&amp;nbsp;영역&lt;br /&gt;눈에&amp;nbsp;보이지&amp;nbsp;않는&amp;nbsp;품질&amp;nbsp;지키기&lt;br /&gt;21화.&amp;nbsp;무게를&amp;nbsp;견디는가&amp;nbsp;&amp;mdash;&amp;nbsp;k6/JMeter로&amp;nbsp;부하&amp;middot;스트레스&amp;nbsp;테스트.&lt;br /&gt;22화.&amp;nbsp;손안의&amp;nbsp;성능&amp;nbsp;&amp;mdash;&amp;nbsp;모바일&amp;nbsp;성능&amp;nbsp;지표(FPS&amp;middot;시작속도&amp;middot;메모리&amp;middot;배터리).&lt;br /&gt;23화.&amp;nbsp;공격자처럼&amp;nbsp;생각하기&amp;nbsp;&amp;mdash;&amp;nbsp;OWASP&amp;nbsp;Top&amp;nbsp;10으로&amp;nbsp;본&amp;nbsp;보안&amp;nbsp;기본기.&lt;br /&gt;24화.&amp;nbsp;코드를&amp;nbsp;스캔하는&amp;nbsp;도구들&amp;nbsp;&amp;mdash;&amp;nbsp;SAST&amp;middot;DAST&amp;middot;SCA(SonarQube&amp;middot;OWASP&amp;nbsp;ZAP&amp;middot;Snyk)&amp;nbsp;실전.&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;6.&amp;nbsp;전략&amp;middot;리더십&amp;middot;표준&lt;br /&gt;아키텍트로서의&amp;nbsp;설계&amp;middot;운영&amp;middot;리더십&lt;br /&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;25화.&amp;nbsp;테스트&amp;nbsp;가능성을&amp;nbsp;설계에&amp;nbsp;심다&amp;nbsp;&amp;mdash;&amp;nbsp;Testability를&amp;nbsp;기획&amp;middot;개발&amp;nbsp;단계로&amp;nbsp;끌어올리기.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;26화.&amp;nbsp;공통&amp;nbsp;언어로서의&amp;nbsp;BDD&amp;nbsp;&amp;mdash;&amp;nbsp;Gherkin으로&amp;nbsp;기획&amp;middot;개발&amp;middot;QA를&amp;nbsp;한&amp;nbsp;문장에&amp;nbsp;모으기.&lt;br /&gt;27화.&amp;nbsp;AI를&amp;nbsp;지휘하는&amp;nbsp;운영&amp;nbsp;모델&amp;nbsp;&amp;mdash;&amp;nbsp;20명&amp;nbsp;규모&amp;nbsp;팀을&amp;nbsp;위한&amp;nbsp;AI&amp;nbsp;오케스트레이션&amp;nbsp;가이드라인과&amp;nbsp;코칭.&lt;br /&gt;28화.&amp;nbsp;표준과&amp;nbsp;AI를&amp;nbsp;잇다&amp;nbsp;&amp;mdash;&amp;nbsp;KOLAS&amp;nbsp;인정&amp;nbsp;요건&amp;middot;품질&amp;nbsp;표준을&amp;nbsp;AI&amp;nbsp;검증&amp;nbsp;체계로&amp;nbsp;연결하는&amp;nbsp;도메인&amp;nbsp;전문성.&lt;br /&gt;29화.&amp;nbsp;데모를&amp;nbsp;프로덕션으로&amp;nbsp;옮기는&amp;nbsp;비용&amp;nbsp;&amp;mdash;&amp;nbsp;30분&amp;nbsp;데모와&amp;nbsp;실전의&amp;nbsp;거리,&amp;nbsp;사람의&amp;nbsp;감독이&amp;nbsp;끝까지&amp;nbsp;필요한&amp;nbsp;이유를&amp;nbsp;균형&amp;nbsp;있게&amp;nbsp;정리.&lt;br /&gt;30화.&amp;nbsp;테스터에서&amp;nbsp;품질&amp;nbsp;아키텍트로&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;div&gt;
&lt;h1 data-slug=&quot;%ED%85%8C%EC%8A%A4%ED%8A%B8%EA%B0%80%EB%8A%A5%EC%84%B1%EC%9D%84%EC%84%A4%EA%B3%84%EC%97%90%EC%8B%AC%EB%8B%A4%3A%EC%A0%90%EA%B2%80%EA%B5%AC%EA%B0%80%EC%9E%88%EB%8A%94%EA%B1%B4%EB%AC%BC%EC%B2%98%EB%9F%BC%2C%EB%A0%88%EA%B3%A0%EC%B2%98%EB%9F%BC0&quot; data-anchor=&quot;%ED%85%8C%EC%8A%A4%ED%8A%B8%EA%B0%80%EB%8A%A5%EC%84%B1%EC%9D%84%EC%84%A4%EA%B3%84%EC%97%90%EC%8B%AC%EB%8B%A4%3A%EC%A0%90%EA%B2%80%EA%B5%AC%EA%B0%80%EC%9E%88%EB%8A%94%EA%B1%B4%EB%AC%BC%EC%B2%98%EB%9F%BC%2C%EB%A0%88%EA%B3%A0%EC%B2%98%EB%9F%BC&quot; data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;테스트 가능성을 설계에 심다: 점검구가 있는 건물처럼, 레고처럼&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;우리는 지난 연재들을 통해 소프트웨어의 기능이 잘 작동하는지, 성능은 어떤지, 보안에는 문제가 없는지 등 다양한 관점에서 품질을 측정하고 개선하는 방법을 알아보았습니다. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;그런데 아무리 훌륭한 테스트 기술과 도구를 가지고 있어도, 정작 테스트하기 어려운 구조로 만들어진 소프트웨어라면 어떨까요? &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;마치 점검구가 없는 건물에서 배관 문제를 찾아내거나, 접착제로 붙여버린 레고 블록을 분해하려는 것과 같을 것입니다. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;오늘은 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;테스트 가능성(Testability)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;이라는 개념을 통해, &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;기획과 설계 단계에서부터 테스트를 염두에 둔 구조를 만드는 것&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;이 왜 중요한지, 그리고 품질 아키텍트로서 우리가 어떤 역할을 해야 하는지 이야기해 보겠습니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h2 data-slug=&quot;%ED%85%8C%EC%8A%A4%ED%8A%B8%EA%B0%80%EB%8A%A5%EC%84%B1%3A%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4%EB%A5%BC%EC%96%BC%EB%A7%88%EB%82%98%EC%89%BD%EA%B2%8C%ED%85%8C%EC%8A%A4%ED%8A%B8%ED%95%A0%EC%88%98%EC%9E%88%EB%8A%94%EA%B0%802&quot; data-anchor=&quot;%ED%85%8C%EC%8A%A4%ED%8A%B8%EA%B0%80%EB%8A%A5%EC%84%B1%3A%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4%EB%A5%BC%EC%96%BC%EB%A7%88%EB%82%98%EC%89%BD%EA%B2%8C%ED%85%8C%EC%8A%A4%ED%8A%B8%ED%95%A0%EC%88%98%EC%9E%88%EB%8A%94%EA%B0%80&quot; data-slate-node=&quot;element&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;테스트 가능성: 소프트웨어를 얼마나 쉽게 테스트할 수 있는가&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;테스트 가능성&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;은 말 그대로 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;소프트웨어나 그 구성 요소를 얼마나 쉽고 효과적으로 테스트할 수 있는지&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;를 나타내는 척도입니다 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-index=&quot;1&quot; data-reference-id=&quot;1&quot; data-link-reference=&quot;true&quot; data-slate-void=&quot;true&quot; data-slate-inline=&quot;true&quot; data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-spacer=&quot;true&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;테스트 가능성이 높다는 것은, 소프트웨어의 내부 동작을 쉽게 관찰하고, 원하는 상태로 제어하며, 테스트 결과를 명확하게 확인할 수 있다는 의미입니다. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;이는 마치 잘 설계된 건물에 전기 배선이나 수도관을 점검할 수 있는 점검구가 곳곳에 마련되어 있어, 문제가 생겼을 때 쉽게 원인을 파악하고 수리할 수 있는 것과 같습니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;반대로 테스트 가능성이 낮으면, 작은 기능을 테스트하는 데도 많은 시간과 노력이 들고, 버그를 찾아내기도 어려워집니다. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;이는 마치 복잡한 기계의 부품 하나를 교체하기 위해 전체를 다 분해해야 하는 상황과 비슷합니다. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;결국 테스트 비용이 증가하고, 출시 일정이 지연되며, 소프트웨어의 전반적인 품질 저하로 이어질 수 있습니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h2 data-slug=&quot;%EA%B8%B0%ED%9A%8D%C2%B7%EA%B0%9C%EB%B0%9C%EB%8B%A8%EA%B3%84%EC%97%90%EC%84%9C%ED%85%8C%EC%8A%A4%ED%8A%B8%EA%B0%80%EB%8A%A5%EC%84%B1%EC%9D%84%EB%81%8C%EC%96%B4%EC%98%AC%EB%A6%AC%EB%8A%94%EC%9D%B4%EC%9C%A05&quot; data-anchor=&quot;%EA%B8%B0%ED%9A%8D%C2%B7%EA%B0%9C%EB%B0%9C%EB%8B%A8%EA%B3%84%EC%97%90%EC%84%9C%ED%85%8C%EC%8A%A4%ED%8A%B8%EA%B0%80%EB%8A%A5%EC%84%B1%EC%9D%84%EB%81%8C%EC%96%B4%EC%98%AC%EB%A6%AC%EB%8A%94%EC%9D%B4%EC%9C%A0&quot; data-slate-node=&quot;element&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;기획&amp;middot;개발 단계에서 테스트 가능성을 끌어올리는 이유&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;테스트는 소프트웨어 개발 생명주기(SDLC)의 후반부에 이루어지는 활동이라고 생각하기 쉽습니다. 하지만 테스트 가능성은 개발 초기 단계, 즉 기획과 설계 단계에서부터 고려되어야 합니다. 왜냐하면 소프트웨어의 구조와 아키텍처가 결정되는 시점이기 때문입니다. 마치 건물의 설계 단계에서부터 점검구의 위치나 배관의 경로를 정해야 나중에 유지보수가 쉬워지듯이, 소프트웨어도 초기 설계가 테스트 용이성에 큰 영향을 미칩니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h3 data-slug=&quot;1%EB%AC%B8%EC%A0%9C%EC%9D%98%EC%A1%B0%EA%B8%B0%EB%B0%9C%EA%B2%AC%EA%B3%BC%EB%B9%84%EC%9A%A9%EC%A0%88%EA%B0%907&quot; data-anchor=&quot;1%EB%AC%B8%EC%A0%9C%EC%9D%98%EC%A1%B0%EA%B8%B0%EB%B0%9C%EA%B2%AC%EA%B3%BC%EB%B9%84%EC%9A%A9%EC%A0%88%EA%B0%90&quot; data-slate-node=&quot;element&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;1. 문제의 조기 발견과 비용 절감&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;테스트 가능성을 고려한 설계는 잠재적인 문제를 개발 초기 단계에서 발견할 수 있도록 돕습니다. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;예를 들어, 특정 모듈이 너무 복잡하게 얽혀 있어 테스트하기 어렵다는 것을 설계 단계에서 파악하면, 이를 더 작고 독립적인 단위로 분리하여 설계할 수 있습니다. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;이렇게 하면 나중에 코드를 다 작성한 후에 문제를 발견하여 수정하는 것보다 훨씬 적은 비용과 노력으로 해결할 수 있습니다. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;마치 레고 블록을 조립하기 전에 어떤 블록이 서로 잘 맞고 분리하기 쉬운지 미리 확인하는 것과 같습니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h3 data-slug=&quot;2%ED%85%8C%EC%8A%A4%ED%8A%B8%EC%9E%90%EB%8F%99%ED%99%94%EC%9D%98%EC%9A%A9%EC%9D%B4%EC%84%B19&quot; data-anchor=&quot;2%ED%85%8C%EC%8A%A4%ED%8A%B8%EC%9E%90%EB%8F%99%ED%99%94%EC%9D%98%EC%9A%A9%EC%9D%B4%EC%84%B1&quot; data-slate-node=&quot;element&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;2. 테스트 자동화의 용이성&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;테스트 가능성이 높은 소프트웨어는 테스트 자동화에도 유리합니다. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;각 기능이 독립적으로 작동하고, 외부와의 의존성이 명확하게 분리되어 있다면, 자동화된 테스트 코드를 작성하기가 훨씬 수월해집니다. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;이는 마치 각 부품이 명확하게 분리되는 레고 블록으로 만든 장난감이, 원하는 부분만 떼어내어 다른 부품으로 교체하거나 테스트하기 쉬운 것과 같습니다. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;자동화된 테스트는 빠른 피드백을 제공하고, 회귀 테스트(Regression Test) 비용을 절감하여 개발 속도를 높이는 데 기여합니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h3 data-slug=&quot;3%EC%9C%A0%EC%A7%80%EB%B3%B4%EC%88%98%EB%B0%8F%ED%99%95%EC%9E%A5%EC%84%B1%EC%9D%98%ED%96%A5%EC%83%8111&quot; data-anchor=&quot;3%EC%9C%A0%EC%A7%80%EB%B3%B4%EC%88%98%EB%B0%8F%ED%99%95%EC%9E%A5%EC%84%B1%EC%9D%98%ED%96%A5%EC%83%81&quot; data-slate-node=&quot;element&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;3. 유지보수 및 확장성의 향상&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;테스트하기 쉬운 코드는 일반적으로 유지보수 및 확장성도 뛰어납니다. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;테스트 가능성을 높이기 위해 코드를 모듈화하고, 각 모듈의 역할을 명확히 하며, 의존성을 줄이는 과정은 자연스럽게 코드의 가독성과 재사용성을 높이기 때문입니다. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;이는 마치 잘 정리된 도구 상자에서 필요한 도구를 쉽게 찾아 사용할 수 있고, 새로운 도구를 추가하기도 쉬운 것과 같습니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h2 data-slug=&quot;%ED%85%8C%EC%8A%A4%ED%8A%B8%EA%B0%80%EB%8A%A5%EC%84%B1%EC%9D%84%EC%84%A4%EA%B3%84%EC%97%90%EC%8B%AC%EB%8A%94%EA%B5%AC%EC%B2%B4%EC%A0%81%EC%9D%B8%EB%B0%A9%EB%B2%9513&quot; data-anchor=&quot;%ED%85%8C%EC%8A%A4%ED%8A%B8%EA%B0%80%EB%8A%A5%EC%84%B1%EC%9D%84%EC%84%A4%EA%B3%84%EC%97%90%EC%8B%AC%EB%8A%94%EA%B5%AC%EC%B2%B4%EC%A0%81%EC%9D%B8%EB%B0%A9%EB%B2%95&quot; data-slate-node=&quot;element&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;테스트 가능성을 설계에 심는 구체적인 방법&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;그렇다면 기획과 설계 단계에서 테스트 가능성을 높이기 위해 구체적으로 어떤 노력을 해야 할까요?&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h3 data-slug=&quot;1%EB%AA%A8%EB%93%88%ED%99%94%EB%B0%8F%EB%82%AE%EC%9D%80%EA%B2%B0%ED%95%A9%EB%8F%84%EC%9C%A0%EC%A7%8015&quot; data-anchor=&quot;1%EB%AA%A8%EB%93%88%ED%99%94%EB%B0%8F%EB%82%AE%EC%9D%80%EA%B2%B0%ED%95%A9%EB%8F%84%EC%9C%A0%EC%A7%80&quot; data-slate-node=&quot;element&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;1. 모듈화 및 낮은 결합도 유지&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;소프트웨어를 작고 독립적인 모듈로 나누고, 각 모듈 간의 의존성을 최소화해야 합니다. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;마치 레고 블록처럼, 각 블록이 독립적인 기능을 수행하고 다른 블록에 미치는 영향이 적을수록 테스트하기 쉽습니다. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;특정 모듈을 테스트할 때 다른 모듈의 영향을 받지 않도록 설계하는 것이 중요합니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h3 data-slug=&quot;2%EB%AA%85%ED%99%95%ED%95%9C%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4%EC%A0%9C%EA%B3%B517&quot; data-anchor=&quot;2%EB%AA%85%ED%99%95%ED%95%9C%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4%EC%A0%9C%EA%B3%B5&quot; data-slate-node=&quot;element&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;2. 명확한 인터페이스 제공&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;각 모듈이나 컴포넌트가 외부와 상호작용하는 방식을 명확하게 정의하는 인터페이스를 제공해야 합니다. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;이는 마치 건물의 각 방에 어떤 기능이 있고, 어떻게 사용해야 하는지 명확한 안내판이 붙어있는 것과 같습니다. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;명확한 인터페이스는 테스트 코드가 해당 모듈을 쉽게 호출하고, 입력값을 전달하며, 출력값을 확인할 수 있도록 돕습니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h3 data-slug=&quot;3%EA%B4%80%EC%B0%B0%EA%B0%80%EB%8A%A5%EC%84%B1(observability)%ED%99%95%EB%B3%B419&quot; data-anchor=&quot;3%EA%B4%80%EC%B0%B0%EA%B0%80%EB%8A%A5%EC%84%B1(observability)%ED%99%95%EB%B3%B4&quot; data-slate-node=&quot;element&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;3. 관찰 가능성(Observability) 확보&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;소프트웨어의 내부 상태를 쉽게 관찰할 수 있도록 로그, 메트릭, 트레이스 등의 정보를 충분히 제공해야 합니다. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;지난 연재에서 다루었던 관측성(Observability)과 일맥상통하는 부분입니다. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;마치 건물 곳곳에 설치된 센서와 모니터링 시스템이 건물의 상태를 실시간으로 보여주듯이, 소프트웨어도 내부 동작을 투명하게 보여줄 수 있어야 테스트 중 발생하는 문제를 정확하게 파악할 수 있습니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h3 data-slug=&quot;4%EC%A0%9C%EC%96%B4%EA%B0%80%EB%8A%A5%EC%84%B1(controllability)%ED%99%95%EB%B3%B421&quot; data-anchor=&quot;4%EC%A0%9C%EC%96%B4%EA%B0%80%EB%8A%A5%EC%84%B1(controllability)%ED%99%95%EB%B3%B4&quot; data-slate-node=&quot;element&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;4. 제어 가능성(Controllability) 확보&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;테스트를 위해 소프트웨어의 특정 상태를 쉽게 설정하고 제어할 수 있어야 합니다. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;예를 들어, 특정 시나리오를 테스트하기 위해 데이터베이스의 초기 상태를 쉽게 만들거나, 외부 시스템과의 연동을 모의(Mock)할 수 있는 기능을 제공하는 것입니다. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;이는 마치 레고 블록을 조립하기 전에 원하는 색상과 모양의 블록을 미리 준비해두는 것과 같습니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h3 data-slug=&quot;5%ED%85%8C%EC%8A%A4%ED%8A%B8%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B4%80%EB%A6%AC%EC%9A%A9%EC%9D%B4%EC%84%B123&quot; data-anchor=&quot;5%ED%85%8C%EC%8A%A4%ED%8A%B8%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B4%80%EB%A6%AC%EC%9A%A9%EC%9D%B4%EC%84%B1&quot; data-slate-node=&quot;element&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;5. 테스트 데이터 관리 용이성&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;테스트에 필요한 데이터를 쉽게 생성하고 관리할 수 있는 방법을 설계 단계에서부터 고려해야 합니다. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;지난 연재에서 다루었던 테스트 데이터 합성 및 마스킹 기술도 여기에 해당합니다. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;마치 요리사가 요리하기 전에 필요한 재료를 미리 손질해두는 것과 같아서, 테스트 데이터 준비에 드는 시간을 줄이고 테스트의 효율성을 높일 수 있습니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;h2 data-slug=&quot;%ED%92%88%EC%A7%88%EC%95%84%ED%82%A4%ED%85%8D%ED%8A%B8%EC%9D%98%EC%A0%84%EB%9E%B5%EC%A0%81%EC%97%AD%ED%95%A0%3A%ED%85%8C%EC%8A%A4%ED%8A%B8%EA%B0%80%EB%8A%A5%EC%84%B1%EC%9D%84%EC%84%A4%EA%B3%84%ED%95%98%EB%8B%A425&quot; data-anchor=&quot;%ED%92%88%EC%A7%88%EC%95%84%ED%82%A4%ED%85%8D%ED%8A%B8%EC%9D%98%EC%A0%84%EB%9E%B5%EC%A0%81%EC%97%AD%ED%95%A0%3A%ED%85%8C%EC%8A%A4%ED%8A%B8%EA%B0%80%EB%8A%A5%EC%84%B1%EC%9D%84%EC%84%A4%EA%B3%84%ED%95%98%EB%8B%A4&quot; data-slate-node=&quot;element&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;품질 아키텍트의 전략적 역할: 테스트 가능성을 설계하다&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;AI가 코드를 짜고 테스트를 자동화하는 시대에, 품질 아키텍트의 역할은 단순히 테스트를 실행하는 것을 넘어, &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;테스트하기 쉬운 소프트웨어를 설계하는 데 적극적으로 참여하는 것&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;입니다. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;우리는 기획자, 개발자와 함께 초기 단계부터 테스트 가능성을 논의하고, 설계에 반영될 수 있도록 가이드해야 합니다. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;이는 마치 건물을 짓기 전부터 건축가와 함께 점검구의 위치와 배관 경로를 논의하고, 유지보수가 용이한 설계를 이끌어내는 것과 같습니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;테스트 가능성을 설계에 심는 것은 단기적으로는 추가적인 노력처럼 보일 수 있습니다. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;하지만 장기적으로는 소프트웨어의 품질을 향상시키고, 개발 비용을 절감하며, 시장 출시 시간을 단축하는 데 결정적인 역할을 합니다. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;품질 아키텍트로서 우리는 이러한 전략적 사고를 바탕으로, 소프트웨어의 모든 단계에서 품질이 내재화될 수 있도록 이끌어야 합니다. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;테스트 가능성을 높이는 것은 단순히 테스트 팀만의 책임이 아니라, 소프트웨어 개발에 참여하는 모든 이해관계자가 함께 고민하고 실천해야 할 중요한 가치입니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div data-slate-void=&quot;true&quot; data-slate-node=&quot;element&quot;&gt;
&lt;div contenteditable=&quot;false&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-slate-spacer=&quot;true&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h3 data-slug=&quot;%EC%B0%B8%EA%B3%A0%EC%9E%90%EB%A3%8C29&quot; data-anchor=&quot;%EC%B0%B8%EA%B3%A0%EC%9E%90%EB%A3%8C&quot; data-slate-node=&quot;element&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;참고 자료&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;/div&gt;
&lt;div&gt;&lt;a href=&quot;https://www.geeksforgeeks.org/software-testing/software-testability/&quot; data-definition-id=&quot;1&quot; data-slate-node=&quot;element&quot;&gt;&lt;span&gt;[1]&amp;nbsp;&lt;/span&gt;&lt;span&gt;&lt;span data-slate-node=&quot;text&quot;&gt;&lt;span data-slate-leaf=&quot;true&quot;&gt;&lt;span data-slate-string=&quot;true&quot;&gt;GeeksforGeeks. &quot;Software Testability.&quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div data-slate-fragment=&quot;JTVCJTdCJTIydHlwZSUyMiUzQSUyMmhlYWRpbmclMjIlMkMlMjJsZXZlbCUyMiUzQTElMkMlMjJjaGlsZHJlbiUyMiUzQSU1QiU3QiUyMnRleHQlMjIlM0ElMjIlRUQlODUlOEMlRUMlOEElQTQlRUQlOEElQjglMjAlRUElQjAlODAlRUIlOEElQTUlRUMlODQlQjElRUMlOUQlODQlMjAlRUMlODQlQTQlRUElQjMlODQlRUMlOTclOTAlMjAlRUMlOEIlQUMlRUIlOEIlQTQlM0ElMjAlRUMlQTAlOTAlRUElQjIlODAlRUElQjUlQUMlRUElQjAlODAlMjAlRUMlOUUlODglRUIlOEElOTQlMjAlRUElQjElQjQlRUIlQUMlQkMlRUMlQjIlOTglRUIlOUYlQkMlMkMlMjAlRUIlQTAlODglRUElQjMlQTAlRUMlQjIlOTglRUIlOUYlQkMlMjIlN0QlNUQlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIycCUyMiUyQyUyMmNoaWxkcmVuJTIyJTNBJTVCJTdCJTIydGV4dCUyMiUzQSUyMiVFQyU5QSVCMCVFQiVBNiVBQyVFQiU4QSU5NCUyMCVFQyVBNyU4MCVFQiU4MiU5QyUyMCVFQyU5NyVCMCVFQyU5RSVBQyVFQiU5MyVBNCVFQyU5RCU4NCUyMCVFRCU4NiVCNSVFRCU5NSVCNCUyMCVFQyU4NiU4QyVFRCU5NCU4NCVFRCU4QSVCOCVFQyU5QiVBOCVFQyU5NiVCNCVFQyU5RCU5OCUyMCVFQSVCOCVCMCVFQiU4QSVBNSVFQyU5RCVCNCUyMCVFQyU5RSU5OCUyMCVFQyU5RSU5MSVFQiU4RiU5OSVFRCU5NSU5OCVFQiU4QSU5NCVFQyVBNyU4MCUyQyUyMCVFQyU4NCVCMSVFQiU4QSVBNSVFQyU5RCU4MCUyMCVFQyU5NiVCNCVFQiU5NiVBNCVFQyVBNyU4MCUyQyUyMCVFQiVCMyVCNCVFQyU5NSU4OCVFQyU5NyU5MCVFQiU4QSU5NCUyMCVFQiVBQyVCOCVFQyVBMCU5QyVFQSVCMCU4MCUyMCVFQyU5NyU4NiVFQiU4QSU5NCVFQyVBNyU4MCUyMCVFQiU5MyVCMSUyMCVFQiU4QiVBNCVFQyU5NiU5MSVFRCU5NSU5QyUyMCVFQSVCNCU4MCVFQyVBMCU5MCVFQyU5NyU5MCVFQyU4NCU5QyUyMCVFRCU5MiU4OCVFQyVBNyU4OCVFQyU5RCU4NCUyMCVFQyVCOCVBMSVFQyVBMCU5NSVFRCU5NSU5OCVFQSVCMyVBMCUyMCVFQSVCMCU5QyVFQyU4NCVBMCVFRCU5NSU5OCVFQiU4QSU5NCUyMCVFQiVCMCVBOSVFQiVCMiU5NSVFQyU5RCU4NCUyMCVFQyU5NSU4QyVFQyU5NSU4NCVFQiVCMyVCNCVFQyU5NSU5OCVFQyU4QSVCNSVFQiU4QiU4OCVFQiU4QiVBNC4lMjAlRUElQjclQjglRUIlOUYlQjAlRUIlOEQlQjAlMjAlRUMlOTUlODQlRUIlQUMlQjQlRUIlQTYlQUMlMjAlRUQlOUIlOEMlRUIlQTUlQUQlRUQlOTUlOUMlMjAlRUQlODUlOEMlRUMlOEElQTQlRUQlOEElQjglMjAlRUElQjglQjAlRUMlODglQTAlRUElQjMlQkMlMjAlRUIlOEYlODQlRUElQjUlQUMlRUIlQTUlQkMlMjAlRUElQjAlODAlRUMlQTclODAlRUElQjMlQTAlMjAlRUMlOUUlODglRUMlOTYlQjQlRUIlOEYlODQlMkMlMjAlRUMlQTAlOTUlRUMlOUUlOTElMjAlRUQlODUlOEMlRUMlOEElQTQlRUQlOEElQjglRUQlOTUlOTglRUElQjglQjAlMjAlRUMlOTYlQjQlRUIlQTAlQTQlRUMlOUElQjQlMjAlRUElQjUlQUMlRUMlQTElQjAlRUIlQTElOUMlMjAlRUIlQTclOEMlRUIlOTMlQTQlRUMlOTYlQjQlRUMlQTclODQlMjAlRUMlODYlOEMlRUQlOTQlODQlRUQlOEElQjglRUMlOUIlQTglRUMlOTYlQjQlRUIlOUQlQkMlRUIlQTklQjQlMjAlRUMlOTYlQjQlRUIlOTYlQTglRUElQjklOEMlRUMlOUElOTQlM0YlMjAlRUIlQTclODglRUMlQjklOTglMjAlRUMlQTAlOTAlRUElQjIlODAlRUElQjUlQUMlRUElQjAlODAlMjAlRUMlOTclODYlRUIlOEElOTQlMjAlRUElQjElQjQlRUIlQUMlQkMlRUMlOTclOTAlRUMlODQlOUMlMjAlRUIlQjAlQjAlRUElQjQlODAlMjAlRUIlQUMlQjglRUMlQTAlOUMlRUIlQTUlQkMlMjAlRUMlQjAlQkUlRUMlOTUlODQlRUIlODIlQjQlRUElQjElQjAlRUIlODIlOTglMkMlMjAlRUMlQTAlOTElRUMlQjAlQTklRUMlQTAlOUMlRUIlQTElOUMlMjAlRUIlQjYlOTklRUMlOTclQUMlRUIlQjIlODQlRUIlQTYlQjAlMjAlRUIlQTAlODglRUElQjMlQTAlMjAlRUIlQjglOTQlRUIlQTElOUQlRUMlOUQlODQlMjAlRUIlQjYlODQlRUQlOTUlQjQlRUQlOTUlOTglRUIlQTAlQTQlRUIlOEElOTQlMjAlRUElQjIlODMlRUElQjMlQkMlMjAlRUElQjAlOTklRUMlOUQlODQlMjAlRUElQjIlODMlRUMlOUUlODUlRUIlOEIlODglRUIlOEIlQTQuJTIwJUVDJTk4JUE0JUVCJThBJTk4JUVDJTlEJTgwJTIwJTIyJTdEJTJDJTdCJTIydGV4dCUyMiUzQSUyMiVFRCU4NSU4QyVFQyU4QSVBNCVFRCU4QSVCOCUyMCVFQSVCMCU4MCVFQiU4QSVBNSVFQyU4NCVCMShUZXN0YWJpbGl0eSklMjIlMkMlMjJib2xkJTIyJTNBdHJ1ZSU3RCUyQyU3QiUyMnRleHQlMjIlM0ElMjIlRUMlOUQlQjQlRUIlOUQlQkMlRUIlOEElOTQlMjAlRUElQjAlOUMlRUIlODUlOTAlRUMlOUQlODQlMjAlRUQlODYlQjUlRUQlOTUlQjQlMkMlMjAlMjIlN0QlMkMlN0IlMjJ0ZXh0JTIyJTNBJTIyJUVBJUI4JUIwJUVEJTlBJThEJUVBJUIzJUJDJTIwJUVDJTg0JUE0JUVBJUIzJTg0JTIwJUVCJThCJUE4JUVBJUIzJTg0JUVDJTk3JTkwJUVDJTg0JTlDJUVCJUI2JTgwJUVEJTg0JUIwJTIwJUVEJTg1JThDJUVDJThBJUE0JUVEJThBJUI4JUVCJUE1JUJDJTIwJUVDJTk3JUJDJUVCJTkxJTkwJUVDJTk3JTkwJTIwJUVCJTkxJTk0JTIwJUVBJUI1JUFDJUVDJUExJUIwJUVCJUE1JUJDJTIwJUVCJUE3JThDJUVCJTkzJTlDJUVCJThBJTk0JTIwJUVBJUIyJTgzJTIyJTJDJTIyYm9sZCUyMiUzQXRydWUlN0QlMkMlN0IlMjJ0ZXh0JTIyJTNBJTIyJUVDJTlEJUI0JTIwJUVDJTk5JTlDJTIwJUVDJUE0JTkxJUVDJTlBJTk0JUVEJTk1JTlDJUVDJUE3JTgwJTJDJTIwJUVBJUI3JUI4JUVCJUE2JUFDJUVBJUIzJUEwJTIwJUVEJTkyJTg4JUVDJUE3JTg4JTIwJUVDJTk1JTg0JUVEJTgyJUE0JUVEJTg1JThEJUVEJThBJUI4JUVCJUExJTlDJUVDJTg0JTlDJTIwJUVDJTlBJUIwJUVCJUE2JUFDJUVBJUIwJTgwJTIwJUVDJTk2JUI0JUVCJTk2JUE0JTIwJUVDJTk3JUFEJUVEJTk1JUEwJUVDJTlEJTg0JTIwJUVEJTk1JUI0JUVDJTk1JUJDJTIwJUVEJTk1JTk4JUVCJThBJTk0JUVDJUE3JTgwJTIwJUVDJTlEJUI0JUVDJTk1JUJDJUVBJUI4JUIwJUVEJTk1JUI0JTIwJUVCJUIzJUI0JUVBJUIyJUEwJUVDJThBJUI1JUVCJThCJTg4JUVCJThCJUE0LiUyMiU3RCU1RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJoZWFkaW5nJTIyJTJDJTIybGV2ZWwlMjIlM0EyJTJDJTIyY2hpbGRyZW4lMjIlM0ElNUIlN0IlMjJ0ZXh0JTIyJTNBJTIyJUVEJTg1JThDJUVDJThBJUE0JUVEJThBJUI4JTIwJUVBJUIwJTgwJUVCJThBJUE1JUVDJTg0JUIxJTNBJTIwJUVDJTg2JThDJUVEJTk0JTg0JUVEJThBJUI4JUVDJTlCJUE4JUVDJTk2JUI0JUVCJUE1JUJDJTIwJUVDJTk2JUJDJUVCJUE3JTg4JUVCJTgyJTk4JTIwJUVDJTg5JUJEJUVBJUIyJThDJTIwJUVEJTg1JThDJUVDJThBJUE0JUVEJThBJUI4JUVEJTk1JUEwJTIwJUVDJTg4JTk4JTIwJUVDJTlFJTg4JUVCJThBJTk0JUVBJUIwJTgwJTIyJTdEJTVEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMnAlMjIlMkMlMjJjaGlsZHJlbiUyMiUzQSU1QiU3QiUyMnRleHQlMjIlM0ElMjIlRUQlODUlOEMlRUMlOEElQTQlRUQlOEElQjglMjAlRUElQjAlODAlRUIlOEElQTUlRUMlODQlQjElMjIlMkMlMjJib2xkJTIyJTNBdHJ1ZSU3RCUyQyU3QiUyMnRleHQlMjIlM0ElMjIlRUMlOUQlODAlMjAlRUIlQTclOTAlMjAlRUElQjclQjglRUIlOEMlODAlRUIlQTElOUMlMjAlMjIlN0QlMkMlN0IlMjJ0ZXh0JTIyJTNBJTIyJUVDJTg2JThDJUVEJTk0JTg0JUVEJThBJUI4JUVDJTlCJUE4JUVDJTk2JUI0JUVCJTgyJTk4JTIwJUVBJUI3JUI4JTIwJUVBJUI1JUFDJUVDJTg0JUIxJTIwJUVDJTlBJTk0JUVDJTg2JThDJUVCJUE1JUJDJTIwJUVDJTk2JUJDJUVCJUE3JTg4JUVCJTgyJTk4JTIwJUVDJTg5JUJEJUVBJUIzJUEwJTIwJUVEJTlBJUE4JUVBJUIzJUJDJUVDJUEwJTgxJUVDJTlDJUJDJUVCJUExJTlDJTIwJUVEJTg1JThDJUVDJThBJUE0JUVEJThBJUI4JUVEJTk1JUEwJTIwJUVDJTg4JTk4JTIwJUVDJTlFJTg4JUVCJThBJTk0JUVDJUE3JTgwJTIyJTJDJTIyYm9sZCUyMiUzQXRydWUlN0QlMkMlN0IlMjJ0ZXh0JTIyJTNBJTIyJUVCJUE1JUJDJTIwJUVCJTgyJTk4JUVEJTgzJTgwJUVCJTgyJUI0JUVCJThBJTk0JTIwJUVDJUIyJTk5JUVCJThGJTg0JUVDJTlFJTg1JUVCJThCJTg4JUVCJThCJUE0JTIwJTIyJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmxpbmtSZWZlcmVuY2UlMjIlMkMlMjJyZWZlcmVuY2VJZCUyMiUzQSUyMjElMjIlMkMlMjJyZWZlcmVuY2VVcmwlMjIlM0ElMjJodHRwcyUzQSUyRiUyRnd3dy5nZWVrc2ZvcmdlZWtzLm9yZyUyRnNvZnR3YXJlLXRlc3RpbmclMkZzb2Z0d2FyZS10ZXN0YWJpbGl0eSUyRiUyMiUyQyUyMnJlZmVyZW5jZVRpdGxlJTIyJTNBJTIyR2Vla3Nmb3JHZWVrcy4lMjAlNUMlMjJTb2Z0d2FyZSUyMFRlc3RhYmlsaXR5LiU1QyUyMiUyMiUyQyUyMnJlZmVyZW5jZUluZGV4JTIyJTNBMSUyQyUyMmNoaWxkcmVuJTIyJTNBJTVCJTdCJTIydGV4dCUyMiUzQSUyMiUyMiU3RCU1RCU3RCUyQyU3QiUyMnRleHQlMjIlM0ElMjIuJTIwJUVEJTg1JThDJUVDJThBJUE0JUVEJThBJUI4JTIwJUVBJUIwJTgwJUVCJThBJUE1JUVDJTg0JUIxJUVDJTlEJUI0JTIwJUVCJTg2JTkyJUVCJThCJUE0JUVCJThBJTk0JTIwJUVBJUIyJTgzJUVDJTlEJTgwJTJDJTIwJUVDJTg2JThDJUVEJTk0JTg0JUVEJThBJUI4JUVDJTlCJUE4JUVDJTk2JUI0JUVDJTlEJTk4JTIwJUVCJTgyJUI0JUVCJUI2JTgwJTIwJUVCJThGJTk5JUVDJTlFJTkxJUVDJTlEJTg0JTIwJUVDJTg5JUJEJUVBJUIyJThDJTIwJUVBJUI0JTgwJUVDJUIwJUIwJUVEJTk1JTk4JUVBJUIzJUEwJTJDJTIwJUVDJTlCJTkwJUVEJTk1JTk4JUVCJThBJTk0JTIwJUVDJTgzJTgxJUVEJTgzJTlDJUVCJUExJTlDJTIwJUVDJUEwJTlDJUVDJTk2JUI0JUVEJTk1JTk4JUVCJUE5JUIwJTJDJTIwJUVEJTg1JThDJUVDJThBJUE0JUVEJThBJUI4JTIwJUVBJUIyJUIwJUVBJUIzJUJDJUVCJUE1JUJDJTIwJUVCJUFBJTg1JUVEJTk5JTk1JUVEJTk1JTk4JUVBJUIyJThDJTIwJUVEJTk5JTk1JUVDJTlEJUI4JUVEJTk1JUEwJTIwJUVDJTg4JTk4JTIwJUVDJTlFJTg4JUVCJThCJUE0JUVCJThBJTk0JTIwJUVDJTlEJTk4JUVCJUFGJUI4JUVDJTlFJTg1JUVCJThCJTg4JUVCJThCJUE0LiUyMCVFQyU5RCVCNCVFQiU4QSU5NCUyMCVFQiVBNyU4OCVFQyVCOSU5OCUyMCVFQyU5RSU5OCUyMCVFQyU4NCVBNCVFQSVCMyU4NCVFQiU5MCU5QyUyMCVFQSVCMSVCNCVFQiVBQyVCQyVFQyU5NyU5MCUyMCVFQyVBMCU4NCVFQSVCOCVCMCUyMCVFQiVCMCVCMCVFQyU4NCVBMCVFQyU5RCVCNCVFQiU4MiU5OCUyMCVFQyU4OCU5OCVFQiU4RiU4NCVFQSVCNCU4MCVFQyU5RCU4NCUyMCVFQyVBMCU5MCVFQSVCMiU4MCVFRCU5NSVBMCUyMCVFQyU4OCU5OCUyMCVFQyU5RSU4OCVFQiU4QSU5NCUyMCVFQyVBMCU5MCVFQSVCMiU4MCVFQSVCNSVBQyVFQSVCMCU4MCUyMCVFQSVCMyVCMyVFQSVCMyVCMyVFQyU5NyU5MCUyMCVFQiVBNyU4OCVFQiVBMCVBOCVFQiU5MCU5OCVFQyU5NiVCNCUyMCVFQyU5RSU4OCVFQyU5NiVCNCUyQyUyMCVFQiVBQyVCOCVFQyVBMCU5QyVFQSVCMCU4MCUyMCVFQyU4MyU5RCVFQSVCMiVCQyVFQyU5RCU4NCUyMCVFQiU5NSU4QyUyMCVFQyU4OSVCRCVFQSVCMiU4QyUyMCVFQyU5QiU5MCVFQyU5RCVCOCVFQyU5RCU4NCUyMCVFRCU4QyU4QyVFQyU5NSU4NSVFRCU5NSU5OCVFQSVCMyVBMCUyMCVFQyU4OCU5OCVFQiVBNiVBQyVFRCU5NSVBMCUyMCVFQyU4OCU5OCUyMCVFQyU5RSU4OCVFQiU4QSU5NCUyMCVFQSVCMiU4MyVFQSVCMyVCQyUyMCVFQSVCMCU5OSVFQyU4QSVCNSVFQiU4QiU4OCVFQiU4QiVBNC4lMjIlN0QlNUQlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIycCUyMiUyQyUyMmNoaWxkcmVuJTIyJTNBJTVCJTdCJTIydGV4dCUyMiUzQSUyMiVFQiVCMCU5OCVFQiU4QyU4MCVFQiVBMSU5QyUyMCVFRCU4NSU4QyVFQyU4QSVBNCVFRCU4QSVCOCUyMCVFQSVCMCU4MCVFQiU4QSVBNSVFQyU4NCVCMSVFQyU5RCVCNCUyMCVFQiU4MiVBRSVFQyU5QyVCQyVFQiVBOSVCNCUyQyUyMCVFQyU5RSU5MSVFQyU5RCU4MCUyMCVFQSVCOCVCMCVFQiU4QSVBNSVFQyU5RCU4NCUyMCVFRCU4NSU4QyVFQyU4QSVBNCVFRCU4QSVCOCVFRCU5NSU5OCVFQiU4QSU5NCUyMCVFQiU4RCVCMCVFQiU4RiU4NCUyMCVFQiVBNyU4RSVFQyU5RCU4MCUyMCVFQyU4QiU5QyVFQSVCMCU4NCVFQSVCMyVCQyUyMCVFQiU4NSVCOCVFQiVBMCVBNSVFQyU5RCVCNCUyMCVFQiU5MyVBNCVFQSVCMyVBMCUyQyUyMCVFQiVCMiU4NCVFQSVCNyVCOCVFQiVBNSVCQyUyMCVFQyVCMCVCRSVFQyU5NSU4NCVFQiU4MiVCNCVFQSVCOCVCMCVFQiU4RiU4NCUyMCVFQyU5NiVCNCVFQiVBMCVBNCVFQyU5QiU4QyVFQyVBNyU5MSVFQiU4QiU4OCVFQiU4QiVBNC4lMjAlRUMlOUQlQjQlRUIlOEElOTQlMjAlRUIlQTclODglRUMlQjklOTglMjAlRUIlQjMlQjUlRUMlOUUlQTElRUQlOTUlOUMlMjAlRUElQjglQjAlRUElQjMlODQlRUMlOUQlOTglMjAlRUIlQjYlODAlRUQlOTIlODglMjAlRUQlOTUlOTglRUIlODIlOTglRUIlQTUlQkMlMjAlRUElQjUlOTAlRUMlQjIlQjQlRUQlOTUlOTglRUElQjglQjAlMjAlRUMlOUMlODQlRUQlOTUlQjQlMjAlRUMlQTAlODQlRUMlQjIlQjQlRUIlQTUlQkMlMjAlRUIlOEIlQTQlMjAlRUIlQjYlODQlRUQlOTUlQjQlRUQlOTUlQjQlRUMlOTUlQkMlMjAlRUQlOTUlOTglRUIlOEElOTQlMjAlRUMlODMlODElRUQlOTklQTklRUElQjMlQkMlMjAlRUIlQjklODQlRUMlOEElQjclRUQlOTUlQTklRUIlOEIlODglRUIlOEIlQTQuJTIwJUVBJUIyJUIwJUVBJUI1JUFEJTIwJUVEJTg1JThDJUVDJThBJUE0JUVEJThBJUI4JTIwJUVCJUI5JTg0JUVDJTlBJUE5JUVDJTlEJUI0JTIwJUVDJUE2JTlEJUVBJUIwJTgwJUVEJTk1JTk4JUVBJUIzJUEwJTJDJTIwJUVDJUI2JTlDJUVDJThCJTlDJTIwJUVDJTlEJUJDJUVDJUEwJTk1JUVDJTlEJUI0JTIwJUVDJUE3JTgwJUVDJTk3JUIwJUVCJTkwJTk4JUVCJUE5JUIwJTJDJTIwJUVDJTg2JThDJUVEJTk0JTg0JUVEJThBJUI4JUVDJTlCJUE4JUVDJTk2JUI0JUVDJTlEJTk4JTIwJUVDJUEwJTg0JUVCJUIwJTk4JUVDJUEwJTgxJUVDJTlEJUI4JTIwJUVEJTkyJTg4JUVDJUE3JTg4JTIwJUVDJUEwJTgwJUVEJTk1JTk4JUVCJUExJTlDJTIwJUVDJTlEJUI0JUVDJTk2JUI0JUVDJUE3JTg4JTIwJUVDJTg4JTk4JTIwJUVDJTlFJTg4JUVDJThBJUI1JUVCJThCJTg4JUVCJThCJUE0LiUyMiU3RCU1RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJoZWFkaW5nJTIyJTJDJTIybGV2ZWwlMjIlM0EyJTJDJTIyY2hpbGRyZW4lMjIlM0ElNUIlN0IlMjJ0ZXh0JTIyJTNBJTIyJUVBJUI4JUIwJUVEJTlBJThEJUMyJUI3JUVBJUIwJTlDJUVCJUIwJTlDJTIwJUVCJThCJUE4JUVBJUIzJTg0JUVDJTk3JTkwJUVDJTg0JTlDJTIwJUVEJTg1JThDJUVDJThBJUE0JUVEJThBJUI4JTIwJUVBJUIwJTgwJUVCJThBJUE1JUVDJTg0JUIxJUVDJTlEJTg0JTIwJUVCJTgxJThDJUVDJTk2JUI0JUVDJTk4JUFDJUVCJUE2JUFDJUVCJThBJTk0JTIwJUVDJTlEJUI0JUVDJTlDJUEwJTIyJTdEJTVEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMnAlMjIlMkMlMjJjaGlsZHJlbiUyMiUzQSU1QiU3QiUyMnRleHQlMjIlM0ElMjIlRUQlODUlOEMlRUMlOEElQTQlRUQlOEElQjglRUIlOEElOTQlMjAlRUMlODYlOEMlRUQlOTQlODQlRUQlOEElQjglRUMlOUIlQTglRUMlOTYlQjQlMjAlRUElQjAlOUMlRUIlQjAlOUMlMjAlRUMlODMlOUQlRUIlQUElODUlRUMlQTMlQkMlRUElQjglQjAoU0RMQyklRUMlOUQlOTglMjAlRUQlOUIlODQlRUIlQjAlOTglRUIlQjYlODAlRUMlOTclOTAlMjAlRUMlOUQlQjQlRUIlQTMlQTglRUMlOTYlQjQlRUMlQTclODAlRUIlOEElOTQlMjAlRUQlOTklOUMlRUIlOEYlOTklRUMlOUQlQjQlRUIlOUQlQkMlRUElQjMlQTAlMjAlRUMlODMlOUQlRUElQjAlODElRUQlOTUlOTglRUElQjglQjAlMjAlRUMlODklQkQlRUMlOEElQjUlRUIlOEIlODglRUIlOEIlQTQuJTIwJUVEJTk1JTk4JUVDJUE3JTgwJUVCJUE3JThDJTIwJUVEJTg1JThDJUVDJThBJUE0JUVEJThBJUI4JTIwJUVBJUIwJTgwJUVCJThBJUE1JUVDJTg0JUIxJUVDJTlEJTgwJTIwJUVBJUIwJTlDJUVCJUIwJTlDJTIwJUVDJUI0JTg4JUVBJUI4JUIwJTIwJUVCJThCJUE4JUVBJUIzJTg0JTJDJTIwJUVDJUE2JTg5JTIwJUVBJUI4JUIwJUVEJTlBJThEJUVBJUIzJUJDJTIwJUVDJTg0JUE0JUVBJUIzJTg0JTIwJUVCJThCJUE4JUVBJUIzJTg0JUVDJTk3JTkwJUVDJTg0JTlDJUVCJUI2JTgwJUVEJTg0JUIwJTIwJUVBJUIzJUEwJUVCJUEwJUE0JUVCJTkwJTk4JUVDJTk2JUI0JUVDJTk1JUJDJTIwJUVEJTk1JUE5JUVCJThCJTg4JUVCJThCJUE0LiUyMCVFQyU5OSU5QyVFQiU4MyU5MCVFRCU5NSU5OCVFQiVBOSVCNCUyMCVFQyU4NiU4QyVFRCU5NCU4NCVFRCU4QSVCOCVFQyU5QiVBOCVFQyU5NiVCNCVFQyU5RCU5OCUyMCVFQSVCNSVBQyVFQyVBMSVCMCVFQyU5OSU4MCUyMCVFQyU5NSU4NCVFRCU4MiVBNCVFRCU4NSU4RCVFQyVCMiU5OCVFQSVCMCU4MCUyMCVFQSVCMiVCMCVFQyVBMCU5NSVFQiU5MCU5OCVFQiU4QSU5NCUyMCVFQyU4QiU5QyVFQyVBMCU5MCVFQyU5RCVCNCVFQSVCOCVCMCUyMCVFQiU5NSU4QyVFQiVBQyVCOCVFQyU5RSU4NSVFQiU4QiU4OCVFQiU4QiVBNC4lMjAlRUIlQTclODglRUMlQjklOTglMjAlRUElQjElQjQlRUIlQUMlQkMlRUMlOUQlOTglMjAlRUMlODQlQTQlRUElQjMlODQlMjAlRUIlOEIlQTglRUElQjMlODQlRUMlOTclOTAlRUMlODQlOUMlRUIlQjYlODAlRUQlODQlQjAlMjAlRUMlQTAlOTAlRUElQjIlODAlRUElQjUlQUMlRUMlOUQlOTglMjAlRUMlOUMlODQlRUMlQjklOTglRUIlODIlOTglMjAlRUIlQjAlQjAlRUElQjQlODAlRUMlOUQlOTglMjAlRUElQjIlQkQlRUIlQTElOUMlRUIlQTUlQkMlMjAlRUMlQTAlOTUlRUQlOTUlQjQlRUMlOTUlQkMlMjAlRUIlODIlOTglRUMlQTQlOTElRUMlOTclOTAlMjAlRUMlOUMlQTAlRUMlQTclODAlRUIlQjMlQjQlRUMlODglOTglRUElQjAlODAlMjAlRUMlODklQUMlRUMlOUIlOEMlRUMlQTclODAlRUIlOTMlQUYlRUMlOUQlQjQlMkMlMjAlRUMlODYlOEMlRUQlOTQlODQlRUQlOEElQjglRUMlOUIlQTglRUMlOTYlQjQlRUIlOEYlODQlMjAlRUMlQjQlODglRUElQjglQjAlMjAlRUMlODQlQTQlRUElQjMlODQlRUElQjAlODAlMjAlRUQlODUlOEMlRUMlOEElQTQlRUQlOEElQjglMjAlRUMlOUElQTklRUMlOUQlQjQlRUMlODQlQjElRUMlOTclOTAlMjAlRUQlODElQjAlMjAlRUMlOTglODElRUQlOTYlQTUlRUMlOUQlODQlMjAlRUIlQUYlQjglRUMlQjklQTklRUIlOEIlODglRUIlOEIlQTQuJTIyJTdEJTVEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmhlYWRpbmclMjIlMkMlMjJsZXZlbCUyMiUzQTMlMkMlMjJjaGlsZHJlbiUyMiUzQSU1QiU3QiUyMnRleHQlMjIlM0ElMjIxLiUyMCVFQiVBQyVCOCVFQyVBMCU5QyVFQyU5RCU5OCUyMCVFQyVBMSVCMCVFQSVCOCVCMCUyMCVFQiVCMCU5QyVFQSVCMiVBQyVFQSVCMyVCQyUyMCVFQiVCOSU4NCVFQyU5QSVBOSUyMCVFQyVBMCU4OCVFQSVCMCU5MCUyMiU3RCU1RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJwJTIyJTJDJTIyY2hpbGRyZW4lMjIlM0ElNUIlN0IlMjJ0ZXh0JTIyJTNBJTIyJUVEJTg1JThDJUVDJThBJUE0JUVEJThBJUI4JTIwJUVBJUIwJTgwJUVCJThBJUE1JUVDJTg0JUIxJUVDJTlEJTg0JTIwJUVBJUIzJUEwJUVCJUEwJUE0JUVEJTk1JTlDJTIwJUVDJTg0JUE0JUVBJUIzJTg0JUVCJThBJTk0JTIwJUVDJTlFJUEwJUVDJTlFJUFDJUVDJUEwJTgxJUVDJTlEJUI4JTIwJUVCJUFDJUI4JUVDJUEwJTlDJUVCJUE1JUJDJTIwJUVBJUIwJTlDJUVCJUIwJTlDJTIwJUVDJUI0JTg4JUVBJUI4JUIwJTIwJUVCJThCJUE4JUVBJUIzJTg0JUVDJTk3JTkwJUVDJTg0JTlDJTIwJUVCJUIwJTlDJUVBJUIyJUFDJUVEJTk1JUEwJTIwJUVDJTg4JTk4JTIwJUVDJTlFJTg4JUVCJThGJTg0JUVCJUExJTlEJTIwJUVCJThGJTk1JUVDJThBJUI1JUVCJThCJTg4JUVCJThCJUE0LiUyMCVFQyU5OCU4OCVFQiVBNSVCQyUyMCVFQiU5MyVBNCVFQyU5NiVCNCUyQyUyMCVFRCU4QSVCOSVFQyVBMCU5NSUyMCVFQiVBQSVBOCVFQiU5MyU4OCVFQyU5RCVCNCUyMCVFQiU4NCU4OCVFQiVBQyVCNCUyMCVFQiVCMyVCNSVFQyU5RSVBMSVFRCU5NSU5OCVFQSVCMiU4QyUyMCVFQyU5NiVCRCVFRCU5OCU4MCUyMCVFQyU5RSU4OCVFQyU5NiVCNCUyMCVFRCU4NSU4QyVFQyU4QSVBNCVFRCU4QSVCOCVFRCU5NSU5OCVFQSVCOCVCMCUyMCVFQyU5NiVCNCVFQiVBMCVCNSVFQiU4QiVBNCVFQiU4QSU5NCUyMCVFQSVCMiU4MyVFQyU5RCU4NCUyMCVFQyU4NCVBNCVFQSVCMyU4NCUyMCVFQiU4QiVBOCVFQSVCMyU4NCVFQyU5NyU5MCVFQyU4NCU5QyUyMCVFRCU4QyU4QyVFQyU5NSU4NSVFRCU5NSU5OCVFQiVBOSVCNCUyQyUyMCVFQyU5RCVCNCVFQiVBNSVCQyUyMCVFQiU4RCU5NCUyMCVFQyU5RSU5MSVFQSVCMyVBMCUyMCVFQiU4RiU4NSVFQiVBNiVCRCVFQyVBMCU4MSVFQyU5RCVCOCUyMCVFQiU4QiVBOCVFQyU5QyU4NCVFQiVBMSU5QyUyMCVFQiVCNiU4NCVFQiVBNiVBQyVFRCU5NSU5OCVFQyU5NyVBQyUyMCVFQyU4NCVBNCVFQSVCMyU4NCVFRCU5NSVBMCUyMCVFQyU4OCU5OCUyMCVFQyU5RSU4OCVFQyU4QSVCNSVFQiU4QiU4OCVFQiU4QiVBNC4lMjAlRUMlOUQlQjQlRUIlQTAlODclRUElQjIlOEMlMjAlRUQlOTUlOTglRUIlQTklQjQlMjAlRUIlODIlOTglRUMlQTQlOTElRUMlOTclOTAlMjAlRUMlQkQlOTQlRUIlOTMlOUMlRUIlQTUlQkMlMjAlRUIlOEIlQTQlMjAlRUMlOUUlOTElRUMlODQlQjElRUQlOTUlOUMlMjAlRUQlOUIlODQlRUMlOTclOTAlMjAlRUIlQUMlQjglRUMlQTAlOUMlRUIlQTUlQkMlMjAlRUIlQjAlOUMlRUElQjIlQUMlRUQlOTUlOTglRUMlOTclQUMlMjAlRUMlODglOTglRUMlQTAlOTUlRUQlOTUlOTglRUIlOEElOTQlMjAlRUElQjIlODMlRUIlQjMlQjQlRUIlOEIlQTQlMjAlRUQlOUIlQTglRUMlOTQlQUMlMjAlRUMlQTAlODElRUMlOUQlODAlMjAlRUIlQjklODQlRUMlOUElQTklRUElQjMlQkMlMjAlRUIlODUlQjglRUIlQTAlQTUlRUMlOUMlQkMlRUIlQTElOUMlMjAlRUQlOTUlQjQlRUElQjIlQjAlRUQlOTUlQTAlMjAlRUMlODglOTglMjAlRUMlOUUlODglRUMlOEElQjUlRUIlOEIlODglRUIlOEIlQTQuJTIwJUVCJUE3JTg4JUVDJUI5JTk4JTIwJUVCJUEwJTg4JUVBJUIzJUEwJTIwJUVCJUI4JTk0JUVCJUExJTlEJUVDJTlEJTg0JTIwJUVDJUExJUIwJUVCJUE2JUJEJUVEJTk1JTk4JUVBJUI4JUIwJTIwJUVDJUEwJTg0JUVDJTk3JTkwJTIwJUVDJTk2JUI0JUVCJTk2JUE0JTIwJUVCJUI4JTk0JUVCJUExJTlEJUVDJTlEJUI0JTIwJUVDJTg0JTlDJUVCJUExJTlDJTIwJUVDJTlFJTk4JTIwJUVCJUE3JTlFJUVBJUIzJUEwJTIwJUVCJUI2JTg0JUVCJUE2JUFDJUVEJTk1JTk4JUVBJUI4JUIwJTIwJUVDJTg5JUFDJUVDJTlBJUI0JUVDJUE3JTgwJTIwJUVCJUFGJUI4JUVCJUE2JUFDJTIwJUVEJTk5JTk1JUVDJTlEJUI4JUVEJTk1JTk4JUVCJThBJTk0JTIwJUVBJUIyJTgzJUVBJUIzJUJDJTIwJUVBJUIwJTk5JUVDJThBJUI1JUVCJThCJTg4JUVCJThCJUE0LiUyMiU3RCU1RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJoZWFkaW5nJTIyJTJDJTIybGV2ZWwlMjIlM0EzJTJDJTIyY2hpbGRyZW4lMjIlM0ElNUIlN0IlMjJ0ZXh0JTIyJTNBJTIyMi4lMjAlRUQlODUlOEMlRUMlOEElQTQlRUQlOEElQjglMjAlRUMlOUUlOTAlRUIlOEYlOTklRUQlOTklOTQlRUMlOUQlOTglMjAlRUMlOUElQTklRUMlOUQlQjQlRUMlODQlQjElMjIlN0QlNUQlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIycCUyMiUyQyUyMmNoaWxkcmVuJTIyJTNBJTVCJTdCJTIydGV4dCUyMiUzQSUyMiVFRCU4NSU4QyVFQyU4QSVBNCVFRCU4QSVCOCUyMCVFQSVCMCU4MCVFQiU4QSVBNSVFQyU4NCVCMSVFQyU5RCVCNCUyMCVFQiU4NiU5MiVFQyU5RCU4MCUyMCVFQyU4NiU4QyVFRCU5NCU4NCVFRCU4QSVCOCVFQyU5QiVBOCVFQyU5NiVCNCVFQiU4QSU5NCUyMCVFRCU4NSU4QyVFQyU4QSVBNCVFRCU4QSVCOCUyMCVFQyU5RSU5MCVFQiU4RiU5OSVFRCU5OSU5NCVFQyU5NyU5MCVFQiU4RiU4NCUyMCVFQyU5QyVBMCVFQiVBNiVBQyVFRCU5NSVBOSVFQiU4QiU4OCVFQiU4QiVBNC4lMjAlRUElQjAlODElMjAlRUElQjglQjAlRUIlOEElQTUlRUMlOUQlQjQlMjAlRUIlOEYlODUlRUIlQTYlQkQlRUMlQTAlODElRUMlOUMlQkMlRUIlQTElOUMlMjAlRUMlOUUlOTElRUIlOEYlOTklRUQlOTUlOTglRUElQjMlQTAlMkMlMjAlRUMlOTklQjglRUIlQjYlODAlRUMlOTklODAlRUMlOUQlOTglMjAlRUMlOUQlOTglRUMlQTElQjQlRUMlODQlQjElRUMlOUQlQjQlMjAlRUIlQUElODUlRUQlOTklOTUlRUQlOTUlOTglRUElQjIlOEMlMjAlRUIlQjYlODQlRUIlQTYlQUMlRUIlOTAlOTglRUMlOTYlQjQlMjAlRUMlOUUlODglRUIlOEIlQTQlRUIlQTklQjQlMkMlMjAlRUMlOUUlOTAlRUIlOEYlOTklRUQlOTklOTQlRUIlOTAlOUMlMjAlRUQlODUlOEMlRUMlOEElQTQlRUQlOEElQjglMjAlRUMlQkQlOTQlRUIlOTMlOUMlRUIlQTUlQkMlMjAlRUMlOUUlOTElRUMlODQlQjElRUQlOTUlOTglRUElQjglQjAlRUElQjAlODAlMjAlRUQlOUIlQTglRUMlOTQlQUMlMjAlRUMlODglOTglRUMlOUIlOTQlRUQlOTUlQjQlRUMlQTclOTElRUIlOEIlODglRUIlOEIlQTQuJTIwJUVDJTlEJUI0JUVCJThBJTk0JTIwJUVCJUE3JTg4JUVDJUI5JTk4JTIwJUVBJUIwJTgxJTIwJUVCJUI2JTgwJUVEJTkyJTg4JUVDJTlEJUI0JTIwJUVCJUFBJTg1JUVEJTk5JTk1JUVEJTk1JTk4JUVBJUIyJThDJTIwJUVCJUI2JTg0JUVCJUE2JUFDJUVCJTkwJTk4JUVCJThBJTk0JTIwJUVCJUEwJTg4JUVBJUIzJUEwJTIwJUVCJUI4JTk0JUVCJUExJTlEJUVDJTlDJUJDJUVCJUExJTlDJTIwJUVCJUE3JThDJUVCJTkzJUEwJTIwJUVDJTlFJUE1JUVCJTgyJTlDJUVBJUIwJTkwJUVDJTlEJUI0JTJDJTIwJUVDJTlCJTkwJUVEJTk1JTk4JUVCJThBJTk0JTIwJUVCJUI2JTgwJUVCJUI2JTg0JUVCJUE3JThDJTIwJUVCJTk2JUJDJUVDJTk2JUI0JUVCJTgyJUI0JUVDJTk2JUI0JTIwJUVCJThCJUE0JUVCJUE1JUI4JTIwJUVCJUI2JTgwJUVEJTkyJTg4JUVDJTlDJUJDJUVCJUExJTlDJTIwJUVBJUI1JTkwJUVDJUIyJUI0JUVEJTk1JTk4JUVBJUIxJUIwJUVCJTgyJTk4JTIwJUVEJTg1JThDJUVDJThBJUE0JUVEJThBJUI4JUVEJTk1JTk4JUVBJUI4JUIwJTIwJUVDJTg5JUFDJUVDJTlBJUI0JTIwJUVBJUIyJTgzJUVBJUIzJUJDJTIwJUVBJUIwJTk5JUVDJThBJUI1JUVCJThCJTg4JUVCJThCJUE0LiUyMCVFQyU5RSU5MCVFQiU4RiU5OSVFRCU5OSU5NCVFQiU5MCU5QyUyMCVFRCU4NSU4QyVFQyU4QSVBNCVFRCU4QSVCOCVFQiU4QSU5NCUyMCVFQiVCOSVBMCVFQiVBNSVCOCUyMCVFRCU5NCVCQyVFQiU5MyU5QyVFQiVCMCVCMSVFQyU5RCU4NCUyMCVFQyVBMCU5QyVFQSVCMyVCNSVFRCU5NSU5OCVFQSVCMyVBMCUyQyUyMCVFRCU5QSU4QyVFQSVCNyU4MCUyMCVFRCU4NSU4QyVFQyU4QSVBNCVFRCU4QSVCOChSZWdyZXNzaW9uJTIwVGVzdCklMjAlRUIlQjklODQlRUMlOUElQTklRUMlOUQlODQlMjAlRUMlQTAlODglRUElQjAlOTAlRUQlOTUlOTglRUMlOTclQUMlMjAlRUElQjAlOUMlRUIlQjAlOUMlMjAlRUMlODYlOEQlRUIlOEYlODQlRUIlQTUlQkMlMjAlRUIlODYlOTIlRUMlOUQlQjQlRUIlOEElOTQlMjAlRUIlOEQlQjAlMjAlRUElQjglQjAlRUMlOTclQUMlRUQlOTUlQTklRUIlOEIlODglRUIlOEIlQTQuJTIyJTdEJTVEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmhlYWRpbmclMjIlMkMlMjJsZXZlbCUyMiUzQTMlMkMlMjJjaGlsZHJlbiUyMiUzQSU1QiU3QiUyMnRleHQlMjIlM0ElMjIzLiUyMCVFQyU5QyVBMCVFQyVBNyU4MCVFQiVCMyVCNCVFQyU4OCU5OCUyMCVFQiVCMCU4RiUyMCVFRCU5OSU5NSVFQyU5RSVBNSVFQyU4NCVCMSVFQyU5RCU5OCUyMCVFRCU5NiVBNSVFQyU4MyU4MSUyMiU3RCU1RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJwJTIyJTJDJTIyY2hpbGRyZW4lMjIlM0ElNUIlN0IlMjJ0ZXh0JTIyJTNBJTIyJUVEJTg1JThDJUVDJThBJUE0JUVEJThBJUI4JUVEJTk1JTk4JUVBJUI4JUIwJTIwJUVDJTg5JUFDJUVDJTlBJUI0JTIwJUVDJUJEJTk0JUVCJTkzJTlDJUVCJThBJTk0JTIwJUVDJTlEJUJDJUVCJUIwJTk4JUVDJUEwJTgxJUVDJTlDJUJDJUVCJUExJTlDJTIwJUVDJTlDJUEwJUVDJUE3JTgwJUVCJUIzJUI0JUVDJTg4JTk4JTIwJUVCJUIwJThGJTIwJUVEJTk5JTk1JUVDJTlFJUE1JUVDJTg0JUIxJUVCJThGJTg0JTIwJUVCJTlCJUIwJUVDJTk2JUI0JUVCJTgyJUE5JUVCJThCJTg4JUVCJThCJUE0LiUyMCVFRCU4NSU4QyVFQyU4QSVBNCVFRCU4QSVCOCUyMCVFQSVCMCU4MCVFQiU4QSVBNSVFQyU4NCVCMSVFQyU5RCU4NCUyMCVFQiU4NiU5MiVFQyU5RCVCNCVFQSVCOCVCMCUyMCVFQyU5QyU4NCVFRCU5NSVCNCUyMCVFQyVCRCU5NCVFQiU5MyU5QyVFQiVBNSVCQyUyMCVFQiVBQSVBOCVFQiU5MyU4OCVFRCU5OSU5NCVFRCU5NSU5OCVFQSVCMyVBMCUyQyUyMCVFQSVCMCU4MSUyMCVFQiVBQSVBOCVFQiU5MyU4OCVFQyU5RCU5OCUyMCVFQyU5NyVBRCVFRCU5NSVBMCVFQyU5RCU4NCUyMCVFQiVBQSU4NSVFRCU5OSU5NSVFRCU5RSU4OCUyMCVFRCU5NSU5OCVFQiVBOSVCMCUyQyUyMCVFQyU5RCU5OCVFQyVBMSVCNCVFQyU4NCVCMSVFQyU5RCU4NCUyMCVFQyVBNCU4NCVFQyU5RCVCNCVFQiU4QSU5NCUyMCVFQSVCMyVCQyVFQyVBMCU5NSVFQyU5RCU4MCUyMCVFQyU5RSU5MCVFQyU5NyVCMCVFQyU4QSVBNCVFQiU5RiVCRCVFQSVCMiU4QyUyMCVFQyVCRCU5NCVFQiU5MyU5QyVFQyU5RCU5OCUyMCVFQSVCMCU4MCVFQiU4RiU4NSVFQyU4NCVCMSVFQSVCMyVCQyUyMCVFQyU5RSVBQyVFQyU4MiVBQyVFQyU5QSVBOSVFQyU4NCVCMSVFQyU5RCU4NCUyMCVFQiU4NiU5MiVFQyU5RCVCNCVFQSVCOCVCMCUyMCVFQiU5NSU4QyVFQiVBQyVCOCVFQyU5RSU4NSVFQiU4QiU4OCVFQiU4QiVBNC4lMjAlRUMlOUQlQjQlRUIlOEElOTQlMjAlRUIlQTclODglRUMlQjklOTglMjAlRUMlOUUlOTglMjAlRUMlQTAlOTUlRUIlQTYlQUMlRUIlOTAlOUMlMjAlRUIlOEYlODQlRUElQjUlQUMlMjAlRUMlODMlODElRUMlOUUlOTAlRUMlOTclOTAlRUMlODQlOUMlMjAlRUQlOTUlODQlRUMlOUElOTQlRUQlOTUlOUMlMjAlRUIlOEYlODQlRUElQjUlQUMlRUIlQTUlQkMlMjAlRUMlODklQkQlRUElQjIlOEMlMjAlRUMlQjAlQkUlRUMlOTUlODQlMjAlRUMlODIlQUMlRUMlOUElQTklRUQlOTUlQTAlMjAlRUMlODglOTglMjAlRUMlOUUlODglRUElQjMlQTAlMkMlMjAlRUMlODMlODglRUIlQTElOUMlRUMlOUElQjQlMjAlRUIlOEYlODQlRUElQjUlQUMlRUIlQTUlQkMlMjAlRUMlQjYlOTQlRUElQjAlODAlRUQlOTUlOTglRUElQjglQjAlRUIlOEYlODQlMjAlRUMlODklQUMlRUMlOUElQjQlMjAlRUElQjIlODMlRUElQjMlQkMlMjAlRUElQjAlOTklRUMlOEElQjUlRUIlOEIlODglRUIlOEIlQTQuJTIyJTdEJTVEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmhlYWRpbmclMjIlMkMlMjJsZXZlbCUyMiUzQTIlMkMlMjJjaGlsZHJlbiUyMiUzQSU1QiU3QiUyMnRleHQlMjIlM0ElMjIlRUQlODUlOEMlRUMlOEElQTQlRUQlOEElQjglMjAlRUElQjAlODAlRUIlOEElQTUlRUMlODQlQjElRUMlOUQlODQlMjAlRUMlODQlQTQlRUElQjMlODQlRUMlOTclOTAlMjAlRUMlOEIlQUMlRUIlOEElOTQlMjAlRUElQjUlQUMlRUMlQjIlQjQlRUMlQTAlODElRUMlOUQlQjglMjAlRUIlQjAlQTklRUIlQjIlOTUlMjIlN0QlNUQlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIycCUyMiUyQyUyMmNoaWxkcmVuJTIyJTNBJTVCJTdCJTIydGV4dCUyMiUzQSUyMiVFQSVCNyVCOCVFQiVBMCU4NyVFQiU4QiVBNCVFQiVBOSVCNCUyMCVFQSVCOCVCMCVFRCU5QSU4RCVFQSVCMyVCQyUyMCVFQyU4NCVBNCVFQSVCMyU4NCUyMCVFQiU4QiVBOCVFQSVCMyU4NCVFQyU5NyU5MCVFQyU4NCU5QyUyMCVFRCU4NSU4QyVFQyU4QSVBNCVFRCU4QSVCOCUyMCVFQSVCMCU4MCVFQiU4QSVBNSVFQyU4NCVCMSVFQyU5RCU4NCUyMCVFQiU4NiU5MiVFQyU5RCVCNCVFQSVCOCVCMCUyMCVFQyU5QyU4NCVFRCU5NSVCNCUyMCVFQSVCNSVBQyVFQyVCMiVCNCVFQyVBMCU4MSVFQyU5QyVCQyVFQiVBMSU5QyUyMCVFQyU5NiVCNCVFQiU5NiVBNCUyMCVFQiU4NSVCOCVFQiVBMCVBNSVFQyU5RCU4NCUyMCVFRCU5NSVCNCVFQyU5NSVCQyUyMCVFRCU5NSVBMCVFQSVCOSU4QyVFQyU5QSU5NCUzRiUyMiU3RCU1RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJoZWFkaW5nJTIyJTJDJTIybGV2ZWwlMjIlM0EzJTJDJTIyY2hpbGRyZW4lMjIlM0ElNUIlN0IlMjJ0ZXh0JTIyJTNBJTIyMS4lMjAlRUIlQUElQTglRUIlOTMlODglRUQlOTklOTQlMjAlRUIlQjAlOEYlMjAlRUIlODIlQUUlRUMlOUQlODAlMjAlRUElQjIlQjAlRUQlOTUlQTklRUIlOEYlODQlMjAlRUMlOUMlQTAlRUMlQTclODAlMjIlN0QlNUQlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIycCUyMiUyQyUyMmNoaWxkcmVuJTIyJTNBJTVCJTdCJTIydGV4dCUyMiUzQSUyMiVFQyU4NiU4QyVFRCU5NCU4NCVFRCU4QSVCOCVFQyU5QiVBOCVFQyU5NiVCNCVFQiVBNSVCQyUyMCVFQyU5RSU5MSVFQSVCMyVBMCUyMCVFQiU4RiU4NSVFQiVBNiVCRCVFQyVBMCU4MSVFQyU5RCVCOCUyMCVFQiVBQSVBOCVFQiU5MyU4OCVFQiVBMSU5QyUyMCVFQiU4MiU5OCVFQiU4OCU4NCVFQSVCMyVBMCUyQyUyMCVFQSVCMCU4MSUyMCVFQiVBQSVBOCVFQiU5MyU4OCUyMCVFQSVCMCU4NCVFQyU5RCU5OCUyMCVFQyU5RCU5OCVFQyVBMSVCNCVFQyU4NCVCMSVFQyU5RCU4NCUyMCVFQyVCNSU5QyVFQyU4NiU4QyVFRCU5OSU5NCVFRCU5NSVCNCVFQyU5NSVCQyUyMCVFRCU5NSVBOSVFQiU4QiU4OCVFQiU4QiVBNC4lMjAlRUIlQTclODglRUMlQjklOTglMjAlRUIlQTAlODglRUElQjMlQTAlMjAlRUIlQjglOTQlRUIlQTElOUQlRUMlQjIlOTglRUIlOUYlQkMlMkMlMjAlRUElQjAlODElMjAlRUIlQjglOTQlRUIlQTElOUQlRUMlOUQlQjQlMjAlRUIlOEYlODUlRUIlQTYlQkQlRUMlQTAlODElRUMlOUQlQjglMjAlRUElQjglQjAlRUIlOEElQTUlRUMlOUQlODQlMjAlRUMlODglOTglRUQlOTYlODklRUQlOTUlOTglRUElQjMlQTAlMjAlRUIlOEIlQTQlRUIlQTUlQjglMjAlRUIlQjglOTQlRUIlQTElOUQlRUMlOTclOTAlMjAlRUIlQUYlQjglRUMlQjklOTglRUIlOEElOTQlMjAlRUMlOTglODElRUQlOTYlQTUlRUMlOUQlQjQlMjAlRUMlQTAlODElRUMlOUQlODQlRUMlODglOTglRUIlQTElOUQlMjAlRUQlODUlOEMlRUMlOEElQTQlRUQlOEElQjglRUQlOTUlOTglRUElQjglQjAlMjAlRUMlODklQkQlRUMlOEElQjUlRUIlOEIlODglRUIlOEIlQTQuJTIwJUVEJThBJUI5JUVDJUEwJTk1JTIwJUVCJUFBJUE4JUVCJTkzJTg4JUVDJTlEJTg0JTIwJUVEJTg1JThDJUVDJThBJUE0JUVEJThBJUI4JUVEJTk1JUEwJTIwJUVCJTk1JThDJTIwJUVCJThCJUE0JUVCJUE1JUI4JTIwJUVCJUFBJUE4JUVCJTkzJTg4JUVDJTlEJTk4JTIwJUVDJTk4JTgxJUVEJTk2JUE1JUVDJTlEJTg0JTIwJUVCJUIwJTlCJUVDJUE3JTgwJTIwJUVDJTk1JThBJUVCJThGJTg0JUVCJUExJTlEJTIwJUVDJTg0JUE0JUVBJUIzJTg0JUVEJTk1JTk4JUVCJThBJTk0JTIwJUVBJUIyJTgzJUVDJTlEJUI0JTIwJUVDJUE0JTkxJUVDJTlBJTk0JUVEJTk1JUE5JUVCJThCJTg4JUVCJThCJUE0LiUyMiU3RCU1RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJoZWFkaW5nJTIyJTJDJTIybGV2ZWwlMjIlM0EzJTJDJTIyY2hpbGRyZW4lMjIlM0ElNUIlN0IlMjJ0ZXh0JTIyJTNBJTIyMi4lMjAlRUIlQUElODUlRUQlOTklOTUlRUQlOTUlOUMlMjAlRUMlOUQlQjglRUQlODQlQjAlRUQlOEUlOTglRUMlOUQlQjQlRUMlOEElQTQlMjAlRUMlQTAlOUMlRUElQjMlQjUlMjIlN0QlNUQlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIycCUyMiUyQyUyMmNoaWxkcmVuJTIyJTNBJTVCJTdCJTIydGV4dCUyMiUzQSUyMiVFQSVCMCU4MSUyMCVFQiVBQSVBOCVFQiU5MyU4OCVFQyU5RCVCNCVFQiU4MiU5OCUyMCVFQyVCQiVCNCVFRCU4RiVBQyVFQiU4NCU4QyVFRCU4QSVCOCVFQSVCMCU4MCUyMCVFQyU5OSVCOCVFQiVCNiU4MCVFQyU5OSU4MCUyMCVFQyU4MyU4MSVFRCU5OCVCOCVFQyU5RSU5MSVFQyU5QSVBOSVFRCU5NSU5OCVFQiU4QSU5NCUyMCVFQiVCMCVBOSVFQyU4QiU5RCVFQyU5RCU4NCUyMCVFQiVBQSU4NSVFRCU5OSU5NSVFRCU5NSU5OCVFQSVCMiU4QyUyMCVFQyVBMCU5NSVFQyU5RCU5OCVFRCU5NSU5OCVFQiU4QSU5NCUyMCVFQyU5RCVCOCVFRCU4NCVCMCVFRCU4RSU5OCVFQyU5RCVCNCVFQyU4QSVBNCVFQiVBNSVCQyUyMCVFQyVBMCU5QyVFQSVCMyVCNSVFRCU5NSVCNCVFQyU5NSVCQyUyMCVFRCU5NSVBOSVFQiU4QiU4OCVFQiU4QiVBNC4lMjAlRUMlOUQlQjQlRUIlOEElOTQlMjAlRUIlQTclODglRUMlQjklOTglMjAlRUElQjElQjQlRUIlQUMlQkMlRUMlOUQlOTglMjAlRUElQjAlODElMjAlRUIlQjAlQTklRUMlOTclOTAlMjAlRUMlOTYlQjQlRUIlOTYlQTQlMjAlRUElQjglQjAlRUIlOEElQTUlRUMlOUQlQjQlMjAlRUMlOUUlODglRUElQjMlQTAlMkMlMjAlRUMlOTYlQjQlRUIlOTYlQkIlRUElQjIlOEMlMjAlRUMlODIlQUMlRUMlOUElQTklRUQlOTUlQjQlRUMlOTUlQkMlMjAlRUQlOTUlOTglRUIlOEElOTQlRUMlQTclODAlMjAlRUIlQUElODUlRUQlOTklOTUlRUQlOTUlOUMlMjAlRUMlOTUlODglRUIlODIlQjQlRUQlOEMlOTAlRUMlOUQlQjQlMjAlRUIlQjYlOTklRUMlOTYlQjQlRUMlOUUlODglRUIlOEElOTQlMjAlRUElQjIlODMlRUElQjMlQkMlMjAlRUElQjAlOTklRUMlOEElQjUlRUIlOEIlODglRUIlOEIlQTQuJTIwJUVCJUFBJTg1JUVEJTk5JTk1JUVEJTk1JTlDJTIwJUVDJTlEJUI4JUVEJTg0JUIwJUVEJThFJTk4JUVDJTlEJUI0JUVDJThBJUE0JUVCJThBJTk0JTIwJUVEJTg1JThDJUVDJThBJUE0JUVEJThBJUI4JTIwJUVDJUJEJTk0JUVCJTkzJTlDJUVBJUIwJTgwJTIwJUVEJTk1JUI0JUVCJThCJUI5JTIwJUVCJUFBJUE4JUVCJTkzJTg4JUVDJTlEJTg0JTIwJUVDJTg5JUJEJUVBJUIyJThDJTIwJUVEJTk4JUI4JUVDJUI2JTlDJUVEJTk1JTk4JUVBJUIzJUEwJTJDJTIwJUVDJTlFJTg1JUVCJUEwJUE1JUVBJUIwJTkyJUVDJTlEJTg0JTIwJUVDJUEwJTg0JUVCJThCJUFDJUVEJTk1JTk4JUVCJUE5JUIwJTJDJTIwJUVDJUI2JTlDJUVCJUEwJUE1JUVBJUIwJTkyJUVDJTlEJTg0JTIwJUVEJTk5JTk1JUVDJTlEJUI4JUVEJTk1JUEwJTIwJUVDJTg4JTk4JTIwJUVDJTlFJTg4JUVCJThGJTg0JUVCJUExJTlEJTIwJUVCJThGJTk1JUVDJThBJUI1JUVCJThCJTg4JUVCJThCJUE0LiUyMiU3RCU1RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJoZWFkaW5nJTIyJTJDJTIybGV2ZWwlMjIlM0EzJTJDJTIyY2hpbGRyZW4lMjIlM0ElNUIlN0IlMjJ0ZXh0JTIyJTNBJTIyMy4lMjAlRUElQjQlODAlRUMlQjAlQjAlMjAlRUElQjAlODAlRUIlOEElQTUlRUMlODQlQjEoT2JzZXJ2YWJpbGl0eSklMjAlRUQlOTklOTUlRUIlQjMlQjQlMjIlN0QlNUQlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIycCUyMiUyQyUyMmNoaWxkcmVuJTIyJTNBJTVCJTdCJTIydGV4dCUyMiUzQSUyMiVFQyU4NiU4QyVFRCU5NCU4NCVFRCU4QSVCOCVFQyU5QiVBOCVFQyU5NiVCNCVFQyU5RCU5OCUyMCVFQiU4MiVCNCVFQiVCNiU4MCUyMCVFQyU4MyU4MSVFRCU4MyU5QyVFQiVBNSVCQyUyMCVFQyU4OSVCRCVFQSVCMiU4QyUyMCVFQSVCNCU4MCVFQyVCMCVCMCVFRCU5NSVBMCUyMCVFQyU4OCU5OCUyMCVFQyU5RSU4OCVFQiU4RiU4NCVFQiVBMSU5RCUyMCVFQiVBMSU5QyVFQSVCNyVCOCUyQyUyMCVFQiVBOSU5NCVFRCU4QSVCOCVFQiVBNiVBRCUyQyUyMCVFRCU4QSVCOCVFQiVBMCU4OCVFQyU5RCVCNCVFQyU4QSVBNCUyMCVFQiU5MyVCMSVFQyU5RCU5OCUyMCVFQyVBMCU5NSVFQiVCMyVCNCVFQiVBNSVCQyUyMCVFQyVCNiVBOSVFQiVCNiU4NCVFRCU5RSU4OCUyMCVFQyVBMCU5QyVFQSVCMyVCNSVFRCU5NSVCNCVFQyU5NSVCQyUyMCVFRCU5NSVBOSVFQiU4QiU4OCVFQiU4QiVBNC4lMjAlRUMlQTclODAlRUIlODIlOUMlMjAlRUMlOTclQjAlRUMlOUUlQUMlRUMlOTclOTAlRUMlODQlOUMlMjAlRUIlOEIlQTQlRUIlQTMlQTglRUMlOTclODglRUIlOEQlOTglMjAlRUElQjQlODAlRUMlQjglQTElRUMlODQlQjEoT2JzZXJ2YWJpbGl0eSklRUElQjMlQkMlMjAlRUMlOUQlQkMlRUIlQTclQTUlRUMlODMlODElRUQlODYlQjUlRUQlOTUlOTglRUIlOEElOTQlMjAlRUIlQjYlODAlRUIlQjYlODQlRUMlOUUlODUlRUIlOEIlODglRUIlOEIlQTQuJTIwJUVCJUE3JTg4JUVDJUI5JTk4JTIwJUVBJUIxJUI0JUVCJUFDJUJDJTIwJUVBJUIzJUIzJUVBJUIzJUIzJUVDJTk3JTkwJTIwJUVDJTg0JUE0JUVDJUI5JTk4JUVCJTkwJTlDJTIwJUVDJTg0JUJDJUVDJTg0JTlDJUVDJTk5JTgwJTIwJUVCJUFBJUE4JUVCJThCJTg4JUVEJTg0JUIwJUVCJUE3JTgxJTIwJUVDJThCJTlDJUVDJThBJUE0JUVEJTg1JTlDJUVDJTlEJUI0JTIwJUVBJUIxJUI0JUVCJUFDJUJDJUVDJTlEJTk4JTIwJUVDJTgzJTgxJUVEJTgzJTlDJUVCJUE1JUJDJTIwJUVDJThCJUE0JUVDJThCJTlDJUVBJUIwJTg0JUVDJTlDJUJDJUVCJUExJTlDJTIwJUVCJUIzJUI0JUVDJTk3JUFDJUVDJUEzJUJDJUVCJTkzJUFGJUVDJTlEJUI0JTJDJTIwJUVDJTg2JThDJUVEJTk0JTg0JUVEJThBJUI4JUVDJTlCJUE4JUVDJTk2JUI0JUVCJThGJTg0JTIwJUVCJTgyJUI0JUVCJUI2JTgwJTIwJUVCJThGJTk5JUVDJTlFJTkxJUVDJTlEJTg0JTIwJUVEJTg4JUFDJUVCJUFBJTg1JUVEJTk1JTk4JUVBJUIyJThDJTIwJUVCJUIzJUI0JUVDJTk3JUFDJUVDJUE0JTg0JTIwJUVDJTg4JTk4JTIwJUVDJTlFJTg4JUVDJTk2JUI0JUVDJTk1JUJDJTIwJUVEJTg1JThDJUVDJThBJUE0JUVEJThBJUI4JTIwJUVDJUE0JTkxJTIwJUVCJUIwJTlDJUVDJTgzJTlEJUVEJTk1JTk4JUVCJThBJTk0JTIwJUVCJUFDJUI4JUVDJUEwJTlDJUVCJUE1JUJDJTIwJUVDJUEwJTk1JUVEJTk5JTk1JUVEJTk1JTk4JUVBJUIyJThDJTIwJUVEJThDJThDJUVDJTk1JTg1JUVEJTk1JUEwJTIwJUVDJTg4JTk4JTIwJUVDJTlFJTg4JUVDJThBJUI1JUVCJThCJTg4JUVCJThCJUE0LiUyMiU3RCU1RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJoZWFkaW5nJTIyJTJDJTIybGV2ZWwlMjIlM0EzJTJDJTIyY2hpbGRyZW4lMjIlM0ElNUIlN0IlMjJ0ZXh0JTIyJTNBJTIyNC4lMjAlRUMlQTAlOUMlRUMlOTYlQjQlMjAlRUElQjAlODAlRUIlOEElQTUlRUMlODQlQjEoQ29udHJvbGxhYmlsaXR5KSUyMCVFRCU5OSU5NSVFQiVCMyVCNCUyMiU3RCU1RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJwJTIyJTJDJTIyY2hpbGRyZW4lMjIlM0ElNUIlN0IlMjJ0ZXh0JTIyJTNBJTIyJUVEJTg1JThDJUVDJThBJUE0JUVEJThBJUI4JUVCJUE1JUJDJTIwJUVDJTlDJTg0JUVEJTk1JUI0JTIwJUVDJTg2JThDJUVEJTk0JTg0JUVEJThBJUI4JUVDJTlCJUE4JUVDJTk2JUI0JUVDJTlEJTk4JTIwJUVEJThBJUI5JUVDJUEwJTk1JTIwJUVDJTgzJTgxJUVEJTgzJTlDJUVCJUE1JUJDJTIwJUVDJTg5JUJEJUVBJUIyJThDJTIwJUVDJTg0JUE0JUVDJUEwJTk1JUVEJTk1JTk4JUVBJUIzJUEwJTIwJUVDJUEwJTlDJUVDJTk2JUI0JUVEJTk1JUEwJTIwJUVDJTg4JTk4JTIwJUVDJTlFJTg4JUVDJTk2JUI0JUVDJTk1JUJDJTIwJUVEJTk1JUE5JUVCJThCJTg4JUVCJThCJUE0LiUyMCVFQyU5OCU4OCVFQiVBNSVCQyUyMCVFQiU5MyVBNCVFQyU5NiVCNCUyQyUyMCVFRCU4QSVCOSVFQyVBMCU5NSUyMCVFQyU4QiU5QyVFQiU4MiU5OCVFQiVBNiVBQyVFQyU5OCVBNCVFQiVBNSVCQyUyMCVFRCU4NSU4QyVFQyU4QSVBNCVFRCU4QSVCOCVFRCU5NSU5OCVFQSVCOCVCMCUyMCVFQyU5QyU4NCVFRCU5NSVCNCUyMCVFQiU4RCVCMCVFQyU5RCVCNCVFRCU4NCVCMCVFQiVCMiVBMCVFQyU5RCVCNCVFQyU4QSVBNCVFQyU5RCU5OCUyMCVFQyVCNCU4OCVFQSVCOCVCMCUyMCVFQyU4MyU4MSVFRCU4MyU5QyVFQiVBNSVCQyUyMCVFQyU4OSVCRCVFQSVCMiU4QyUyMCVFQiVBNyU4QyVFQiU5MyVBNCVFQSVCMSVCMCVFQiU4MiU5OCUyQyUyMCVFQyU5OSVCOCVFQiVCNiU4MCUyMCVFQyU4QiU5QyVFQyU4QSVBNCVFRCU4NSU5QyVFQSVCMyVCQyVFQyU5RCU5OCUyMCVFQyU5NyVCMCVFQiU4RiU5OSVFQyU5RCU4NCUyMCVFQiVBQSVBOCVFQyU5RCU5OChNb2NrKSVFRCU5NSVBMCUyMCVFQyU4OCU5OCUyMCVFQyU5RSU4OCVFQiU4QSU5NCUyMCVFQSVCOCVCMCVFQiU4QSVBNSVFQyU5RCU4NCUyMCVFQyVBMCU5QyVFQSVCMyVCNSVFRCU5NSU5OCVFQiU4QSU5NCUyMCVFQSVCMiU4MyVFQyU5RSU4NSVFQiU4QiU4OCVFQiU4QiVBNC4lMjAlRUMlOUQlQjQlRUIlOEElOTQlMjAlRUIlQTclODglRUMlQjklOTglMjAlRUIlQTAlODglRUElQjMlQTAlMjAlRUIlQjglOTQlRUIlQTElOUQlRUMlOUQlODQlMjAlRUMlQTElQjAlRUIlQTYlQkQlRUQlOTUlOTglRUElQjglQjAlMjAlRUMlQTAlODQlRUMlOTclOTAlMjAlRUMlOUIlOTAlRUQlOTUlOTglRUIlOEElOTQlMjAlRUMlODMlODklRUMlODMlODElRUElQjMlQkMlMjAlRUIlQUElQTglRUMlOTYlOTElRUMlOUQlOTglMjAlRUIlQjglOTQlRUIlQTElOUQlRUMlOUQlODQlMjAlRUIlQUYlQjglRUIlQTYlQUMlMjAlRUMlQTQlODAlRUIlQjklODQlRUQlOTUlQjQlRUIlOTElOTAlRUIlOEElOTQlMjAlRUElQjIlODMlRUElQjMlQkMlMjAlRUElQjAlOTklRUMlOEElQjUlRUIlOEIlODglRUIlOEIlQTQuJTIyJTdEJTVEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmhlYWRpbmclMjIlMkMlMjJsZXZlbCUyMiUzQTMlMkMlMjJjaGlsZHJlbiUyMiUzQSU1QiU3QiUyMnRleHQlMjIlM0ElMjI1LiUyMCVFRCU4NSU4QyVFQyU4QSVBNCVFRCU4QSVCOCUyMCVFQiU4RCVCMCVFQyU5RCVCNCVFRCU4NCVCMCUyMCVFQSVCNCU4MCVFQiVBNiVBQyUyMCVFQyU5QSVBOSVFQyU5RCVCNCVFQyU4NCVCMSUyMiU3RCU1RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJwJTIyJTJDJTIyY2hpbGRyZW4lMjIlM0ElNUIlN0IlMjJ0ZXh0JTIyJTNBJTIyJUVEJTg1JThDJUVDJThBJUE0JUVEJThBJUI4JUVDJTk3JTkwJTIwJUVEJTk1JTg0JUVDJTlBJTk0JUVEJTk1JTlDJTIwJUVCJThEJUIwJUVDJTlEJUI0JUVEJTg0JUIwJUVCJUE1JUJDJTIwJUVDJTg5JUJEJUVBJUIyJThDJTIwJUVDJTgzJTlEJUVDJTg0JUIxJUVEJTk1JTk4JUVBJUIzJUEwJTIwJUVBJUI0JTgwJUVCJUE2JUFDJUVEJTk1JUEwJTIwJUVDJTg4JTk4JTIwJUVDJTlFJTg4JUVCJThBJTk0JTIwJUVCJUIwJUE5JUVCJUIyJTk1JUVDJTlEJTg0JTIwJUVDJTg0JUE0JUVBJUIzJTg0JTIwJUVCJThCJUE4JUVBJUIzJTg0JUVDJTk3JTkwJUVDJTg0JTlDJUVCJUI2JTgwJUVEJTg0JUIwJTIwJUVBJUIzJUEwJUVCJUEwJUE0JUVEJTk1JUI0JUVDJTk1JUJDJTIwJUVEJTk1JUE5JUVCJThCJTg4JUVCJThCJUE0LiUyMCVFQyVBNyU4MCVFQiU4MiU5QyUyMCVFQyU5NyVCMCVFQyU5RSVBQyVFQyU5NyU5MCVFQyU4NCU5QyUyMCVFQiU4QiVBNCVFQiVBMyVBOCVFQyU5NyU4OCVFQiU4RCU5OCUyMCVFRCU4NSU4QyVFQyU4QSVBNCVFRCU4QSVCOCUyMCVFQiU4RCVCMCVFQyU5RCVCNCVFRCU4NCVCMCUyMCVFRCU5NSVBOSVFQyU4NCVCMSUyMCVFQiVCMCU4RiUyMCVFQiVBNyU4OCVFQyU4QSVBNCVFRCU4MiVCOSUyMCVFQSVCOCVCMCVFQyU4OCVBMCVFQiU4RiU4NCUyMCVFQyU5NyVBQyVFQSVCOCVCMCVFQyU5NyU5MCUyMCVFRCU5NSVCNCVFQiU4QiVCOSVFRCU5NSVBOSVFQiU4QiU4OCVFQiU4QiVBNC4lMjAlRUIlQTclODglRUMlQjklOTglMjAlRUMlOUElOTQlRUIlQTYlQUMlRUMlODIlQUMlRUElQjAlODAlMjAlRUMlOUElOTQlRUIlQTYlQUMlRUQlOTUlOTglRUElQjglQjAlMjAlRUMlQTAlODQlRUMlOTclOTAlMjAlRUQlOTUlODQlRUMlOUElOTQlRUQlOTUlOUMlMjAlRUMlOUUlQUMlRUIlQTMlOEMlRUIlQTUlQkMlMjAlRUIlQUYlQjglRUIlQTYlQUMlMjAlRUMlODYlOTAlRUMlQTclODglRUQlOTUlQjQlRUIlOTElOTAlRUIlOEElOTQlMjAlRUElQjIlODMlRUElQjMlQkMlMjAlRUElQjAlOTklRUMlOTUlODQlRUMlODQlOUMlMkMlMjAlRUQlODUlOEMlRUMlOEElQTQlRUQlOEElQjglMjAlRUIlOEQlQjAlRUMlOUQlQjQlRUQlODQlQjAlMjAlRUMlQTQlODAlRUIlQjklODQlRUMlOTclOTAlMjAlRUIlOTMlOUMlRUIlOEElOTQlMjAlRUMlOEIlOUMlRUElQjAlODQlRUMlOUQlODQlMjAlRUMlQTQlODQlRUMlOUQlQjQlRUElQjMlQTAlMjAlRUQlODUlOEMlRUMlOEElQTQlRUQlOEElQjglRUMlOUQlOTglMjAlRUQlOUElQTglRUMlOUMlQTglRUMlODQlQjElRUMlOUQlODQlMjAlRUIlODYlOTIlRUMlOUQlQkMlMjAlRUMlODglOTglMjAlRUMlOUUlODglRUMlOEElQjUlRUIlOEIlODglRUIlOEIlQTQuJTIyJTdEJTVEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmhlYWRpbmclMjIlMkMlMjJsZXZlbCUyMiUzQTIlMkMlMjJjaGlsZHJlbiUyMiUzQSU1QiU3QiUyMnRleHQlMjIlM0ElMjIlRUQlOTIlODglRUMlQTclODglMjAlRUMlOTUlODQlRUQlODIlQTQlRUQlODUlOEQlRUQlOEElQjglRUMlOUQlOTglMjAlRUMlQTAlODQlRUIlOUUlQjUlRUMlQTAlODElMjAlRUMlOTclQUQlRUQlOTUlQTAlM0ElMjAlRUQlODUlOEMlRUMlOEElQTQlRUQlOEElQjglMjAlRUElQjAlODAlRUIlOEElQTUlRUMlODQlQjElRUMlOUQlODQlMjAlRUMlODQlQTQlRUElQjMlODQlRUQlOTUlOTglRUIlOEIlQTQlMjIlN0QlNUQlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIycCUyMiUyQyUyMmNoaWxkcmVuJTIyJTNBJTVCJTdCJTIydGV4dCUyMiUzQSUyMkFJJUVBJUIwJTgwJTIwJUVDJUJEJTk0JUVCJTkzJTlDJUVCJUE1JUJDJTIwJUVDJUE3JTlDJUVBJUIzJUEwJTIwJUVEJTg1JThDJUVDJThBJUE0JUVEJThBJUI4JUVCJUE1JUJDJTIwJUVDJTlFJTkwJUVCJThGJTk5JUVEJTk5JTk0JUVEJTk1JTk4JUVCJThBJTk0JTIwJUVDJThCJTlDJUVCJThDJTgwJUVDJTk3JTkwJTJDJTIwJUVEJTkyJTg4JUVDJUE3JTg4JTIwJUVDJTk1JTg0JUVEJTgyJUE0JUVEJTg1JThEJUVEJThBJUI4JUVDJTlEJTk4JTIwJUVDJTk3JUFEJUVEJTk1JUEwJUVDJTlEJTgwJTIwJUVCJThCJUE4JUVDJTg4JTlDJUVEJTlFJTg4JTIwJUVEJTg1JThDJUVDJThBJUE0JUVEJThBJUI4JUVCJUE1JUJDJTIwJUVDJThCJUE0JUVEJTk2JTg5JUVEJTk1JTk4JUVCJThBJTk0JTIwJUVBJUIyJTgzJUVDJTlEJTg0JTIwJUVCJTg0JTk4JUVDJTk2JUI0JTJDJTIwJTIyJTdEJTJDJTdCJTIydGV4dCUyMiUzQSUyMiVFRCU4NSU4QyVFQyU4QSVBNCVFRCU4QSVCOCVFRCU5NSU5OCVFQSVCOCVCMCUyMCVFQyU4OSVBQyVFQyU5QSVCNCUyMCVFQyU4NiU4QyVFRCU5NCU4NCVFRCU4QSVCOCVFQyU5QiVBOCVFQyU5NiVCNCVFQiVBNSVCQyUyMCVFQyU4NCVBNCVFQSVCMyU4NCVFRCU5NSU5OCVFQiU4QSU5NCUyMCVFQiU4RCVCMCUyMCVFQyVBMCU4MSVFQSVCNyVCOSVFQyVBMCU4MSVFQyU5QyVCQyVFQiVBMSU5QyUyMCVFQyVCMCVCOCVFQyU5NyVBQyVFRCU5NSU5OCVFQiU4QSU5NCUyMCVFQSVCMiU4MyUyMiUyQyUyMmJvbGQlMjIlM0F0cnVlJTdEJTJDJTdCJTIydGV4dCUyMiUzQSUyMiVFQyU5RSU4NSVFQiU4QiU4OCVFQiU4QiVBNC4lMjAlRUMlOUElQjAlRUIlQTYlQUMlRUIlOEElOTQlMjAlRUElQjglQjAlRUQlOUElOEQlRUMlOUUlOTAlMkMlMjAlRUElQjAlOUMlRUIlQjAlOUMlRUMlOUUlOTAlRUMlOTklODAlMjAlRUQlOTUlQTglRUElQkIlOTglMjAlRUMlQjQlODglRUElQjglQjAlMjAlRUIlOEIlQTglRUElQjMlODQlRUIlQjYlODAlRUQlODQlQjAlMjAlRUQlODUlOEMlRUMlOEElQTQlRUQlOEElQjglMjAlRUElQjAlODAlRUIlOEElQTUlRUMlODQlQjElRUMlOUQlODQlMjAlRUIlODUlQkMlRUMlOUQlOTglRUQlOTUlOTglRUElQjMlQTAlMkMlMjAlRUMlODQlQTQlRUElQjMlODQlRUMlOTclOTAlMjAlRUIlQjAlOTglRUMlOTglODElRUIlOTAlQTAlMjAlRUMlODglOTglMjAlRUMlOUUlODglRUIlOEYlODQlRUIlQTElOUQlMjAlRUElQjAlODAlRUMlOUQlQjQlRUIlOTMlOUMlRUQlOTUlQjQlRUMlOTUlQkMlMjAlRUQlOTUlQTklRUIlOEIlODglRUIlOEIlQTQuJTIwJUVDJTlEJUI0JUVCJThBJTk0JTIwJUVCJUE3JTg4JUVDJUI5JTk4JTIwJUVBJUIxJUI0JUVCJUFDJUJDJUVDJTlEJTg0JTIwJUVDJUE3JTkzJUVBJUI4JUIwJTIwJUVDJUEwJTg0JUVCJUI2JTgwJUVEJTg0JUIwJTIwJUVBJUIxJUI0JUVDJUI2JTk1JUVBJUIwJTgwJUVDJTk5JTgwJTIwJUVEJTk1JUE4JUVBJUJCJTk4JTIwJUVDJUEwJTkwJUVBJUIyJTgwJUVBJUI1JUFDJUVDJTlEJTk4JTIwJUVDJTlDJTg0JUVDJUI5JTk4JUVDJTk5JTgwJTIwJUVCJUIwJUIwJUVBJUI0JTgwJTIwJUVBJUIyJUJEJUVCJUExJTlDJUVCJUE1JUJDJTIwJUVCJTg1JUJDJUVDJTlEJTk4JUVEJTk1JTk4JUVBJUIzJUEwJTJDJTIwJUVDJTlDJUEwJUVDJUE3JTgwJUVCJUIzJUI0JUVDJTg4JTk4JUVBJUIwJTgwJTIwJUVDJTlBJUE5JUVDJTlEJUI0JUVEJTk1JTlDJTIwJUVDJTg0JUE0JUVBJUIzJTg0JUVCJUE1JUJDJTIwJUVDJTlEJUI0JUVCJTgxJThDJUVDJTk2JUI0JUVCJTgyJUI0JUVCJThBJTk0JTIwJUVBJUIyJTgzJUVBJUIzJUJDJTIwJUVBJUIwJTk5JUVDJThBJUI1JUVCJThCJTg4JUVCJThCJUE0LiUyMiU3RCU1RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJwJTIyJTJDJTIyY2hpbGRyZW4lMjIlM0ElNUIlN0IlMjJ0ZXh0JTIyJTNBJTIyJUVEJTg1JThDJUVDJThBJUE0JUVEJThBJUI4JTIwJUVBJUIwJTgwJUVCJThBJUE1JUVDJTg0JUIxJUVDJTlEJTg0JTIwJUVDJTg0JUE0JUVBJUIzJTg0JUVDJTk3JTkwJTIwJUVDJThCJUFDJUVCJThBJTk0JTIwJUVBJUIyJTgzJUVDJTlEJTgwJTIwJUVCJThCJUE4JUVBJUI4JUIwJUVDJUEwJTgxJUVDJTlDJUJDJUVCJUExJTlDJUVCJThBJTk0JTIwJUVDJUI2JTk0JUVBJUIwJTgwJUVDJUEwJTgxJUVDJTlEJUI4JTIwJUVCJTg1JUI4JUVCJUEwJUE1JUVDJUIyJTk4JUVCJTlGJUJDJTIwJUVCJUIzJUI0JUVDJTlEJUJDJTIwJUVDJTg4JTk4JTIwJUVDJTlFJTg4JUVDJThBJUI1JUVCJThCJTg4JUVCJThCJUE0LiUyMCVFRCU5NSU5OCVFQyVBNyU4MCVFQiVBNyU4QyUyMCVFQyU5RSVBNSVFQSVCOCVCMCVFQyVBMCU4MSVFQyU5QyVCQyVFQiVBMSU5QyVFQiU4QSU5NCUyMCVFQyU4NiU4QyVFRCU5NCU4NCVFRCU4QSVCOCVFQyU5QiVBOCVFQyU5NiVCNCVFQyU5RCU5OCUyMCVFRCU5MiU4OCVFQyVBNyU4OCVFQyU5RCU4NCUyMCVFRCU5NiVBNSVFQyU4MyU4MSVFQyU4QiU5QyVFRCU4MiVBNCVFQSVCMyVBMCUyQyUyMCVFQSVCMCU5QyVFQiVCMCU5QyUyMCVFQiVCOSU4NCVFQyU5QSVBOSVFQyU5RCU4NCUyMCVFQyVBMCU4OCVFQSVCMCU5MCVFRCU5NSU5OCVFQiVBOSVCMCUyQyUyMCVFQyU4QiU5QyVFQyU5RSVBNSUyMCVFQyVCNiU5QyVFQyU4QiU5QyUyMCVFQyU4QiU5QyVFQSVCMCU4NCVFQyU5RCU4NCUyMCVFQiU4QiVBOCVFQyVCNiU5NSVFRCU5NSU5OCVFQiU4QSU5NCUyMCVFQiU4RCVCMCUyMCVFQSVCMiVCMCVFQyVBMCU5NSVFQyVBMCU4MSVFQyU5RCVCOCUyMCVFQyU5NyVBRCVFRCU5NSVBMCVFQyU5RCU4NCUyMCVFRCU5NSVBOSVFQiU4QiU4OCVFQiU4QiVBNC4lMjAlRUQlOTIlODglRUMlQTclODglMjAlRUMlOTUlODQlRUQlODIlQTQlRUQlODUlOEQlRUQlOEElQjglRUIlQTElOUMlRUMlODQlOUMlMjAlRUMlOUElQjAlRUIlQTYlQUMlRUIlOEElOTQlMjAlRUMlOUQlQjQlRUIlOUYlQUMlRUQlOTUlOUMlMjAlRUMlQTAlODQlRUIlOUUlQjUlRUMlQTAlODElMjAlRUMlODIlQUMlRUElQjMlQTAlRUIlQTUlQkMlMjAlRUIlQjAlOTQlRUQlODMlOTUlRUMlOUMlQkMlRUIlQTElOUMlMkMlMjAlRUMlODYlOEMlRUQlOTQlODQlRUQlOEElQjglRUMlOUIlQTglRUMlOTYlQjQlRUMlOUQlOTglMjAlRUIlQUElQTglRUIlOTMlQTAlMjAlRUIlOEIlQTglRUElQjMlODQlRUMlOTclOTAlRUMlODQlOUMlMjAlRUQlOTIlODglRUMlQTclODglRUMlOUQlQjQlMjAlRUIlODIlQjQlRUMlOUUlQUMlRUQlOTklOTQlRUIlOTAlQTAlMjAlRUMlODglOTglMjAlRUMlOUUlODglRUIlOEYlODQlRUIlQTElOUQlMjAlRUMlOUQlQjQlRUIlODElOEMlRUMlOTYlQjQlRUMlOTUlQkMlMjAlRUQlOTUlQTklRUIlOEIlODglRUIlOEIlQTQuJTIwJUVEJTg1JThDJUVDJThBJUE0JUVEJThBJUI4JTIwJUVBJUIwJTgwJUVCJThBJUE1JUVDJTg0JUIxJUVDJTlEJTg0JTIwJUVCJTg2JTkyJUVDJTlEJUI0JUVCJThBJTk0JTIwJUVBJUIyJTgzJUVDJTlEJTgwJTIwJUVCJThCJUE4JUVDJTg4JTlDJUVEJTlFJTg4JTIwJUVEJTg1JThDJUVDJThBJUE0JUVEJThBJUI4JTIwJUVEJThDJTgwJUVCJUE3JThDJUVDJTlEJTk4JTIwJUVDJUIxJTg1JUVDJTlFJTg0JUVDJTlEJUI0JTIwJUVDJTk1JTg0JUVCJThCJTg4JUVCJTlEJUJDJTJDJTIwJUVDJTg2JThDJUVEJTk0JTg0JUVEJThBJUI4JUVDJTlCJUE4JUVDJTk2JUI0JTIwJUVBJUIwJTlDJUVCJUIwJTlDJUVDJTk3JTkwJTIwJUVDJUIwJUI4JUVDJTk3JUFDJUVEJTk1JTk4JUVCJThBJTk0JTIwJUVCJUFBJUE4JUVCJTkzJUEwJTIwJUVDJTlEJUI0JUVEJTk1JUI0JUVBJUI0JTgwJUVBJUIzJTg0JUVDJTlFJTkwJUVBJUIwJTgwJTIwJUVEJTk1JUE4JUVBJUJCJTk4JTIwJUVBJUIzJUEwJUVCJUFGJUJDJUVEJTk1JTk4JUVBJUIzJUEwJTIwJUVDJThCJUE0JUVDJUIyJTlDJUVEJTk1JUI0JUVDJTk1JUJDJTIwJUVEJTk1JUEwJTIwJUVDJUE0JTkxJUVDJTlBJTk0JUVEJTk1JTlDJTIwJUVBJUIwJTgwJUVDJUI5JTk4JUVDJTlFJTg1JUVCJThCJTg4JUVCJThCJUE0LiUyMiU3RCU1RCU3RCUyQyU3QiUyMnR5cGUlMjIlM0ElMjJkaXZpZGVyJTIyJTJDJTIyY2hpbGRyZW4lMjIlM0ElNUIlN0IlMjJ0ZXh0JTIyJTNBJTIyJTIyJTdEJTVEJTdEJTJDJTdCJTIydHlwZSUyMiUzQSUyMmhlYWRpbmclMjIlMkMlMjJsZXZlbCUyMiUzQTMlMkMlMjJjaGlsZHJlbiUyMiUzQSU1QiU3QiUyMnRleHQlMjIlM0ElMjIlRUMlQjAlQjglRUElQjMlQTAlMjAlRUMlOUUlOTAlRUIlQTMlOEMlMjIlN0QlNUQlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIyZGVmaW5pdGlvbiUyMiUyQyUyMmRlZmluaXRpb25JZCUyMiUzQSUyMjElMjIlMkMlMjJ1cmwlMjIlM0ElMjJodHRwcyUzQSUyRiUyRnd3dy5nZWVrc2ZvcmdlZWtzLm9yZyUyRnNvZnR3YXJlLXRlc3RpbmclMkZzb2Z0d2FyZS10ZXN0YWJpbGl0eSUyRiUyMiUyQyUyMnRpdGxlJTIyJTNBJTIyR2Vla3Nmb3JHZWVrcy4lMjAlNUMlMjJTb2Z0d2FyZSUyMFRlc3RhYmlsaXR5LiU1QyUyMiUyMiUyQyUyMmluZGV4JTIyJTNBMSUyQyUyMmNoaWxkcmVuJTIyJTNBJTVCJTdCJTIydGV4dCUyMiUzQSUyMkdlZWtzZm9yR2Vla3MuJTIwJTVDJTIyU29mdHdhcmUlMjBUZXN0YWJpbGl0eS4lNUMlMjIlMjIlN0QlNUQlN0QlMkMlN0IlMjJ0eXBlJTIyJTNBJTIycCUyMiUyQyUyMmNoaWxkcmVuJTIyJTNBJTVCJTdCJTIydGV4dCUyMiUzQSUyMiVFRCU4MyU5QyVFQSVCNyVCOCUzQSUyMCVFRCU4NSU4QyVFQyU4QSVBNCVFRCU4QSVCOCUyMCVFQSVCMCU4MCVFQiU4QSVBNSVFQyU4NCVCMSUyQyUyMFRlc3RhYmlsaXR5JTJDJTIwJUVDJTg2JThDJUVEJTk0JTg0JUVEJThBJUI4JUVDJTlCJUE4JUVDJTk2JUI0JTIwJUVDJTg0JUE0JUVBJUIzJTg0JTJDJTIwJUVBJUI4JUIwJUVEJTlBJThEJTIwJUVCJThCJUE4JUVBJUIzJTg0JTJDJTIwJUVEJTkyJTg4JUVDJUE3JTg4JTIwJUVDJTk1JTg0JUVEJTgyJUE0JUVEJTg1JThEJUVEJThBJUI4JTJDJTIwJUVCJUI5JTg0JUVBJUI4JUIwJUVCJThBJUE1JTIwJUVEJTg1JThDJUVDJThBJUE0JUVEJThBJUI4JTJDJTIwJUVCJUFBJUE4JUVCJTkzJTg4JUVEJTk5JTk0JTJDJTIwJUVCJTgyJUFFJUVDJTlEJTgwJTIwJUVBJUIyJUIwJUVEJTk1JUE5JUVCJThGJTg0JTJDJTIwJUVBJUI0JTgwJUVDJUIwJUIwJTIwJUVBJUIwJTgwJUVCJThBJUE1JUVDJTg0JUIxJTJDJTIwJUVDJUEwJTlDJUVDJTk2JUI0JTIwJUVBJUIwJTgwJUVCJThBJUE1JUVDJTg0JUIxJTIyJTdEJTVEJTdEJTVE&quot;&gt;
&lt;div data-slate-node=&quot;element&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;</description>
      <category>11. 자료실&amp;middot;기타/테스트 관련 강좌</category>
      <category>testability</category>
      <category>관찰 가능성</category>
      <category>기획 단계</category>
      <category>낮은 결합도</category>
      <category>모듈화</category>
      <category>비기능 테스트</category>
      <category>소프트웨어 설계</category>
      <category>제어 가능성</category>
      <category>테스트 가능성</category>
      <category>품질 아키텍트</category>
      <author>testmanager</author>
      <guid isPermaLink="true">https://testmanager.tistory.com/646</guid>
      <comments>https://testmanager.tistory.com/646#entry646comment</comments>
      <pubDate>Mon, 6 Jul 2026 08:17:05 +0900</pubDate>
    </item>
    <item>
      <title>3화. 웹은 어떻게 움직이는가 &amp;mdash; HTTP, 쿠키&amp;middot;세션의 원리. 실습: 개발자도구로 요청&amp;middot;응답 해부.</title>
      <link>https://testmanager.tistory.com/623</link>
      <description>&lt;p data-ke-size=&quot;size14&quot;&gt;AI&amp;nbsp;시대의&amp;nbsp;품질&amp;nbsp;아키텍트&amp;nbsp;:&amp;nbsp;테스터에서&amp;nbsp;시스템&amp;nbsp;품질&amp;nbsp;설계자로&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;0.&amp;nbsp;오리엔테이션&lt;br /&gt;0화.&amp;nbsp;30분&amp;nbsp;데모와&amp;nbsp;프로덕션&amp;nbsp;사이의&amp;nbsp;거리&amp;nbsp;&amp;mdash;&amp;nbsp;현실&amp;nbsp;인식과&amp;nbsp;방향&amp;nbsp;제시&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;1.&amp;nbsp;기초&amp;nbsp;체력&lt;br /&gt;AI가&amp;nbsp;짠&amp;nbsp;코드를&amp;nbsp;읽고&amp;nbsp;검증할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;눈과&amp;nbsp;웹&amp;middot;API&amp;nbsp;원리&amp;nbsp;다지기&lt;br /&gt;1화.&amp;nbsp;AI가&amp;nbsp;짠&amp;nbsp;코드를&amp;nbsp;읽는&amp;nbsp;눈&amp;nbsp;&amp;mdash;&amp;nbsp;Python&amp;nbsp;또는&amp;nbsp;JS/TS&amp;nbsp;중&amp;nbsp;하나를&amp;nbsp;코드&amp;nbsp;리뷰&amp;nbsp;가능한&amp;nbsp;수준까지.&amp;nbsp;실습:&amp;nbsp;AI가&amp;nbsp;생성한&amp;nbsp;테스트&amp;nbsp;코드의&amp;nbsp;버그&amp;nbsp;3개&amp;nbsp;찾기.&lt;br /&gt;2화.&amp;nbsp;변경은&amp;nbsp;diff에서&amp;nbsp;시작된다&amp;nbsp;&amp;mdash;&amp;nbsp;Git과&amp;nbsp;PR&amp;nbsp;기반&amp;nbsp;협업,&amp;nbsp;변경&amp;nbsp;기반&amp;nbsp;테스트의&amp;nbsp;첫&amp;nbsp;단추.&amp;nbsp;실습:&amp;nbsp;PR&amp;nbsp;diff만&amp;nbsp;보고&amp;nbsp;영향&amp;nbsp;범위&amp;nbsp;추정해&amp;nbsp;보기.&lt;br /&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;3화.&amp;nbsp;웹은&amp;nbsp;어떻게&amp;nbsp;움직이는가&amp;nbsp;&amp;mdash;&amp;nbsp;HTTP,&amp;nbsp;쿠키&amp;middot;세션의&amp;nbsp;원리.&amp;nbsp;실습:&amp;nbsp;개발자도구로&amp;nbsp;요청&amp;middot;응답&amp;nbsp;해부.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;4화.&amp;nbsp;인증의&amp;nbsp;지도&amp;nbsp;&amp;mdash;&amp;nbsp;OAuth&amp;middot;JWT&amp;middot;RBAC를&amp;nbsp;테스터&amp;nbsp;시선으로.&amp;nbsp;실습:&amp;nbsp;토큰&amp;nbsp;만료&amp;middot;권한&amp;nbsp;우회&amp;nbsp;시나리오&amp;nbsp;설계.&lt;br /&gt;5화.&amp;nbsp;API의&amp;nbsp;두&amp;nbsp;얼굴&amp;nbsp;&amp;mdash;&amp;nbsp;REST와&amp;nbsp;GraphQL의&amp;nbsp;차이와&amp;nbsp;테스트&amp;nbsp;관점.&amp;nbsp;실습:&amp;nbsp;같은&amp;nbsp;기능을&amp;nbsp;두&amp;nbsp;방식으로&amp;nbsp;호출&amp;middot;검증.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;br /&gt;Part&amp;nbsp;2.&amp;nbsp;테스트&amp;nbsp;자동화&lt;br /&gt;Playwright를&amp;nbsp;주력으로&amp;nbsp;깊이&amp;nbsp;익히기&lt;br /&gt;6화.&amp;nbsp;왜&amp;nbsp;Playwright인가&amp;nbsp;&amp;mdash;&amp;nbsp;도구&amp;nbsp;선택의&amp;nbsp;근거와&amp;nbsp;첫&amp;nbsp;테스트&amp;nbsp;작성.&lt;br /&gt;7화.&amp;nbsp;플래키의&amp;nbsp;근원,&amp;nbsp;셀렉터와&amp;nbsp;대기&amp;nbsp;&amp;mdash;&amp;nbsp;안정적&amp;nbsp;셀렉터와&amp;nbsp;비동기&amp;nbsp;대기&amp;nbsp;전략.&lt;br /&gt;8화.&amp;nbsp;실패를&amp;nbsp;영상으로&amp;nbsp;읽는다&amp;nbsp;&amp;mdash;&amp;nbsp;Trace&amp;nbsp;Viewer로&amp;nbsp;원인&amp;nbsp;추적.&lt;br /&gt;9화.&amp;nbsp;계약을&amp;nbsp;테스트하라&amp;nbsp;&amp;mdash;&amp;nbsp;API&amp;middot;계약&amp;nbsp;테스트(OpenAPI/GraphQL&amp;nbsp;schema&amp;nbsp;기반).&lt;br /&gt;10화.&amp;nbsp;눈에&amp;nbsp;보이는&amp;nbsp;회귀,&amp;nbsp;모두에게&amp;nbsp;열린&amp;nbsp;화면&amp;nbsp;&amp;mdash;&amp;nbsp;시각적&amp;nbsp;회귀와&amp;nbsp;접근성&amp;nbsp;자동&amp;nbsp;검사.&amp;nbsp;(Selenium&amp;middot;Appium은&amp;nbsp;레거시&amp;middot;모바일&amp;nbsp;대응용으로&amp;nbsp;짧게&amp;nbsp;짚기)&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;3.&amp;nbsp;AI&amp;nbsp;활용&amp;middot;MCP&amp;nbsp;(연재&amp;nbsp;핵심)&lt;br /&gt;AI를&amp;nbsp;단순&amp;nbsp;도구가&amp;nbsp;아닌&amp;nbsp;차별화&amp;nbsp;무기로&amp;nbsp;만드는&amp;nbsp;구간&lt;br /&gt;11화.&amp;nbsp;프롬프트로&amp;nbsp;테스트를&amp;nbsp;설계하기&amp;nbsp;&amp;mdash;&amp;nbsp;명세&amp;middot;PR을&amp;nbsp;입력해&amp;nbsp;케이스를&amp;nbsp;생성&amp;middot;우선순위화하는&amp;nbsp;패턴&amp;nbsp;정립.&lt;br /&gt;12화.&amp;nbsp;에이전트는&amp;nbsp;무엇을&amp;nbsp;대신하는가&amp;nbsp;&amp;mdash;&amp;nbsp;에이전트형&amp;nbsp;테스트의&amp;nbsp;개념과&amp;nbsp;한계(수동&amp;nbsp;노력&amp;nbsp;최대&amp;nbsp;45%&amp;nbsp;절감&amp;nbsp;추정).&lt;br /&gt;13화.&amp;nbsp;스스로&amp;nbsp;고치는&amp;nbsp;테스트,&amp;nbsp;그리고&amp;nbsp;그&amp;nbsp;한계&amp;nbsp;&amp;mdash;&amp;nbsp;자가&amp;nbsp;치유와&amp;nbsp;AI&amp;nbsp;Healer.&amp;nbsp;셀렉터&amp;middot;DOM&amp;nbsp;변경에서&amp;nbsp;75%+&amp;nbsp;복구,&amp;nbsp;그러나&amp;nbsp;복잡한&amp;nbsp;로직&amp;nbsp;버그는&amp;nbsp;사람&amp;nbsp;몫.&lt;br /&gt;14화.&amp;nbsp;npx&amp;nbsp;playwright&amp;nbsp;init-agents&amp;nbsp;&amp;mdash;&amp;nbsp;첫&amp;nbsp;MCP&amp;nbsp;실습&amp;nbsp;&amp;mdash;&amp;nbsp;접근성&amp;nbsp;트리&amp;nbsp;기반&amp;nbsp;Playwright&amp;nbsp;MCP&amp;nbsp;시작하기.&lt;br /&gt;15화.&amp;nbsp;MCP로&amp;nbsp;통합을&amp;nbsp;검증하다&amp;nbsp;&amp;mdash;&amp;nbsp;MCP&amp;nbsp;기반&amp;nbsp;통합&amp;nbsp;검증&amp;nbsp;실습.&lt;br /&gt;16화.&amp;nbsp;환각을&amp;nbsp;거르는&amp;nbsp;사람&amp;nbsp;&amp;mdash;&amp;nbsp;AI&amp;nbsp;결과의&amp;nbsp;환각&amp;middot;오탐을&amp;nbsp;걸러내는&amp;nbsp;인간&amp;nbsp;검증&amp;nbsp;체계&amp;nbsp;설계.&amp;nbsp;직무&amp;nbsp;특성상&amp;nbsp;가장&amp;nbsp;큰&amp;nbsp;강점이&amp;nbsp;되는&amp;nbsp;지점.&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;4.&amp;nbsp;파이프라인&amp;middot;운영&lt;br /&gt;개인기를&amp;nbsp;조직의&amp;nbsp;신뢰&amp;nbsp;시스템으로&amp;nbsp;연결&lt;br /&gt;17화.&amp;nbsp;문&amp;nbsp;앞의&amp;nbsp;품질&amp;nbsp;게이트&amp;nbsp;&amp;mdash;&amp;nbsp;CI/CD&amp;nbsp;품질&amp;nbsp;게이트&amp;nbsp;구성.&lt;br /&gt;18화.&amp;nbsp;플래키를&amp;nbsp;격리하라&amp;nbsp;&amp;mdash;&amp;nbsp;불안정&amp;nbsp;테스트&amp;nbsp;격리와&amp;nbsp;실패&amp;nbsp;원인&amp;nbsp;자동&amp;nbsp;분류.&lt;br /&gt;19화.&amp;nbsp;관측성을&amp;nbsp;테스트로&amp;nbsp;환원하기&amp;nbsp;&amp;mdash;&amp;nbsp;로그&amp;middot;메트릭&amp;middot;트레이스(OpenTelemetry)를&amp;nbsp;테스트&amp;nbsp;사고로&amp;nbsp;끌어오기.&lt;br /&gt;20화.&amp;nbsp;진짜&amp;nbsp;같은&amp;nbsp;가짜&amp;nbsp;데이터&amp;nbsp;&amp;mdash;&amp;nbsp;테스트&amp;nbsp;데이터&amp;nbsp;합성과&amp;nbsp;마스킹.&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;5.&amp;nbsp;비기능&amp;nbsp;영역&lt;br /&gt;눈에&amp;nbsp;보이지&amp;nbsp;않는&amp;nbsp;품질&amp;nbsp;지키기&lt;br /&gt;21화.&amp;nbsp;무게를&amp;nbsp;견디는가&amp;nbsp;&amp;mdash;&amp;nbsp;k6/JMeter로&amp;nbsp;부하&amp;middot;스트레스&amp;nbsp;테스트.&lt;br /&gt;22화.&amp;nbsp;손안의&amp;nbsp;성능&amp;nbsp;&amp;mdash;&amp;nbsp;모바일&amp;nbsp;성능&amp;nbsp;지표(FPS&amp;middot;시작속도&amp;middot;메모리&amp;middot;배터리).&lt;br /&gt;23화.&amp;nbsp;공격자처럼&amp;nbsp;생각하기&amp;nbsp;&amp;mdash;&amp;nbsp;OWASP&amp;nbsp;Top&amp;nbsp;10으로&amp;nbsp;본&amp;nbsp;보안&amp;nbsp;기본기.&lt;br /&gt;24화.&amp;nbsp;코드를&amp;nbsp;스캔하는&amp;nbsp;도구들&amp;nbsp;&amp;mdash;&amp;nbsp;SAST&amp;middot;DAST&amp;middot;SCA(SonarQube&amp;middot;OWASP&amp;nbsp;ZAP&amp;middot;Snyk)&amp;nbsp;실전.&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;6.&amp;nbsp;전략&amp;middot;리더십&amp;middot;표준&lt;br /&gt;아키텍트로서의&amp;nbsp;설계&amp;middot;운영&amp;middot;리더십&lt;br /&gt;25화.&amp;nbsp;테스트&amp;nbsp;가능성을&amp;nbsp;설계에&amp;nbsp;심다&amp;nbsp;&amp;mdash;&amp;nbsp;Testability를&amp;nbsp;기획&amp;middot;개발&amp;nbsp;단계로&amp;nbsp;끌어올리기.&lt;br /&gt;26화.&amp;nbsp;공통&amp;nbsp;언어로서의&amp;nbsp;BDD&amp;nbsp;&amp;mdash;&amp;nbsp;Gherkin으로&amp;nbsp;기획&amp;middot;개발&amp;middot;QA를&amp;nbsp;한&amp;nbsp;문장에&amp;nbsp;모으기.&lt;br /&gt;27화.&amp;nbsp;AI를&amp;nbsp;지휘하는&amp;nbsp;운영&amp;nbsp;모델&amp;nbsp;&amp;mdash;&amp;nbsp;20명&amp;nbsp;규모&amp;nbsp;팀을&amp;nbsp;위한&amp;nbsp;AI&amp;nbsp;오케스트레이션&amp;nbsp;가이드라인과&amp;nbsp;코칭.&lt;br /&gt;28화.&amp;nbsp;표준과&amp;nbsp;AI를&amp;nbsp;잇다&amp;nbsp;&amp;mdash;&amp;nbsp;KOLAS&amp;nbsp;인정&amp;nbsp;요건&amp;middot;품질&amp;nbsp;표준을&amp;nbsp;AI&amp;nbsp;검증&amp;nbsp;체계로&amp;nbsp;연결하는&amp;nbsp;도메인&amp;nbsp;전문성.&lt;br /&gt;29화.&amp;nbsp;데모를&amp;nbsp;프로덕션으로&amp;nbsp;옮기는&amp;nbsp;비용&amp;nbsp;&amp;mdash;&amp;nbsp;30분&amp;nbsp;데모와&amp;nbsp;실전의&amp;nbsp;거리,&amp;nbsp;사람의&amp;nbsp;감독이&amp;nbsp;끝까지&amp;nbsp;필요한&amp;nbsp;이유를&amp;nbsp;균형&amp;nbsp;있게&amp;nbsp;정리.&lt;br /&gt;30화.&amp;nbsp;테스터에서&amp;nbsp;품질&amp;nbsp;아키텍트로&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;웹 페이지가 &amp;ldquo;한 번 클릭&amp;rdquo;으로 바뀌는 순간, HTTP와 쿠키가 실제로 하는 일&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테스터로서 화면은 예쁘게 나오는데 왜 로그인이 풀리고, 장바구니가 사라지고, 새로고침할 때마다 상태가 초기화되는지 답답한가요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HTTP 요청&amp;middot;응답과 쿠키&amp;middot;세션의 기본 원리를 중학생도 이해할 수 있게 풀어보면, 개발자도구만으로도 버그의 실마리를 빠르게 잡을 수 있습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;식당에서 음식 주문하는 것처럼 웹은 대화한다&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;상상해 보세요. 여러분이 식당에 들어가서 &amp;ldquo;치킨 1인분 주세요&amp;rdquo;라고 종이에 적어 종업원에게 건넵니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;종업원이 주방에 전달하고, 잠시 후 치킨이 나와요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 과정이 바로 &lt;b&gt;HTTP&lt;/b&gt;입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Request(요청)&lt;/b&gt;: 브라우저가 서버에게 &amp;ldquo;이 페이지 보여줘&amp;rdquo;, &amp;ldquo;로그인해줘&amp;rdquo;, &amp;ldquo;장바구니에 물건 넣어줘&amp;rdquo;라고 보내는 편지예요.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Response(응답)&lt;/b&gt;: 서버가 &amp;ldquo;여기 페이지입니다&amp;rdquo;, &amp;ldquo;로그인됐어요&amp;rdquo;, &amp;ldquo;장바구니 업데이트됐습니다&amp;rdquo; 하고 답장을 보내는 거죠.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 편지는 보통 매우 빠르게 오가지만, 내용이 길거나 사진이 많으면 조금 늦어집니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발자도구의 Network 탭을 열면 이 편지들이 실시간으로 쌓이는 모습을 그대로 볼 수 있어요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;왜 새로고침하면 장바구니가 사라질까? 쿠키와 세션의 역할&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;식당에서 자리에 앉아 &amp;ldquo;아까 주문한 치킨 아직 안 나왔어요&amp;rdquo;라고 다시 말할 필요가 없도록, 종업원이 &amp;ldquo;3번 테이블 손님&amp;rdquo;이라고 기억해 주는 시스템이 필요하죠.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;웹에서도 마찬가지예요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;쿠키&lt;/b&gt;는 브라우저가 자신의 컴퓨터에 작은 메모지를 저장해 두는 것입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;내가 누구인지(아이디), 로그인 상태, 장바구니에 뭐가 들었는지&amp;rdquo; 같은 정보를 조금씩 적어둡니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서버가 &amp;ldquo;이 메모지 다시 가져와&amp;rdquo;라고 하면 브라우저가 쿠키를 함께 보내줘요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;세션&lt;/b&gt;은 서버 쪽에서 그 정보를 더 안전하게 관리하는 방법입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서버가 &amp;ldquo;이 사람은 3번 손님&amp;rdquo;이라고 표를 만들어 관리하고, 브라우저에게는 세션 ID(작은 번호표)만 쿠키로 줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 하면 중요한 정보(비밀번호, 개인정보)는 서버에만 남아 안전해요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;로그인이 풀리거나 상태가 사라지는 버그는 대부분 이 쿠키와 세션이 제대로 주고받지 못하거나, 만료되거나, 다른 기기에서 충돌할 때 발생합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;개발자도구로 직접 요청과 응답을 해부해 보자&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제로 연습해 볼 시간입니다. 크롬 브라우저에서 F12 키를 눌러 개발자도구를 열고, &lt;b&gt;Network&lt;/b&gt; 탭으로 이동하세요.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;아무 사이트(예: 네이버나 테스트 쇼핑몰)에 들어가 보세요.&lt;/li&gt;
&lt;li&gt;페이지가 로드되면서 수많은 요청이 쌓입니다. 가장 위에 있는 문서 타입(HTML)을 클릭해 보세요.&lt;/li&gt;
&lt;li&gt;Headers를 보면 Request URL, Method(GET/POST), Status Code(200 성공, 404 없음, 500 오류 등)를 바로 확인할 수 있어요.&lt;/li&gt;
&lt;li&gt;로그인 버튼을 눌러보거나 물건을 장바구니에 담아보세요. 새로 생긴 요청 중 Cookies 탭을 클릭하면 어떤 정보가 오가는지 볼 수 있습니다.&lt;/li&gt;
&lt;li&gt;Response 탭에서는 서버가 실제로 준 내용을 들여다볼 수 있어요.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특히 Status Code가 401(인증 실패), 403(권한 없음), 429(너무 많은 요청) 같은 숫자가 뜨면 바로 &amp;ldquo;여기 문제가 있구나&amp;rdquo; 하고 알 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI가 만든 코드라도 이 부분을 직접 눈으로 확인하는 습관이 테스터의 큰 힘입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;작은 대화의 차이가 큰 안정성을 만든다&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HTTP는 stateless(기억하지 않는) 특성을 가지고 있지만, 쿠키와 세션이 그 기억을 이어주는 다리 역할을 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 원리를 이해하면 &amp;ldquo;왜 이 화면에서만 이상하지?&amp;rdquo; 하는 버그의 원인을 훨씬 빠르게 찾아낼 수 있어요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발자도구 Network 탭을 매일 조금씩 열어보는 것만으로도 웹이 어떻게 움직이는지 감이 잡힙니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음엔 요청이 너무 많아 당황스럽겠지만, 중요한 요청 몇 개만 집중해서 보면 충분해요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 눈을 기르면 PR diff를 볼 때도 &amp;ldquo;이 API 호출이 바뀌었으니 쿠키 처리도 확인해야겠네&amp;rdquo; 하고 자연스럽게 연결지어 생각하게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;웹의 기본 언어를 이해하는 순간, 테스터는 단순히 화면을 클릭하는 사람이 아니라 시스템 전체 흐름을 읽는 품질 아키텍트로 한 걸음 더 다가갑니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>11. 자료실&amp;middot;기타/테스트 관련 강좌</category>
      <category>AI 시대 QA</category>
      <category>HTTP 요청 응답</category>
      <category>Status Code</category>
      <category>개발자도구 Network</category>
      <category>변경 영향 테스트</category>
      <category>웹 동작 원리</category>
      <category>쿠키 세션</category>
      <category>테스터 웹 지식</category>
      <author>testmanager</author>
      <guid isPermaLink="true">https://testmanager.tistory.com/623</guid>
      <comments>https://testmanager.tistory.com/623#entry623comment</comments>
      <pubDate>Mon, 6 Jul 2026 07:50:25 +0900</pubDate>
    </item>
    <item>
      <title>2화. 변경은 diff에서 시작된다 &amp;mdash; Git과 PR 기반 협업, 변경 기반 테스트의 첫 단추. 실습: PR diff만 보고 영향 범위 추정해 보기.</title>
      <link>https://testmanager.tistory.com/622</link>
      <description>&lt;p data-ke-size=&quot;size14&quot;&gt;AI&amp;nbsp;시대의&amp;nbsp;품질&amp;nbsp;아키텍트&amp;nbsp;:&amp;nbsp;테스터에서&amp;nbsp;시스템&amp;nbsp;품질&amp;nbsp;설계자로&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;0.&amp;nbsp;오리엔테이션&lt;br /&gt;0화.&amp;nbsp;30분&amp;nbsp;데모와&amp;nbsp;프로덕션&amp;nbsp;사이의&amp;nbsp;거리&amp;nbsp;&amp;mdash;&amp;nbsp;현실&amp;nbsp;인식과&amp;nbsp;방향&amp;nbsp;제시&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;1.&amp;nbsp;기초&amp;nbsp;체력&lt;br /&gt;AI가&amp;nbsp;짠&amp;nbsp;코드를&amp;nbsp;읽고&amp;nbsp;검증할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;눈과&amp;nbsp;웹&amp;middot;API&amp;nbsp;원리&amp;nbsp;다지기&lt;br /&gt;1화.&amp;nbsp;AI가&amp;nbsp;짠&amp;nbsp;코드를&amp;nbsp;읽는&amp;nbsp;눈&amp;nbsp;&amp;mdash;&amp;nbsp;Python&amp;nbsp;또는&amp;nbsp;JS/TS&amp;nbsp;중&amp;nbsp;하나를&amp;nbsp;코드&amp;nbsp;리뷰&amp;nbsp;가능한&amp;nbsp;수준까지.&amp;nbsp;실습:&amp;nbsp;AI가&amp;nbsp;생성한&amp;nbsp;테스트&amp;nbsp;코드의&amp;nbsp;버그&amp;nbsp;3개&amp;nbsp;찾기.&lt;br /&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;2화.&amp;nbsp;변경은&amp;nbsp;diff에서&amp;nbsp;시작된다&amp;nbsp;&amp;mdash;&amp;nbsp;Git과&amp;nbsp;PR&amp;nbsp;기반&amp;nbsp;협업,&amp;nbsp;변경&amp;nbsp;기반&amp;nbsp;테스트의&amp;nbsp;첫&amp;nbsp;단추.&amp;nbsp;실습:&amp;nbsp;PR&amp;nbsp;diff만&amp;nbsp;보고&amp;nbsp;영향&amp;nbsp;범위&amp;nbsp;추정해&amp;nbsp;보기.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;3화.&amp;nbsp;웹은&amp;nbsp;어떻게&amp;nbsp;움직이는가&amp;nbsp;&amp;mdash;&amp;nbsp;HTTP,&amp;nbsp;쿠키&amp;middot;세션의&amp;nbsp;원리.&amp;nbsp;실습:&amp;nbsp;개발자도구로&amp;nbsp;요청&amp;middot;응답&amp;nbsp;해부.&lt;br /&gt;4화.&amp;nbsp;인증의&amp;nbsp;지도&amp;nbsp;&amp;mdash;&amp;nbsp;OAuth&amp;middot;JWT&amp;middot;RBAC를&amp;nbsp;테스터&amp;nbsp;시선으로.&amp;nbsp;실습:&amp;nbsp;토큰&amp;nbsp;만료&amp;middot;권한&amp;nbsp;우회&amp;nbsp;시나리오&amp;nbsp;설계.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;5화.&amp;nbsp;API의&amp;nbsp;두&amp;nbsp;얼굴&amp;nbsp;&amp;mdash;&amp;nbsp;REST와&amp;nbsp;GraphQL의&amp;nbsp;차이와&amp;nbsp;테스트&amp;nbsp;관점.&amp;nbsp;실습:&amp;nbsp;같은&amp;nbsp;기능을&amp;nbsp;두&amp;nbsp;방식으로&amp;nbsp;호출&amp;middot;검증.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;2.&amp;nbsp;테스트&amp;nbsp;자동화&lt;br /&gt;Playwright를&amp;nbsp;주력으로&amp;nbsp;깊이&amp;nbsp;익히기&lt;br /&gt;6화.&amp;nbsp;왜&amp;nbsp;Playwright인가&amp;nbsp;&amp;mdash;&amp;nbsp;도구&amp;nbsp;선택의&amp;nbsp;근거와&amp;nbsp;첫&amp;nbsp;테스트&amp;nbsp;작성.&lt;br /&gt;7화.&amp;nbsp;플래키의&amp;nbsp;근원,&amp;nbsp;셀렉터와&amp;nbsp;대기&amp;nbsp;&amp;mdash;&amp;nbsp;안정적&amp;nbsp;셀렉터와&amp;nbsp;비동기&amp;nbsp;대기&amp;nbsp;전략.&lt;br /&gt;8화.&amp;nbsp;실패를&amp;nbsp;영상으로&amp;nbsp;읽는다&amp;nbsp;&amp;mdash;&amp;nbsp;Trace&amp;nbsp;Viewer로&amp;nbsp;원인&amp;nbsp;추적.&lt;br /&gt;9화.&amp;nbsp;계약을&amp;nbsp;테스트하라&amp;nbsp;&amp;mdash;&amp;nbsp;API&amp;middot;계약&amp;nbsp;테스트(OpenAPI/GraphQL&amp;nbsp;schema&amp;nbsp;기반).&lt;br /&gt;10화.&amp;nbsp;눈에&amp;nbsp;보이는&amp;nbsp;회귀,&amp;nbsp;모두에게&amp;nbsp;열린&amp;nbsp;화면&amp;nbsp;&amp;mdash;&amp;nbsp;시각적&amp;nbsp;회귀와&amp;nbsp;접근성&amp;nbsp;자동&amp;nbsp;검사.&amp;nbsp;(Selenium&amp;middot;Appium은&amp;nbsp;레거시&amp;middot;모바일&amp;nbsp;대응용으로&amp;nbsp;짧게&amp;nbsp;짚기)&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;3.&amp;nbsp;AI&amp;nbsp;활용&amp;middot;MCP&amp;nbsp;(연재&amp;nbsp;핵심)&lt;br /&gt;AI를&amp;nbsp;단순&amp;nbsp;도구가&amp;nbsp;아닌&amp;nbsp;차별화&amp;nbsp;무기로&amp;nbsp;만드는&amp;nbsp;구간&lt;br /&gt;11화.&amp;nbsp;프롬프트로&amp;nbsp;테스트를&amp;nbsp;설계하기&amp;nbsp;&amp;mdash;&amp;nbsp;명세&amp;middot;PR을&amp;nbsp;입력해&amp;nbsp;케이스를&amp;nbsp;생성&amp;middot;우선순위화하는&amp;nbsp;패턴&amp;nbsp;정립.&lt;br /&gt;12화.&amp;nbsp;에이전트는&amp;nbsp;무엇을&amp;nbsp;대신하는가&amp;nbsp;&amp;mdash;&amp;nbsp;에이전트형&amp;nbsp;테스트의&amp;nbsp;개념과&amp;nbsp;한계(수동&amp;nbsp;노력&amp;nbsp;최대&amp;nbsp;45%&amp;nbsp;절감&amp;nbsp;추정).&lt;br /&gt;13화.&amp;nbsp;스스로&amp;nbsp;고치는&amp;nbsp;테스트,&amp;nbsp;그리고&amp;nbsp;그&amp;nbsp;한계&amp;nbsp;&amp;mdash;&amp;nbsp;자가&amp;nbsp;치유와&amp;nbsp;AI&amp;nbsp;Healer.&amp;nbsp;셀렉터&amp;middot;DOM&amp;nbsp;변경에서&amp;nbsp;75%+&amp;nbsp;복구,&amp;nbsp;그러나&amp;nbsp;복잡한&amp;nbsp;로직&amp;nbsp;버그는&amp;nbsp;사람&amp;nbsp;몫.&lt;br /&gt;14화.&amp;nbsp;npx&amp;nbsp;playwright&amp;nbsp;init-agents&amp;nbsp;&amp;mdash;&amp;nbsp;첫&amp;nbsp;MCP&amp;nbsp;실습&amp;nbsp;&amp;mdash;&amp;nbsp;접근성&amp;nbsp;트리&amp;nbsp;기반&amp;nbsp;Playwright&amp;nbsp;MCP&amp;nbsp;시작하기.&lt;br /&gt;15화.&amp;nbsp;MCP로&amp;nbsp;통합을&amp;nbsp;검증하다&amp;nbsp;&amp;mdash;&amp;nbsp;MCP&amp;nbsp;기반&amp;nbsp;통합&amp;nbsp;검증&amp;nbsp;실습.&lt;br /&gt;16화.&amp;nbsp;환각을&amp;nbsp;거르는&amp;nbsp;사람&amp;nbsp;&amp;mdash;&amp;nbsp;AI&amp;nbsp;결과의&amp;nbsp;환각&amp;middot;오탐을&amp;nbsp;걸러내는&amp;nbsp;인간&amp;nbsp;검증&amp;nbsp;체계&amp;nbsp;설계.&amp;nbsp;직무&amp;nbsp;특성상&amp;nbsp;가장&amp;nbsp;큰&amp;nbsp;강점이&amp;nbsp;되는&amp;nbsp;지점.&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;4.&amp;nbsp;파이프라인&amp;middot;운영&lt;br /&gt;개인기를&amp;nbsp;조직의&amp;nbsp;신뢰&amp;nbsp;시스템으로&amp;nbsp;연결&lt;br /&gt;17화.&amp;nbsp;문&amp;nbsp;앞의&amp;nbsp;품질&amp;nbsp;게이트&amp;nbsp;&amp;mdash;&amp;nbsp;CI/CD&amp;nbsp;품질&amp;nbsp;게이트&amp;nbsp;구성.&lt;br /&gt;18화.&amp;nbsp;플래키를&amp;nbsp;격리하라&amp;nbsp;&amp;mdash;&amp;nbsp;불안정&amp;nbsp;테스트&amp;nbsp;격리와&amp;nbsp;실패&amp;nbsp;원인&amp;nbsp;자동&amp;nbsp;분류.&lt;br /&gt;19화.&amp;nbsp;관측성을&amp;nbsp;테스트로&amp;nbsp;환원하기&amp;nbsp;&amp;mdash;&amp;nbsp;로그&amp;middot;메트릭&amp;middot;트레이스(OpenTelemetry)를&amp;nbsp;테스트&amp;nbsp;사고로&amp;nbsp;끌어오기.&lt;br /&gt;20화.&amp;nbsp;진짜&amp;nbsp;같은&amp;nbsp;가짜&amp;nbsp;데이터&amp;nbsp;&amp;mdash;&amp;nbsp;테스트&amp;nbsp;데이터&amp;nbsp;합성과&amp;nbsp;마스킹.&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;5.&amp;nbsp;비기능&amp;nbsp;영역&lt;br /&gt;눈에&amp;nbsp;보이지&amp;nbsp;않는&amp;nbsp;품질&amp;nbsp;지키기&lt;br /&gt;21화.&amp;nbsp;무게를&amp;nbsp;견디는가&amp;nbsp;&amp;mdash;&amp;nbsp;k6/JMeter로&amp;nbsp;부하&amp;middot;스트레스&amp;nbsp;테스트.&lt;br /&gt;22화.&amp;nbsp;손안의&amp;nbsp;성능&amp;nbsp;&amp;mdash;&amp;nbsp;모바일&amp;nbsp;성능&amp;nbsp;지표(FPS&amp;middot;시작속도&amp;middot;메모리&amp;middot;배터리).&lt;br /&gt;23화.&amp;nbsp;공격자처럼&amp;nbsp;생각하기&amp;nbsp;&amp;mdash;&amp;nbsp;OWASP&amp;nbsp;Top&amp;nbsp;10으로&amp;nbsp;본&amp;nbsp;보안&amp;nbsp;기본기.&lt;br /&gt;24화.&amp;nbsp;코드를&amp;nbsp;스캔하는&amp;nbsp;도구들&amp;nbsp;&amp;mdash;&amp;nbsp;SAST&amp;middot;DAST&amp;middot;SCA(SonarQube&amp;middot;OWASP&amp;nbsp;ZAP&amp;middot;Snyk)&amp;nbsp;실전.&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;6.&amp;nbsp;전략&amp;middot;리더십&amp;middot;표준&lt;br /&gt;아키텍트로서의&amp;nbsp;설계&amp;middot;운영&amp;middot;리더십&lt;br /&gt;25화.&amp;nbsp;테스트&amp;nbsp;가능성을&amp;nbsp;설계에&amp;nbsp;심다&amp;nbsp;&amp;mdash;&amp;nbsp;Testability를&amp;nbsp;기획&amp;middot;개발&amp;nbsp;단계로&amp;nbsp;끌어올리기.&lt;br /&gt;26화.&amp;nbsp;공통&amp;nbsp;언어로서의&amp;nbsp;BDD&amp;nbsp;&amp;mdash;&amp;nbsp;Gherkin으로&amp;nbsp;기획&amp;middot;개발&amp;middot;QA를&amp;nbsp;한&amp;nbsp;문장에&amp;nbsp;모으기.&lt;br /&gt;27화.&amp;nbsp;AI를&amp;nbsp;지휘하는&amp;nbsp;운영&amp;nbsp;모델&amp;nbsp;&amp;mdash;&amp;nbsp;20명&amp;nbsp;규모&amp;nbsp;팀을&amp;nbsp;위한&amp;nbsp;AI&amp;nbsp;오케스트레이션&amp;nbsp;가이드라인과&amp;nbsp;코칭.&lt;br /&gt;28화.&amp;nbsp;표준과&amp;nbsp;AI를&amp;nbsp;잇다&amp;nbsp;&amp;mdash;&amp;nbsp;KOLAS&amp;nbsp;인정&amp;nbsp;요건&amp;middot;품질&amp;nbsp;표준을&amp;nbsp;AI&amp;nbsp;검증&amp;nbsp;체계로&amp;nbsp;연결하는&amp;nbsp;도메인&amp;nbsp;전문성.&lt;br /&gt;29화.&amp;nbsp;데모를&amp;nbsp;프로덕션으로&amp;nbsp;옮기는&amp;nbsp;비용&amp;nbsp;&amp;mdash;&amp;nbsp;30분&amp;nbsp;데모와&amp;nbsp;실전의&amp;nbsp;거리,&amp;nbsp;사람의&amp;nbsp;감독이&amp;nbsp;끝까지&amp;nbsp;필요한&amp;nbsp;이유를&amp;nbsp;균형&amp;nbsp;있게&amp;nbsp;정리.&lt;br /&gt;30화. 테스터에서 품질 아키텍트로 &amp;mdash; 30화의 회고와 다음 길 제시. 연재의 수미상관.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;변경 한 줄이 시스템을 흔들 때, diff부터 읽는 눈이 품질의 첫걸음이다&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테스터로서 AI가 빠르게 코드를 바꿔도 &amp;ldquo;이게 어디에 영향을 줄까?&amp;rdquo;를 제대로 파악하지 못해 불안한가요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Git diff와 PR만 보고도 변경 범위를 가늠하는 눈을 기르면, 불필요한 테스트를 줄이고 중요한 곳에 집중할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 글에서 그 실전 감각을 중학생도 이해하기 쉽게 잡아봅니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;레고 한 조각을 바꿨는데 전체가 흔들리는 이유&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;중학생 때 레고로 큰 성을 쌓았다고 생각해 보세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;빨간 블록 하나를 다른 색으로 바꾸기만 했는데, 그 블록이 성의 기둥 역할을 하고 있었다면?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주변 벽이 무너지고 지붕이 내려앉아요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드도 정확히 그렇습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 파일의 한 함수를 수정했는데, 그 함수를 다른 화면, 다른 API, 심지어 데이터베이스까지 여러 곳에서 쓰고 있다면 작은 변경이 큰 파장을 일으킵니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이걸 미리 알아차리는 가장 강력한 도구가 바로 &lt;b&gt;diff&lt;/b&gt;입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;diff는 &amp;ldquo;이전 코드와 지금 코드가 어떻게 달라졌는지&amp;rdquo;를 줄 단위로 보여주는 변화 기록이에요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PR(Pull Request)은 이 diff를 팀원들이 함께 검토하는 자리입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI 시대에는 AI가 코드를 빠르게 생성하지만, 그 변경이 실제 시스템에 미치는 영향을 판단하는 건 여전히 사람의 몫입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Git은 왜 우리에게 &amp;lsquo;변화의 역사&amp;rsquo;를 알려줄까&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Git을 처음 만난다고 해도 어렵게 생각하지 마세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마치 일기장처럼 &amp;ldquo;오늘 내가 뭐를 바꿨다&amp;rdquo;를 기록하고, 언제든 과거로 돌아갈 수 있게 해주는 도구예요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발자가 코드를 수정하면 Git은 그 변화를 commit(기록)으로 남깁니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 PR을 올리면 팀원들이 &amp;ldquo;이 변경 괜찮아?&amp;rdquo; 하고 diff를 들여다보는 거죠.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테스터인 우리는 여기서 중요한 역할을 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;diff만 봐도 &amp;ldquo;이 부분이 바뀌면 로그인 화면, 결제 기능, 사용자 데이터 저장까지 영향을 줄 수 있겠구나&amp;rdquo; 하고 영향 범위를 추정할 수 있어야 해요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제로 많은 버그는 &amp;ldquo;작은 변경이라고 생각했는데 의외로 넓게 퍼졌다&amp;rdquo;는 데서 옵니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;diff를 잘 읽는 습관을 들이면 이런 함정을 미리 피할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;PR diff만 보고 영향 범위 추정하는 실습&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 직접 연습해 볼까요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제 PR diff를 보는 상황을 가정해 보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어, 개발자가 사용자 프로필 수정 기능을 바꿨다고 해요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;diff를 열어보니 다음과 같은 변화가 보입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;userProfile.js 파일에서 updateUser 함수의 로직이 수정됨&lt;/li&gt;
&lt;li&gt;API 호출 부분에서 새로운 필드(age, gender)를 추가로 보내도록 바뀜&lt;/li&gt;
&lt;li&gt;데이터베이스 스키마를 건드리지는 않았지만, 저장하는 데이터 구조가 조금 달라짐&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 diff만 보고도 우리는 이렇게 생각할 수 있어요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저, 프로필 화면 자체는 물론이고, 이 프로필 데이터를 보여주는 다른 페이지(마이페이지, 커뮤니티 게시글 작성자 정보)에도 영향을 줄 가능성이 큽니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이어서, age와 gender 같은 새로운 정보가 추가되면 개인정보 보호 관련 법규나 동의 화면도 확인해야 해요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특히 API가 바뀌었으니, 모바일 앱 버전과 웹 버전 모두에서 이 API를 호출하는 곳을 찾아 테스트해야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 이전에 캐싱(임시 저장)을 사용하고 있었다면, 캐시가 제대로 갱신되는지도 봐야겠죠.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이처럼 diff를 읽다 보면 자연스럽게 &amp;ldquo;여기, 여기, 저기도 체크해야겠다&amp;rdquo;는 영향 범위 지도가 그려집니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음에는 익숙하지 않지만, 몇 번 반복하다 보면 점점 빨라집니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;변경 기반 테스트로 효율을 높이는 방법&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;diff를 통해 영향 범위를 파악했다면, 이제 테스트도 그 범위에 맞춰 집중합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모든 기능을 처음부터 다시 테스트할 필요 없이, 바뀐 부분과 그 주변만 정밀하게 확인하는 거예요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이게 바로 &lt;b&gt;변경 기반 테스트&lt;/b&gt;의 핵심입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI가 코드를 많이 바꿔주는 시대일수록, 무작정 모든 걸 테스트하는 대신 smart하게 타겟팅하는 능력이 더 중요해집니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PR 검토할 때 diff를 먼저 열고, 관련 파일과 호출 관계를 따라가며 메모하는 습관을 들여보세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러다 보면 자연스럽게 &amp;ldquo;이 변경은 안전해 보이지만, 이 부분은 위험하네&amp;rdquo; 하는 감이 생깁니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;작은 변화를 놓치지 않는 눈으로&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;30분 데모에서는 한두 번의 클릭으로 끝나지만, 실제 프로덕션에서는 수많은 작은 변경이 쌓여 시스템을 만듭니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 변화 하나하나를 diff로 읽고, 영향을 예측하는 눈을 기르는 것이 테스터에서 품질 아키텍트로 가는 첫 단추예요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 습관을 오늘 PR 하나만이라도 적용해 보세요. 처음엔 어색해도, 곧 시스템 전체를 보는 시야가 넓어지는 걸 느낄 수 있을 겁니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 눈이 곧 안정적인 서비스를 지키는 든든한 기반이 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>11. 자료실&amp;middot;기타/테스트 관련 강좌</category>
      <category>AI 시대 QA</category>
      <category>git diff</category>
      <category>PR 리뷰</category>
      <category>변경 기반 테스트</category>
      <category>소프트웨어 변경 관리</category>
      <category>영향 범위 추정</category>
      <category>코드 리뷰</category>
      <category>테스터 Git</category>
      <author>testmanager</author>
      <guid isPermaLink="true">https://testmanager.tistory.com/622</guid>
      <comments>https://testmanager.tistory.com/622#entry622comment</comments>
      <pubDate>Fri, 3 Jul 2026 07:46:07 +0900</pubDate>
    </item>
    <item>
      <title>1화. AI가 짠 코드를 읽는 눈 &amp;mdash; Python 또는 JS/TS 중 하나를 코드 리뷰 가능한 수준까지. 실습: AI가 생성한 테스트 코드의 버그 3개 찾기.</title>
      <link>https://testmanager.tistory.com/621</link>
      <description>&lt;p data-ke-size=&quot;size14&quot;&gt;AI&amp;nbsp;시대의&amp;nbsp;품질&amp;nbsp;아키텍트&amp;nbsp;:&amp;nbsp;테스터에서&amp;nbsp;시스템&amp;nbsp;품질&amp;nbsp;설계자로&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;0.&amp;nbsp;오리엔테이션&lt;br /&gt;0화.&amp;nbsp;30분&amp;nbsp;데모와&amp;nbsp;프로덕션&amp;nbsp;사이의&amp;nbsp;거리&amp;nbsp;&amp;mdash;&amp;nbsp;현실&amp;nbsp;인식과&amp;nbsp;방향&amp;nbsp;제시&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;1.&amp;nbsp;기초&amp;nbsp;체력&lt;br /&gt;AI가&amp;nbsp;짠&amp;nbsp;코드를&amp;nbsp;읽고&amp;nbsp;검증할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;눈과&amp;nbsp;웹&amp;middot;API&amp;nbsp;원리&amp;nbsp;다지기&lt;br /&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;1화.&amp;nbsp;AI가&amp;nbsp;짠&amp;nbsp;코드를&amp;nbsp;읽는&amp;nbsp;눈&amp;nbsp;&amp;mdash;&amp;nbsp;Python&amp;nbsp;또는&amp;nbsp;JS/TS&amp;nbsp;중&amp;nbsp;하나를&amp;nbsp;코드&amp;nbsp;리뷰&amp;nbsp;가능한&amp;nbsp;수준까지.&amp;nbsp;실습:&amp;nbsp;AI가&amp;nbsp;생성한&amp;nbsp;테스트&amp;nbsp;코드의&amp;nbsp;버그&amp;nbsp;3개&amp;nbsp;찾기.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;2화.&amp;nbsp;변경은&amp;nbsp;diff에서&amp;nbsp;시작된다&amp;nbsp;&amp;mdash;&amp;nbsp;Git과&amp;nbsp;PR&amp;nbsp;기반&amp;nbsp;협업,&amp;nbsp;변경&amp;nbsp;기반&amp;nbsp;테스트의&amp;nbsp;첫&amp;nbsp;단추.&amp;nbsp;실습:&amp;nbsp;PR&amp;nbsp;diff만&amp;nbsp;보고&amp;nbsp;영향&amp;nbsp;범위&amp;nbsp;추정해&amp;nbsp;보기.&lt;br /&gt;3화.&amp;nbsp;웹은&amp;nbsp;어떻게&amp;nbsp;움직이는가&amp;nbsp;&amp;mdash;&amp;nbsp;HTTP,&amp;nbsp;쿠키&amp;middot;세션의&amp;nbsp;원리.&amp;nbsp;실습:&amp;nbsp;개발자도구로&amp;nbsp;요청&amp;middot;응답&amp;nbsp;해부.&lt;br /&gt;4화.&amp;nbsp;인증의&amp;nbsp;지도&amp;nbsp;&amp;mdash;&amp;nbsp;OAuth&amp;middot;JWT&amp;middot;RBAC를&amp;nbsp;테스터&amp;nbsp;시선으로.&amp;nbsp;실습:&amp;nbsp;토큰&amp;nbsp;만료&amp;middot;권한&amp;nbsp;우회&amp;nbsp;시나리오&amp;nbsp;설계.&lt;br /&gt;5화.&amp;nbsp;API의&amp;nbsp;두&amp;nbsp;얼굴&amp;nbsp;&amp;mdash;&amp;nbsp;REST와&amp;nbsp;GraphQL의&amp;nbsp;차이와&amp;nbsp;테스트&amp;nbsp;관점.&amp;nbsp;실습:&amp;nbsp;같은&amp;nbsp;기능을&amp;nbsp;두&amp;nbsp;방식으로&amp;nbsp;호출&amp;middot;검증.&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;2.&amp;nbsp;테스트&amp;nbsp;자동화&lt;br /&gt;Playwright를 주력으로 깊이 익히기&lt;br /&gt;6화.&amp;nbsp;왜&amp;nbsp;Playwright인가&amp;nbsp;&amp;mdash;&amp;nbsp;도구&amp;nbsp;선택의&amp;nbsp;근거와&amp;nbsp;첫&amp;nbsp;테스트&amp;nbsp;작성.&lt;br /&gt;7화.&amp;nbsp;플래키의&amp;nbsp;근원,&amp;nbsp;셀렉터와&amp;nbsp;대기&amp;nbsp;&amp;mdash;&amp;nbsp;안정적&amp;nbsp;셀렉터와&amp;nbsp;비동기&amp;nbsp;대기&amp;nbsp;전략.&lt;br /&gt;8화.&amp;nbsp;실패를&amp;nbsp;영상으로&amp;nbsp;읽는다&amp;nbsp;&amp;mdash;&amp;nbsp;Trace&amp;nbsp;Viewer로&amp;nbsp;원인&amp;nbsp;추적.&lt;br /&gt;9화.&amp;nbsp;계약을&amp;nbsp;테스트하라&amp;nbsp;&amp;mdash;&amp;nbsp;API&amp;middot;계약&amp;nbsp;테스트(OpenAPI/GraphQL&amp;nbsp;schema&amp;nbsp;기반).&lt;br /&gt;10화.&amp;nbsp;눈에&amp;nbsp;보이는&amp;nbsp;회귀,&amp;nbsp;모두에게&amp;nbsp;열린&amp;nbsp;화면&amp;nbsp;&amp;mdash;&amp;nbsp;시각적&amp;nbsp;회귀와&amp;nbsp;접근성&amp;nbsp;자동&amp;nbsp;검사.&amp;nbsp;(Selenium&amp;middot;Appium은&amp;nbsp;레거시&amp;middot;모바일&amp;nbsp;대응용으로&amp;nbsp;짧게&amp;nbsp;짚기)&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;3.&amp;nbsp;AI&amp;nbsp;활용&amp;middot;MCP&amp;nbsp;(연재&amp;nbsp;핵심)&lt;br /&gt;10화. AI를 단순 도구가 아닌 차별화 무기로 만드는 구간&lt;br /&gt;11화.&amp;nbsp;프롬프트로&amp;nbsp;테스트를&amp;nbsp;설계하기&amp;nbsp;&amp;mdash;&amp;nbsp;명세&amp;middot;PR을&amp;nbsp;입력해&amp;nbsp;케이스를&amp;nbsp;생성&amp;middot;우선순위화하는&amp;nbsp;패턴&amp;nbsp;정립.&lt;br /&gt;12화.&amp;nbsp;에이전트는&amp;nbsp;무엇을&amp;nbsp;대신하는가&amp;nbsp;&amp;mdash;&amp;nbsp;에이전트형&amp;nbsp;테스트의&amp;nbsp;개념과&amp;nbsp;한계(수동&amp;nbsp;노력&amp;nbsp;최대&amp;nbsp;45%&amp;nbsp;절감&amp;nbsp;추정).&lt;br /&gt;13화.&amp;nbsp;스스로&amp;nbsp;고치는&amp;nbsp;테스트,&amp;nbsp;그리고&amp;nbsp;그&amp;nbsp;한계&amp;nbsp;&amp;mdash;&amp;nbsp;자가&amp;nbsp;치유와&amp;nbsp;AI&amp;nbsp;Healer.&amp;nbsp;셀렉터&amp;middot;DOM&amp;nbsp;변경에서&amp;nbsp;75%+&amp;nbsp;복구,&amp;nbsp;그러나&amp;nbsp;복잡한&amp;nbsp;로직&amp;nbsp;버그는&amp;nbsp;사람&amp;nbsp;몫.&lt;br /&gt;14화.&amp;nbsp;npx&amp;nbsp;playwright&amp;nbsp;init-agents&amp;nbsp;&amp;mdash;&amp;nbsp;첫&amp;nbsp;MCP&amp;nbsp;실습&amp;nbsp;&amp;mdash;&amp;nbsp;접근성&amp;nbsp;트리&amp;nbsp;기반&amp;nbsp;Playwright&amp;nbsp;MCP&amp;nbsp;시작하기.&lt;br /&gt;15화.&amp;nbsp;MCP로&amp;nbsp;통합을&amp;nbsp;검증하다&amp;nbsp;&amp;mdash;&amp;nbsp;MCP&amp;nbsp;기반&amp;nbsp;통합&amp;nbsp;검증&amp;nbsp;실습.&lt;br /&gt;16화.&amp;nbsp;환각을&amp;nbsp;거르는&amp;nbsp;사람&amp;nbsp;&amp;mdash;&amp;nbsp;AI&amp;nbsp;결과의&amp;nbsp;환각&amp;middot;오탐을&amp;nbsp;걸러내는&amp;nbsp;인간&amp;nbsp;검증&amp;nbsp;체계&amp;nbsp;설계.&amp;nbsp;직무&amp;nbsp;특성상&amp;nbsp;가장&amp;nbsp;큰&amp;nbsp;강점이&amp;nbsp;되는&amp;nbsp;지점.&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;4.&amp;nbsp;파이프라인&amp;middot;운영&lt;br /&gt;개인기를&amp;nbsp;조직의&amp;nbsp;신뢰&amp;nbsp;시스템으로&amp;nbsp;연결&lt;br /&gt;17화.&amp;nbsp;문&amp;nbsp;앞의&amp;nbsp;품질&amp;nbsp;게이트&amp;nbsp;&amp;mdash;&amp;nbsp;CI/CD&amp;nbsp;품질&amp;nbsp;게이트&amp;nbsp;구성.&lt;br /&gt;18화.&amp;nbsp;플래키를&amp;nbsp;격리하라&amp;nbsp;&amp;mdash;&amp;nbsp;불안정&amp;nbsp;테스트&amp;nbsp;격리와&amp;nbsp;실패&amp;nbsp;원인&amp;nbsp;자동&amp;nbsp;분류.&lt;br /&gt;19화.&amp;nbsp;관측성을&amp;nbsp;테스트로&amp;nbsp;환원하기&amp;nbsp;&amp;mdash;&amp;nbsp;로그&amp;middot;메트릭&amp;middot;트레이스(OpenTelemetry)를&amp;nbsp;테스트&amp;nbsp;사고로&amp;nbsp;끌어오기.&lt;br /&gt;20화.&amp;nbsp;진짜&amp;nbsp;같은&amp;nbsp;가짜&amp;nbsp;데이터&amp;nbsp;&amp;mdash;&amp;nbsp;테스트&amp;nbsp;데이터&amp;nbsp;합성과&amp;nbsp;마스킹.&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;5.&amp;nbsp;비기능&amp;nbsp;영역&lt;br /&gt;눈에&amp;nbsp;보이지&amp;nbsp;않는&amp;nbsp;품질&amp;nbsp;지키기&lt;br /&gt;21화.&amp;nbsp;무게를&amp;nbsp;견디는가&amp;nbsp;&amp;mdash;&amp;nbsp;k6/JMeter로&amp;nbsp;부하&amp;middot;스트레스&amp;nbsp;테스트.&lt;br /&gt;22화.&amp;nbsp;손안의&amp;nbsp;성능&amp;nbsp;&amp;mdash;&amp;nbsp;모바일&amp;nbsp;성능&amp;nbsp;지표(FPS&amp;middot;시작속도&amp;middot;메모리&amp;middot;배터리).&lt;br /&gt;23화.&amp;nbsp;공격자처럼&amp;nbsp;생각하기&amp;nbsp;&amp;mdash;&amp;nbsp;OWASP&amp;nbsp;Top&amp;nbsp;10으로&amp;nbsp;본&amp;nbsp;보안&amp;nbsp;기본기.&lt;br /&gt;24화.&amp;nbsp;코드를&amp;nbsp;스캔하는&amp;nbsp;도구들&amp;nbsp;&amp;mdash;&amp;nbsp;SAST&amp;middot;DAST&amp;middot;SCA(SonarQube&amp;middot;OWASP&amp;nbsp;ZAP&amp;middot;Snyk)&amp;nbsp;실전.&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;6.&amp;nbsp;전략&amp;middot;리더십&amp;middot;표준&lt;br /&gt;아키텍트로서의&amp;nbsp;설계&amp;middot;운영&amp;middot;리더십&lt;br /&gt;25화.&amp;nbsp;테스트&amp;nbsp;가능성을&amp;nbsp;설계에&amp;nbsp;심다&amp;nbsp;&amp;mdash;&amp;nbsp;Testability를&amp;nbsp;기획&amp;middot;개발&amp;nbsp;단계로&amp;nbsp;끌어올리기.&lt;br /&gt;26화.&amp;nbsp;공통&amp;nbsp;언어로서의&amp;nbsp;BDD&amp;nbsp;&amp;mdash;&amp;nbsp;Gherkin으로&amp;nbsp;기획&amp;middot;개발&amp;middot;QA를&amp;nbsp;한&amp;nbsp;문장에&amp;nbsp;모으기.&lt;br /&gt;27화.&amp;nbsp;AI를&amp;nbsp;지휘하는&amp;nbsp;운영&amp;nbsp;모델&amp;nbsp;&amp;mdash;&amp;nbsp;20명&amp;nbsp;규모&amp;nbsp;팀을&amp;nbsp;위한&amp;nbsp;AI&amp;nbsp;오케스트레이션&amp;nbsp;가이드라인과&amp;nbsp;코칭.&lt;br /&gt;28화.&amp;nbsp;표준과&amp;nbsp;AI를&amp;nbsp;잇다&amp;nbsp;&amp;mdash;&amp;nbsp;KOLAS&amp;nbsp;인정&amp;nbsp;요건&amp;middot;품질&amp;nbsp;표준을&amp;nbsp;AI&amp;nbsp;검증&amp;nbsp;체계로&amp;nbsp;연결하는&amp;nbsp;도메인&amp;nbsp;전문성.&lt;br /&gt;29화.&amp;nbsp;데모를&amp;nbsp;프로덕션으로&amp;nbsp;옮기는&amp;nbsp;비용&amp;nbsp;&amp;mdash;&amp;nbsp;30분&amp;nbsp;데모와&amp;nbsp;실전의&amp;nbsp;거리,&amp;nbsp;사람의&amp;nbsp;감독이&amp;nbsp;끝까지&amp;nbsp;필요한&amp;nbsp;이유를&amp;nbsp;균형&amp;nbsp;있게&amp;nbsp;정리.&lt;br /&gt;30화.&amp;nbsp;테스터에서&amp;nbsp;품질&amp;nbsp;아키텍트로&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;AI가 코드를 뚝딱 만들어도, 버그를 찾아내는 눈을 기르는 순간&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테스터인데 AI가 쏟아내는 코드를 보면서 &amp;ldquo;이게 제대로 된 건가?&amp;rdquo; 싶어 불안한가요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Python이나 JavaScript/TypeScript 중 하나를 코드 리뷰할 수 있는 수준까지 끌어올리면, AI의 빠른 생산성을 진짜 품질로 바꿀 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이해하기 쉽게 비유하며, 실제 AI 생성 테스트 코드의 버그를 직접 찾아보는 실습까지 준비했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;레고 설명서를 읽듯 코드 읽는 눈부터 시작하자&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;중학생 때 레고 설명서를 보면서 &amp;ldquo;이 조각은 여기 연결되고, 이 부분은 움직이게 하는구나&amp;rdquo; 하고 이해했던 기억이 있나요?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드도 똑같아요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설명서처럼 코드 한 줄 한 줄이 &amp;ldquo;이걸 이렇게 해라&amp;rdquo;는 지시사항입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI가 설명서를 대신 써주지만, 설명서에 잘못된 부분이 있으면 레고 작품이 무너지죠.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI 시대 테스터는 코드를 처음부터 짜는 사람이 아니라, &lt;b&gt;AI가 만든 코드를 제대로 읽고 검증하는 사람&lt;/b&gt;이 되어야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Python은 비교적 읽기 쉽고, JS(JavaScript)/TS(TypeScript)는 웹 테스트(Playwright)에서 자주 쓰이니 둘 다 기본 감각을 익히는 게 좋습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서는 실습 편의를 위해 Playwright 기반 JavaScript 코드를 중심으로 설명하겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;코드의 기본 구조를 먼저 잡아보자&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드를 볼 때 가장 먼저 보는 건 큰 그림입니다. 마치 레고 상자 뚜껑에 그려진 완성품 사진처럼요.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;import / require&lt;/b&gt;: &amp;ldquo;어떤 도구를 사용할 거야&amp;rdquo;를 알려주는 부분&lt;/li&gt;
&lt;li&gt;&lt;b&gt;테스트 함수&lt;/b&gt;: &amp;ldquo;이걸 실행해 볼게&amp;rdquo;라는 본체&lt;/li&gt;
&lt;li&gt;&lt;b&gt;expect / assert&lt;/b&gt;: &amp;ldquo;이 결과가 나와야 정상이야&amp;rdquo;라는 확인 부분&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어 Playwright 테스트 코드는 보통 이렇게 시작합니다.&lt;/p&gt;
&lt;pre class=&quot;cs&quot;&gt;&lt;code&gt;const { test, expect } = require('@playwright/test');

test('로그인 테스트', async ({ page }) =&amp;gt; {
  await page.goto('https://example.com/login');
  // ... 나머지 코드
});&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 구조를 익히면 AI가 아무리 복잡한 코드를 만들어도 &amp;ldquo;아, 이건 로그인 화면을 테스트하는구나&amp;rdquo; 하고 바로 감을 잡을 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;AI가 만든 테스트 코드에서 흔히 보이는 버그 3가지 실습&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 직접 실습해 볼 차례예요. 아래는 AI에게 &amp;ldquo;Playwright로 로그인 기능을 테스트해 달라&amp;rdquo;고 요청했을 때 나올 법한 코드입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일부러 3개의 버그를 넣었어요. 코드를 천천히 읽어보고, 어디가 이상한지 찾아보세요.&lt;/p&gt;
&lt;pre class=&quot;cs&quot;&gt;&lt;code&gt;const { test, expect } = require('@playwright/test');

test('사용자 로그인 성공', async ({ page }) =&amp;gt; {
  await page.goto('https://example.com');

  await page.click('#login-button');
  await page.fill('#username', 'testuser');
  await page.fill('#password', 'password123');

  await page.waitForTimeout(5000); // 로그인 대기

  const welcomeText = await page.textContent('.welcome');
  expect(welcomeText).toBe('환영합니다'); 

  await page.screenshot({ path: 'login-success.png' });
});&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;버그를 찾았나요? 하나씩 함께 풀어보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;첫 번째 버그&lt;/b&gt;: &lt;code&gt;await page.waitForTimeout(5000)&lt;/code&gt;&lt;br /&gt;이건 &amp;ldquo;무조건 5초 기다려&amp;rdquo;라는 명령인데, 불안정한 테스트(플래키)의 주범입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;네트워크가 빠르면 2초면 충분한데도 5초를 기다리거나, 느리면 실패합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제대로 된 방법은 &lt;code&gt;waitForSelector&lt;/code&gt;나 &lt;code&gt;waitForResponse&lt;/code&gt;처럼 실제 조건을 기다리는 거예요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;두 번째 버그&lt;/b&gt;: &lt;code&gt;expect(welcomeText).toBe('환영합니다')&lt;/code&gt;&lt;br /&gt;텍스트를 정확히 비교하는데, 실제 사이트에서는 &amp;ldquo;환영합니다, testuser님!&amp;rdquo;처럼 뒤에 이름이 붙거나 공백이 있을 수 있습니다. &lt;code&gt;toContain('환영합니다')&lt;/code&gt;처럼 포함 여부를 확인하는 게 더 안전합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;세 번째 버그&lt;/b&gt;: 페이지 URL을 '&lt;a href=&quot;https://example.com'%EC%9C%BC%EB%A1%9C&quot;&gt;https://example.com'으로&lt;/a&gt; 갔는데, 로그인 버튼과 입력창은 로그인 페이지에 있을 가능성이 큽니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;goto&lt;/code&gt; 후 바로 로그인 페이지로 이동하거나, 로그인 링크를 클릭하는 단계가 빠졌어요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;영향 범위를 제대로 고려하지 않은 전형적인 실수입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이처럼 AI 코드는 빠르게 나오지만, 이런 작은 구멍이 실제 실행에서 큰 문제를 만듭니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여러분도 AI에게 코드를 만들게 한 뒤, 위와 같은 눈으로 검토하는 연습을 반복해 보세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;코드 읽는 눈이 품질 아키텍트의 기초가 된다&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음엔 코드가 낯설게 느껴지겠지만, 레고 설명서를 여러 번 보다 보면 자연스럽게 익숙해지듯, 매일 조금씩 PR diff와 테스트 코드를 읽다 보면 감이 생깁니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Python을 선호한다면 Pytest나 Selenium 코드로, JS/TS를 좋아한다면 Playwright로 연습하면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 눈을 기르면 단순히 &amp;ldquo;테스트가 실패했어요&amp;rdquo;가 아니라 &amp;ldquo;이 부분이 이렇게 바뀌어서 실패하는구나, 이렇게 고치면 되겠네&amp;rdquo;까지 이야기할 수 있게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI가 코드를 만드는 시대에, 그 코드를 제대로 읽고 다듬는 사람이 바로 진짜 품질을 설계하는 아키텍트입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;작은 실습 하나부터 시작해 보세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘 AI에게 테스트 코드 하나를 만들어 달라고 한 뒤, 위처럼 3가지 이상의 개선점을 찾아보는 거예요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 연습이 쌓일수록 시스템 전체를 보는 시야가 넓어질 겁니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>11. 자료실&amp;middot;기타/테스트 관련 강좌</category>
      <category>AI 생성 코드 리뷰</category>
      <category>AI 시대 QA</category>
      <category>Playwright 테스트</category>
      <category>Python JS 코드 읽기</category>
      <category>변경 기반 검증</category>
      <category>테스터 코드 리뷰</category>
      <category>테스트 버그 찾기</category>
      <category>품질 아키텍트 기초</category>
      <author>testmanager</author>
      <guid isPermaLink="true">https://testmanager.tistory.com/621</guid>
      <comments>https://testmanager.tistory.com/621#entry621comment</comments>
      <pubDate>Thu, 2 Jul 2026 07:43:34 +0900</pubDate>
    </item>
    <item>
      <title>0화. 30분 데모와 프로덕션 사이의 거리 &amp;mdash; 현실 인식과 방향 제시</title>
      <link>https://testmanager.tistory.com/620</link>
      <description>&lt;p data-ke-size=&quot;size14&quot;&gt;AI&amp;nbsp;시대의&amp;nbsp;품질&amp;nbsp;아키텍트&amp;nbsp;:&amp;nbsp;테스터에서&amp;nbsp;시스템&amp;nbsp;품질&amp;nbsp;설계자로&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;0.&amp;nbsp;오리엔테이션&lt;br /&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;0화.&amp;nbsp;30분&amp;nbsp;데모와&amp;nbsp;프로덕션&amp;nbsp;사이의&amp;nbsp;거리&amp;nbsp;&amp;mdash;&amp;nbsp;현실&amp;nbsp;인식과&amp;nbsp;방향&amp;nbsp;제시&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;1.&amp;nbsp;기초&amp;nbsp;체력&lt;br /&gt;AI가&amp;nbsp;짠&amp;nbsp;코드를&amp;nbsp;읽고&amp;nbsp;검증할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;눈과&amp;nbsp;웹&amp;middot;API&amp;nbsp;원리&amp;nbsp;다지기&lt;br /&gt;1화.&amp;nbsp;AI가&amp;nbsp;짠&amp;nbsp;코드를&amp;nbsp;읽는&amp;nbsp;눈&amp;nbsp;&amp;mdash;&amp;nbsp;Python&amp;nbsp;또는&amp;nbsp;JS/TS&amp;nbsp;중&amp;nbsp;하나를&amp;nbsp;코드&amp;nbsp;리뷰&amp;nbsp;가능한&amp;nbsp;수준까지.&amp;nbsp;실습:&amp;nbsp;AI가&amp;nbsp;생성한&amp;nbsp;테스트&amp;nbsp;코드의&amp;nbsp;버그&amp;nbsp;3개&amp;nbsp;찾기.&lt;br /&gt;2화.&amp;nbsp;변경은&amp;nbsp;diff에서&amp;nbsp;시작된다&amp;nbsp;&amp;mdash;&amp;nbsp;Git과&amp;nbsp;PR&amp;nbsp;기반&amp;nbsp;협업,&amp;nbsp;변경&amp;nbsp;기반&amp;nbsp;테스트의&amp;nbsp;첫&amp;nbsp;단추.&amp;nbsp;실습:&amp;nbsp;PR&amp;nbsp;diff만&amp;nbsp;보고&amp;nbsp;영향&amp;nbsp;범위&amp;nbsp;추정해&amp;nbsp;보기.&lt;br /&gt;3화.&amp;nbsp;웹은&amp;nbsp;어떻게&amp;nbsp;움직이는가&amp;nbsp;&amp;mdash;&amp;nbsp;HTTP,&amp;nbsp;쿠키&amp;middot;세션의&amp;nbsp;원리.&amp;nbsp;실습:&amp;nbsp;개발자도구로&amp;nbsp;요청&amp;middot;응답&amp;nbsp;해부.&lt;br /&gt;4화.&amp;nbsp;인증의&amp;nbsp;지도&amp;nbsp;&amp;mdash;&amp;nbsp;OAuth&amp;middot;JWT&amp;middot;RBAC를&amp;nbsp;테스터&amp;nbsp;시선으로.&amp;nbsp;실습:&amp;nbsp;토큰&amp;nbsp;만료&amp;middot;권한&amp;nbsp;우회&amp;nbsp;시나리오&amp;nbsp;설계.&lt;br /&gt;5화.&amp;nbsp;API의&amp;nbsp;두&amp;nbsp;얼굴&amp;nbsp;&amp;mdash;&amp;nbsp;REST와&amp;nbsp;GraphQL의&amp;nbsp;차이와&amp;nbsp;테스트&amp;nbsp;관점.&amp;nbsp;실습:&amp;nbsp;같은&amp;nbsp;기능을&amp;nbsp;두&amp;nbsp;방식으로&amp;nbsp;호출&amp;middot;검증.&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;2.&amp;nbsp;테스트&amp;nbsp;자동화&lt;br /&gt;Playwright를 주력으로 깊이 익히기&lt;br /&gt;6화.&amp;nbsp;왜&amp;nbsp;Playwright인가&amp;nbsp;&amp;mdash;&amp;nbsp;도구&amp;nbsp;선택의&amp;nbsp;근거와&amp;nbsp;첫&amp;nbsp;테스트&amp;nbsp;작성.&lt;br /&gt;7화.&amp;nbsp;플래키의&amp;nbsp;근원,&amp;nbsp;셀렉터와&amp;nbsp;대기&amp;nbsp;&amp;mdash;&amp;nbsp;안정적&amp;nbsp;셀렉터와&amp;nbsp;비동기&amp;nbsp;대기&amp;nbsp;전략.&lt;br /&gt;8화.&amp;nbsp;실패를&amp;nbsp;영상으로&amp;nbsp;읽는다&amp;nbsp;&amp;mdash;&amp;nbsp;Trace&amp;nbsp;Viewer로&amp;nbsp;원인&amp;nbsp;추적.&lt;br /&gt;9화.&amp;nbsp;계약을&amp;nbsp;테스트하라&amp;nbsp;&amp;mdash;&amp;nbsp;API&amp;middot;계약&amp;nbsp;테스트(OpenAPI/GraphQL&amp;nbsp;schema&amp;nbsp;기반).&lt;br /&gt;10화.&amp;nbsp;눈에&amp;nbsp;보이는&amp;nbsp;회귀,&amp;nbsp;모두에게&amp;nbsp;열린&amp;nbsp;화면&amp;nbsp;&amp;mdash;&amp;nbsp;시각적&amp;nbsp;회귀와&amp;nbsp;접근성&amp;nbsp;자동&amp;nbsp;검사.&amp;nbsp;(Selenium&amp;middot;Appium은&amp;nbsp;레거시&amp;middot;모바일&amp;nbsp;대응용으로&amp;nbsp;짧게&amp;nbsp;짚기)&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;3.&amp;nbsp;AI&amp;nbsp;활용&amp;middot;MCP&amp;nbsp;(연재&amp;nbsp;핵심)&lt;br /&gt;AI를&amp;nbsp;단순&amp;nbsp;도구가&amp;nbsp;아닌&amp;nbsp;차별화&amp;nbsp;무기로&amp;nbsp;만드는&amp;nbsp;구간&lt;br /&gt;11화.&amp;nbsp;프롬프트로&amp;nbsp;테스트를&amp;nbsp;설계하기&amp;nbsp;&amp;mdash;&amp;nbsp;명세&amp;middot;PR을&amp;nbsp;입력해&amp;nbsp;케이스를&amp;nbsp;생성&amp;middot;우선순위화하는&amp;nbsp;패턴&amp;nbsp;정립.&lt;br /&gt;12화.&amp;nbsp;에이전트는&amp;nbsp;무엇을&amp;nbsp;대신하는가&amp;nbsp;&amp;mdash;&amp;nbsp;에이전트형&amp;nbsp;테스트의&amp;nbsp;개념과&amp;nbsp;한계(수동&amp;nbsp;노력&amp;nbsp;최대&amp;nbsp;45%&amp;nbsp;절감&amp;nbsp;추정).&lt;br /&gt;13화.&amp;nbsp;스스로&amp;nbsp;고치는&amp;nbsp;테스트,&amp;nbsp;그리고&amp;nbsp;그&amp;nbsp;한계&amp;nbsp;&amp;mdash;&amp;nbsp;자가&amp;nbsp;치유와&amp;nbsp;AI&amp;nbsp;Healer.&amp;nbsp;셀렉터&amp;middot;DOM&amp;nbsp;변경에서&amp;nbsp;75%+&amp;nbsp;복구,&amp;nbsp;그러나&amp;nbsp;복잡한&amp;nbsp;로직&amp;nbsp;버그는&amp;nbsp;사람&amp;nbsp;몫.&lt;br /&gt;14화.&amp;nbsp;npx&amp;nbsp;playwright&amp;nbsp;init-agents&amp;nbsp;&amp;mdash;&amp;nbsp;첫&amp;nbsp;MCP&amp;nbsp;실습&amp;nbsp;&amp;mdash;&amp;nbsp;접근성&amp;nbsp;트리&amp;nbsp;기반&amp;nbsp;Playwright&amp;nbsp;MCP&amp;nbsp;시작하기.&lt;br /&gt;15화.&amp;nbsp;MCP로&amp;nbsp;통합을&amp;nbsp;검증하다&amp;nbsp;&amp;mdash;&amp;nbsp;MCP&amp;nbsp;기반&amp;nbsp;통합&amp;nbsp;검증&amp;nbsp;실습.&lt;br /&gt;16화.&amp;nbsp;환각을&amp;nbsp;거르는&amp;nbsp;사람&amp;nbsp;&amp;mdash;&amp;nbsp;AI&amp;nbsp;결과의&amp;nbsp;환각&amp;middot;오탐을&amp;nbsp;걸러내는&amp;nbsp;인간&amp;nbsp;검증&amp;nbsp;체계&amp;nbsp;설계.&amp;nbsp;직무&amp;nbsp;특성상&amp;nbsp;가장&amp;nbsp;큰&amp;nbsp;강점이&amp;nbsp;되는&amp;nbsp;지점.&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;4.&amp;nbsp;파이프라인&amp;middot;운영&lt;br /&gt;개인기를&amp;nbsp;조직의&amp;nbsp;신뢰&amp;nbsp;시스템으로&amp;nbsp;연결&lt;br /&gt;17화.&amp;nbsp;문&amp;nbsp;앞의&amp;nbsp;품질&amp;nbsp;게이트&amp;nbsp;&amp;mdash;&amp;nbsp;CI/CD&amp;nbsp;품질&amp;nbsp;게이트&amp;nbsp;구성.&lt;br /&gt;18화.&amp;nbsp;플래키를&amp;nbsp;격리하라&amp;nbsp;&amp;mdash;&amp;nbsp;불안정&amp;nbsp;테스트&amp;nbsp;격리와&amp;nbsp;실패&amp;nbsp;원인&amp;nbsp;자동&amp;nbsp;분류.&lt;br /&gt;19화.&amp;nbsp;관측성을&amp;nbsp;테스트로&amp;nbsp;환원하기&amp;nbsp;&amp;mdash;&amp;nbsp;로그&amp;middot;메트릭&amp;middot;트레이스(OpenTelemetry)를&amp;nbsp;테스트&amp;nbsp;사고로&amp;nbsp;끌어오기.&lt;br /&gt;20화.&amp;nbsp;진짜&amp;nbsp;같은&amp;nbsp;가짜&amp;nbsp;데이터&amp;nbsp;&amp;mdash;&amp;nbsp;테스트&amp;nbsp;데이터&amp;nbsp;합성과&amp;nbsp;마스킹.&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;5.&amp;nbsp;비기능&amp;nbsp;영역&lt;br /&gt;눈에&amp;nbsp;보이지&amp;nbsp;않는&amp;nbsp;품질&amp;nbsp;지키기&lt;br /&gt;21화.&amp;nbsp;무게를&amp;nbsp;견디는가&amp;nbsp;&amp;mdash;&amp;nbsp;k6/JMeter로&amp;nbsp;부하&amp;middot;스트레스&amp;nbsp;테스트.&lt;br /&gt;22화.&amp;nbsp;손안의&amp;nbsp;성능&amp;nbsp;&amp;mdash;&amp;nbsp;모바일&amp;nbsp;성능&amp;nbsp;지표(FPS&amp;middot;시작속도&amp;middot;메모리&amp;middot;배터리).&lt;br /&gt;23화.&amp;nbsp;공격자처럼&amp;nbsp;생각하기&amp;nbsp;&amp;mdash;&amp;nbsp;OWASP&amp;nbsp;Top&amp;nbsp;10으로&amp;nbsp;본&amp;nbsp;보안&amp;nbsp;기본기.&lt;br /&gt;24화.&amp;nbsp;코드를&amp;nbsp;스캔하는&amp;nbsp;도구들&amp;nbsp;&amp;mdash;&amp;nbsp;SAST&amp;middot;DAST&amp;middot;SCA(SonarQube&amp;middot;OWASP&amp;nbsp;ZAP&amp;middot;Snyk)&amp;nbsp;실전.&lt;br /&gt;&lt;br /&gt;Part&amp;nbsp;6.&amp;nbsp;전략&amp;middot;리더십&amp;middot;표준&lt;br /&gt;아키텍트로서의&amp;nbsp;설계&amp;middot;운영&amp;middot;리더십&lt;br /&gt;25화.&amp;nbsp;테스트&amp;nbsp;가능성을&amp;nbsp;설계에&amp;nbsp;심다&amp;nbsp;&amp;mdash;&amp;nbsp;Testability를&amp;nbsp;기획&amp;middot;개발&amp;nbsp;단계로&amp;nbsp;끌어올리기.&lt;br /&gt;26화.&amp;nbsp;공통&amp;nbsp;언어로서의&amp;nbsp;BDD&amp;nbsp;&amp;mdash;&amp;nbsp;Gherkin으로&amp;nbsp;기획&amp;middot;개발&amp;middot;QA를&amp;nbsp;한&amp;nbsp;문장에&amp;nbsp;모으기.&lt;br /&gt;27화.&amp;nbsp;AI를&amp;nbsp;지휘하는&amp;nbsp;운영&amp;nbsp;모델&amp;nbsp;&amp;mdash;&amp;nbsp;20명&amp;nbsp;규모&amp;nbsp;팀을&amp;nbsp;위한&amp;nbsp;AI&amp;nbsp;오케스트레이션&amp;nbsp;가이드라인과&amp;nbsp;코칭.&lt;br /&gt;28화.&amp;nbsp;표준과&amp;nbsp;AI를&amp;nbsp;잇다&amp;nbsp;&amp;mdash;&amp;nbsp;KOLAS&amp;nbsp;인정&amp;nbsp;요건&amp;middot;품질&amp;nbsp;표준을&amp;nbsp;AI&amp;nbsp;검증&amp;nbsp;체계로&amp;nbsp;연결하는&amp;nbsp;도메인&amp;nbsp;전문성.&lt;br /&gt;29화.&amp;nbsp;데모를&amp;nbsp;프로덕션으로&amp;nbsp;옮기는&amp;nbsp;비용&amp;nbsp;&amp;mdash;&amp;nbsp;30분&amp;nbsp;데모와&amp;nbsp;실전의&amp;nbsp;거리,&amp;nbsp;사람의&amp;nbsp;감독이&amp;nbsp;끝까지&amp;nbsp;필요한&amp;nbsp;이유를&amp;nbsp;균형&amp;nbsp;있게&amp;nbsp;정리.&lt;br /&gt;30화.&amp;nbsp;테스터에서&amp;nbsp;품질&amp;nbsp;아키텍트로&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;데모는 빛나는데 왜 프로덕션은 자꾸 깨질까&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;상상해 보세요. 학교에서 과학 발표를 준비할 때, 집에서 실험한 모델은 완벽하게 작동했어요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;친구들 앞에서 버튼만 누르면 로봇이 춤을 추고 불꽃까지 터졌죠.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런데 실제 학교 강당 무대에 올라가니? 조명이 너무 밝아서 센서가 헷갈리고, 바닥이 미끄러워 로봇이 자꾸 넘어지네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;관객들은 &amp;ldquo;와!&amp;rdquo; 하다가도 금세 실망합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;소프트웨어도 완전히 똑같아요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발자나 AI가 &amp;ldquo;완성!&amp;rdquo;이라고 내놓는 30분 데모는 반짝반짝 빛납니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기능은 보이고, 화면은 예쁘고, 속도도 빠르죠.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 실제 사용자 수천 명이 동시에 접속하고, 예상치 못한 네트워크 지연이 생기고, 오래된 기기에서 접근하면? 그때부터 이야기가 달라집니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오류가 쏟아지고, 데이터가 꼬이며, 보안 구멍이 드러나요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이게 바로 &lt;b&gt;30분 데모와 프로덕션 사이의 거리&lt;/b&gt;예요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;많은 팀이 이 거리를 과소평가하다가 큰 비용을 치릅니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 테스터로 수많은 프로젝트를 겪으면서 이 간극을 뼈저리게 느꼈고, 이제는 그 간극을 좁히는 &amp;lsquo;품질 아키텍트&amp;rsquo;로서 팀을 이끌고 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;현실을 직시해야 변화가 시작된다&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;학생 때 레고로 로봇을 만들 때를 떠올려 보세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;작은 조각 몇 개로 예쁜 모양은 금방 나오지만, 실제로 움직이게 하려면 관절을 어떻게 연결할지, 무게 중심은 어디에 둘지, 배터리는 얼마나 갈지 미리 계산해야 해요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;계산 없이 그냥 붙이면 로봇은 몇 초 만에 고장 납니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI 시대의 소프트웨어도 마찬가지입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI가 코드를 빠르게 만들어주고, 테스트 케이스도 제안해주지만, 그 결과물이 실제 운영 환경에서 버틸 수 있는지는 별개의 문제예요.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사용자가 갑자기 폭주할 때 서버는 어떻게 견딜까?&lt;/li&gt;
&lt;li&gt;오래된 브라우저나 느린 인터넷에서는 화면이 제대로 보일까?&lt;/li&gt;
&lt;li&gt;누군가 악의적으로 공격하면 데이터는 안전할까?&lt;/li&gt;
&lt;li&gt;6개월 후 기능이 바뀌었을 때 기존 테스트는 여전히 믿을 수 있을까?&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 질문에 답하지 못하면, 아무리 멋진 AI 도구를 써도 결국 &amp;lsquo;데모용 장난감&amp;rsquo;에 그칩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;진짜 품질 아키텍트는 이런 질문을 미리 던지고, 시스템 전체에 답을 설계하는 사람입니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;이 연재에서 함께 걸을 길&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 시리즈는 테스터인 당신이 시스템 품질 설계자로 한 걸음씩 나아갈 수 있도록 돕기 위해 만들었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;중학생도 이해할 수 있게 비유를 많이 쓰면서, 실전에서 바로 써먹을 수 있는 내용만 담을 거예요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 Part 0에서는 현실을 정확히 인식하는 데 집중합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데모와 프로덕션의 차이를 직시하고, 앞으로 배울 방향을 함께 그려보죠.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이어서 기초 체력을 다지는 Part 1에서는 AI가 만든 코드를 읽는 눈, Git으로 변경을 관리하는 습관, 웹과 API가 어떻게 움직이는지, 인증의 기본 원리를 차근차근 익힙니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마치 자전거 타기를 배울 때 균형 잡는 법부터 배우는 것처럼요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Part 2에서는 Playwright라는 든든한 도구를 깊이 파고들어 테스트 자동화를 내 것으로 만듭니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;불안정한 테스트(플래키)를 잡는 방법, 실패 영상을 통해 원인을 빠르게 찾는 기술까지.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Part 3이 연재의 핵심입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI를 단순 도구가 아닌 &amp;lsquo;차별화 무기&amp;rsquo;로 만드는 방법. 프롬프트로 테스트를 설계하고, 에이전트가 대신할 수 있는 부분과 사람이 끝까지 해야 할 부분을 명확히 구분합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특히 AI의 환각을 걸러내는 인간 검증 체계를 만드는 법은 여러분의 가장 큰 경쟁력이 될 거예요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 파이프라인, 비기능 품질(성능&amp;middot;보안&amp;middot;부하), 그리고 전략과 리더십까지.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;30화에 걸쳐 테스터에서 품질 아키텍트로 성장하는 전체 여정을 함께 그려나갈 계획입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;지금, 한 걸음 내디뎌보세요&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;30분 데모가 빛나는 순간은 누구나 만들 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 그 빛이 실제 사용자에게까지 오래도록 지속되게 하는 것은, 현실을 직시하고 체계적으로 준비한 사람만이 할 수 있어요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 연재를 따라오다 보면, 당신도 &amp;ldquo;데모는 예쁘지만 실전은 다르다&amp;rdquo;는 말을 더 이상 한숨으로 하지 않게 될 겁니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대신 &amp;ldquo;이렇게 설계했으니 버틸 수 있어&amp;rdquo;라는 자신감으로 바뀔 거예요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫걸음, Part 0부터 시작합니다. 함께 현실을 보고, 방향을 잡아봅시다.&lt;/p&gt;</description>
      <category>11. 자료실&amp;middot;기타/테스트 관련 강좌</category>
      <category>AI 시대 QA</category>
      <category>ai 테스트</category>
      <category>Playwright</category>
      <category>소프트웨어 품질</category>
      <category>테스터 성장</category>
      <category>테스트 자동화</category>
      <category>품질 아키텍트</category>
      <category>프로덕션 안정화</category>
      <author>testmanager</author>
      <guid isPermaLink="true">https://testmanager.tistory.com/620</guid>
      <comments>https://testmanager.tistory.com/620#entry620comment</comments>
      <pubDate>Wed, 1 Jul 2026 07:53:59 +0900</pubDate>
    </item>
  </channel>
</rss>