데보션앱 소개페이지 바로가기
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
(이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

      카테고리를 선택해주세요.

      DEVOTEE를 활성화 시키면
      지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.

      버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.

      임시저장함에 저장되었습니다. 저장일시 : 2022.5.17 14:29:08

      임시저장함

      제목을 선택하시면 이어서 작성이 가능하며,
      최대 20건까지 저장합니다.
      컨텐츠 유형, 제목, 저장일시, 삭제로 이뤄진 임시저장 목록
      컨텐츠 유형 제목 저장일 삭제

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

      효율적인 데보션 서비스 이용 및
      고객님의 소중한 개인정보보호를 위해
      본인인증을 진행해주세요. 본인인증 미 진행 시 로그인이 제한됩니다.
      본인인증 실패

      본인인증 로그인에 실패하였습니다.
      회원이 아니시거나 본인인증 등록이
      완료되지 않은 사용자입니다.

      회원정보 연결

      웹 QA의 모든 것: 실전 검증 노하우와 Cypress 자동화

      joeyjjo 25.04.23
      3,295 5 2
      DEVOTEE 요약
      본 블로그는 에이닷 멀티LLM WEB 기반 프로젝트를 진행하며 경험한 다양한 브라우저와 OS 환경의 특성, QA 과정에서의 주요 이슈 및 해결 방안, 그리고 자동화 도구(Cypress)를 활용한 검증 방식을 다룹니다. 테스트는 다양한 기기, 브라우저 및 OS의 조합에서 발생하는 동작 차이와 다크모드, 이미지 다운로드, 키패드 활성화 등 주요 이슈를 관리하며 진행되었고, 품질 보장을 위해 사전 협의 및 커버리지 확정이 중요하다고 강조합니다. 또한, 자동화 도구를 활용하여 반복 작업 효율을 높이고, 다양한 조합에서의 안정적인 품질 보장을 제안하며 이를 구체적으로 설명하고 있습니다.
      DEVOTEE 추천 블로그

      들어가며

      이번 글에서는 에이닷 멀티LLM WEB 기반 프로젝트를 진행하며 경험한

      OS 및 브라우저별 특성, QA 과정에서 마주쳤던 어려움, 그리고 WEB 검증 시 중점적으로 살펴봐야 할 요소 등 전반적인 노하우를 공유하고자 합니다.

      본 내용은 각 WEB 사이트의 개발 환경, 구현 방식, 로직에 따라 다소 차이가 있을 수 있으니 참고해주시기 바랍니다.


      WEB PoC 종류

      • 테스트 기기: PC / 스마트폰 / 태블릿 등

      • 운영체제 : Windows / mac / Android / iOS 등

      • 브라우저 : Chrome, Safari, Edge, Whale , Samsung internet 등

      WEB 검증은 기기, 운영체제, 브라우저 환경(브라우저 버전 등 포함)등 조합이 다양하여 검증 전 유관부서와 함께 품질을 보장하는 커버리지에 대해 협의 후 진행하는게 좋습니다.

      에이닷 경우 모바일 브라우저와 PC 브라우저 화면 구성이 달랐고, 화면 크기에 따라 반응형 디자인으로 동작하였습니다.

      품질 보장 커버리지는 브라우저/OS 시장 점유율, 각 운영체제, 기기의 대표 브라우저 등을 고려하여 협의 후 선정하여 진행하였습니다.

      브라우저/OS 시장 점유율은 아래 사이트에서 확인 가능합니다.


      브라우저/OS 시장 점유율 확인

      • 브라우저 / 사용 OS / OS 버전 등 기간/나라 별로 점유율 조회 가능(https://gs.statcounter.com/)

        • Chrome / Samsung Internet(Android) / Safari(MAC/iOS) / Whale / Edge : 우리나라 TOP 5 위 브라우저에 한하여 검증 진행 하였으며, 최신브라우저 버전으로 검증 진행하였습니다.

        • 브라우저가 하위버전일 경우 최신 표준 규격 적용 시 기능이 정상적으로 동작하지 않는 경우가 있습니다.

          브라우저 구버전에 동일 기능을 적용하려면 분기 되어 각 개발 적용이 필요하여 리소스 소요가 증가할 수 있어,서비스 오픈 시기,기간,타겟 등 고려하여 QA 시작 전 논의/협의 후 진행이 필요합니다.

      image.png

      브라우저/OS 특징

      앞서 언급한 것처럼, Web 테스트는 테스트 기기, 브라우저, OS에 따라 다양한 조합으로 진행할 수 있습니다.

      각 조합별로 고유한 특징이 존재하며, 이에 따라 검증 과정에서 기대했던 결과와 실제 결과가 달라지는 경우도 종종 발생하였습니다.

      실제 테스트 과정에서 경험했던 몇 가지 대표적인 특징들을 정리해보았습니다.

      다크모드


      • 다크모드는 WEB 브라우저의 테마 색상을 어둡게 변경하는 것을 의미합니다.

      • 다크모드 셋팅은 아래 두가지 영향을 받을 수 있습니다.

        • OS시스템 테마 : MAC,Windows,Android,iOS / 브라우저 자체 테마 : Chrome, (Mobile)Samsung internet, (PC)Edge, (PC)Whale

      • WEB에서 구현한 다크모드 적용을 확인하려면 어떻게 셋팅 되어야 할지 아래와 같이 정리하였습니다.

        • WEB 자체 별도 시스템 설정이나, 추가적인 커스텀마이징 되는 경우 동작 상이할 수 있습니다.

      • image.png

      • ❗❗) Samsung-internet 경우 기본 브라우저 다크모드 동작은 자체 로직을 통해 컨텐츠의 색상을 변경합니다. 이는 실제 개발에서 구현된 색상과 다르게 표현될 수 있습니다.

      • 삼성인터넷에서 각 서비스 개발에서 구현된 색상 확인을 위해서는 삼성인터넷-설정-실험실 "웹사이트 다크 테마 사용" 옵션을 ON 해줘야 합니다.

        삼성인터넷 운영팀입니다..png

      Mobile 이미지 다운로드


      • 저희 서비스에서는 이미지를 다운로드 받을 수 있는 기능이 있습니다.

      • LLM 응답에 포함되는 이미지는 확장자 구분 없이 답변에 포함된 이미지를 함께 응답내려줬습니다.

      • 이슈❗) Mobile 갤러리(앨범)에서 열리지 않는 확장자의 이미지가 다운로드 받아지고 열리지 않는 이슈가 있었습니다.

      • 해결) 지원하지 않은 확장자의 파일 경우는 다운로드 받을 수 없게 처리 하여 이슈를 해결하였습니다.


      Mobile OS에 따라 앨범(갤러리) 확인 가능 확장자

      image.png

      Mobile 키패드 활성화 동작


      • 입력영역이 하단에 위치하기 때문에, Mobile 에서 키패드를 활성화하는 경우 아래 이미지 처럼 입력영역을 키패드 상단으로 올리면서 화면 레이아웃을 다시 조정하였습니다.

      • 해당 동작 자체는 이슈가 없었지만, 키보드 활성화 상태 유지는 OS, 브라우저별로 다르게 처리하고 있었으며 브라우저를 B/G -> F/G로 올릴 때 브라우저 특성으로 인해 대응이 어려운 이슈가 있었습니다.

      • 이슈❗) 일부 브라우저에서 F/G로 올릴 때, 타이밍 등 원인으로 레이아웃 조정을 하지 못하여 키패드가 입력영역을 가림

      • 해결) F/G로 올라온 상태에서 키패드가 활성화되어 있다면 키패드를 내리는 동작으로 레이아웃 이슈를 해결하였습니다.

        *구글 등 이슈 재현 브라우저에서는 동일하게 동작 구현되어 있음

      image.png image.png


      Web 서비스 주요 검증 사항

      멀티LLM WEB 서비스 검증을 진행하며 중점적으로 봤던 요소나 검증/이슈해결에 리소스가 많이 소요되었던 내용을 정리해봤습니다.


      주요 검증 사항

      내용

      1

      • 화면크기에 따라 반응형 디자인 적용으로 단말 별 테스트 필요

      • GUI 확인은 반응형 동작 기준으로 화면크기가 다양한 단말을 선별하여 검증 진행하였습니다.

      2

      • 동일 단말이라도 브라우저에 따라 컴포넌트/레이아웃이 다르게 노출되는 Case

      • 한정된 리소스/일정으로 모든 조합을 다 확인하기에는 어려운 부분이 있었고 품질을 보장해야하는(공지된) 조합에 상세 검증 하였고, 그 외 조합에서는 기능 동작에 이슈가 있을만한 메이저한 요소 위주로 검증/대응 하였습니다.

      3

      • 로그인/비로그인 기능이 있는 경우 로그인 세션이 유지되는 조건(시간, 멀티로그인 , 갱신 동작 등) 에 대한 검증 case 별 확인 필요

      • 브라우저에서 서비스가 제공되는 경우 사용자의 핸드폰에서만 실행되는 앱과 다르게 공용공간에서 사용되는 시나리오가 있습니다.

      • 로그인을 계속 유지할 수 없어, 세션 유지/관리를 위한 다양한 정책들이 적용되며 예상하지 못한 곳에서 이슈가 발생되기도 합니다.

      • 로그인 세션을 유지하는(갱신) 동작은 각 구현된 서비스 마다 다를텐데 해당 로직에 대해 디테일한 이해를 바탕으로 Testcase가 작성되어져야 하고 수행되어져야 합니다.

      • 보안사항과 실제 사용자 시나리오와 밀접하고 중요한 동작이라 서비스 오픈 QA 당시 가장 중점적으로 봤으며 세션 유지시간 등에 대한 의견도 많이 전달 하였었습니다.

      4

      • 글로벌 엔진 응답 퀄리티에 대한 검증 범위 논의와 대응 방향을 협의 후 진행

      • 글로벌 엔진 응답에 대한 답변 품질은 프롬프트 등으로 일부 rule을 정할 수는 있으나 완벽하게 대응하기가 어려웠습니다.

      • 언어 혼합 답변, 글자깨짐 등 메이저한 이슈는 글로벌 엔진에 취합 리포트하는 형태로 진행하였습니다.

      • 개발에서 대응할 수 있는 마크다운, 수식 등에 대한 품질을 검증 진행하고 대응하였습니다.

      • 마크다운, 수식, 코드블록 등은 건바이건 이슈들이 존재하여 지속적인 테스트/모니터링 통해 품질 강화하였습니다.

      5

      • UI 구조 고도화 시 마다 영향을 자주 받는 스펙 존재

      • 매 스프린트를 진행하면서 Minor 한 규모의 UI 구조 고도화에도 영향을 자주 받는 스펙이 있었습니다.

      • 이슈 수정에 시간이 필요하거나 또 다른 사이드가 나오는 경우가 많아, 해당 TestCase는 검증 초/중/반 체크리스트로 별도 진행하여 품질 확보하였습니다.


      자동화 테스트 소개(Cypress)

      서비스 오픈 당시에는 오픈 일정 등으로 자동화에 대한 고려를 할 수 없었으나, 한정된 일정/리소스로 넓은 커버리지의 품질 확보를 위해서는 자동화 테스트를 병행하여 진행하면 좋을 것 같습니다.

      Cypress를 소개드린 이유는 다양한 브라우저/다양한 해상도 환경으로 테스트가 가능한 부분이 가장 큰 장점이라 생각되어 일부 동작에 대해서 적용해봤습니다.

      다양한 브라우저 선택 실행 가능
      • Desktop에 설치된 브라우저로 OPEN 가능

      • 테스트 수행 브라우저로 선택 시, Cypress의 테스트 실행 환경 브라우저가 선택한 브라우저로 테스트 시작

      image.png

      해상도 변경 가능
      • 단말 별 설정되어 있는 해상도 확인 가능 (https://docs.cypress.io/api/commands/viewport)

      • 모바일 해상도 변경 가능하나 Cypress에 사전 설정되어 있지 않은 모델 경우 해당 모델의 해상도를 찾아 설정하여 확인해야함

      image.pngimage.png

      자동화 테스트 적용

      Web Site 접속
      it('stg admin', () => {
        cy.visit('https://adot.ai/multillm');  //Web Page 접속
        cy.wait(3000); //접속 화면 확인 대기
        });
      Web Site 로그인
      it('login Test', () => {
        cy.visit('https://adot.ai/multillm');
        cy.get('.pr__cls').click();  //Page 내 팝업 닫기 요소 Click
        cy.get('.sd__btn--login').click();  //Page 내 로그인 버튼 Click
      
        cy.origin('https://accounts.adot.ai', () => {  //로그인 페이지로 이동 및 Origin 선언
                  cy.visit('/signin/?poc_id=web.apollo');
                  cy.get('.sg__btn--tid').click();
                 });
        cy.url().then((currentUrl) => {       //동적 URL 동작으로 인해 Origin 선언 위한 URL 추출 
                  const origin = fullUrl.origin;
                  const pathname = fullUrl.pathname;
                  const searchParams = fullUrl.search; 
        cy.origin(origin, { args: { pathname, searchParams } }, ({ pathname, searchParams }) => {  // cy.visit()로 전체 URL 재구성 및 Origin 선언
              cy.get('#inputId').type('***********');    //ID 입력
              cy.get('#inputPassword').type('*************');  //PW 입력
              cy.get('.btn-secondary').click();
              cy.wait(3000);
                  });
                   });
                   });
      • 브라우저의 보안 정책과 Cypress의 내부 아키텍처상 한 번에 하나의 origin만 안전하게 제어할 수 있기 때문에 사이트 URL(즉, origin)이 변경될 때마다 cy.origin()선언이 필요합니다.

      • cy.origin을 통해 Cypress는 여러 origin 간의 테스트를 지원하면서도, 보안 정책을 준수하고 예측 가능한 테스트 환경을 제공합니다.

      • 이슈❗) 동적 URL 동작 시, 고정된 URL로 사전에 Origin 선언을 할 수 없었습니다. Origin 선언을 하지 못해 새로운 페이지의 제어가 안되는 이슈가 있었습니다.

      • 해결) 동적 URL을 확인하여 도메인과 쿼리 파라미터를 분리 추출하고 전체 URL로 재구성하여 Origin 선언을 하여 해결하였습니다.

      <테스트 수행 결과 확인>

      image.png

      image.png

      특정 요소 Click 응답 확인 및 텍스트 인풋/응답 확인
      it(' event trigger test', () => {
          cy.visit('https://adot.ai/multillm');
          cy.get('.pr__cls').click();
          cy.get('.rc > :nth-child(1)').click(); // 이벤트 트리거
      
      it('input test', () => {
          cy.visit('https://adot.ai/multillm');
          cy.get('.pr__cls').click();
          cy.get('.in__txt').type('고3 수학문제 예제 내줘');
          cy.get('.in__sbmt').click();
      });

      <테스트 수행 결과 확인>

      image.png

      image.png


      마치며

      • 웹 검증은 다양한 기기, 운영체제, 브라우저 환경의 조합에 따라 동작이 다르고 개발이 각 분기되어 적용 필요한 경우가 있어, 품질 보장 커버리지에 대해 유관부서와 사전 협의한 후 진행하는 것이 좋습니다.

      • 다양한 조합/환경에서의 테스트는 예상과 다른 결과를 초래할 수 있으므로 실제 테스트 경험을 바탕으로 주요 이슈와 리소스 소요가 큰 부분을 우선적으로 관리/ 진행해야 합니다.

      • 한정된 일정과 리소스 내에서 넓은 커버리지 품질을 확보하기 위해서는 Cypress와 같은 자동화 테스트 도구를 활용하는 것이 효과적입니다.

      • 자동화 도입을 통해 반복적인 검증 작업의 효율을 높이고, 다양한 브라우저와 해상도 환경에서의 품질을 안정적으로 보장할 수 있습니다.

      댓글 0

      DEVOTEE를 활성화 시키면
      지금 작성한 댓글에 AI가 댓글을 달아줍니다.

      joeyjjo 님의 최신 블로그

      더보기

      DEVOTEE 추천 블로그

      동영상 기고하기