자동화 된 사용자 인터페이스 테스트로 어떤 문제가 해결됩니까?


23

현재 자동화 된 사용자 인터페이스 테스트 (현재 자동화 된 단위 및 통합 테스트)를 조사하고 있습니다.

우리는 Selenium과 Telerik을 살펴보고 훨씬 유연한 레코더로 인해 후자가 선택 도구로 정착했으며 테스터가 너무 많은 코드를 작성하는 것을 원하지 않습니다.

그러나 전반적인 이점을 이해하려고합니다. 사람들의 견해는 무엇이며 어떤 것이 잘 작동하고 어떤 것이 효과가 없습니까?

Google 시스템은 지속적으로 개발 중이며 정기적으로 새 버전의 (웹 기반) 플랫폼을 출시합니다.

지금까지 우리가 볼 수있는 주요 이점은 특히 플랫폼의 여러 클라이언트 배포에서 회귀 테스트에 대한 것입니다.

다른 사람들의 견해를 찾고 있습니다. 우리는 그것이 옳은 일이라고 "생각하지만"이미 바쁜 일정에서 추가적인 통찰력을 찾고 있습니다.


4
"자동 테스트"라는 용어가 해결하려는 문제를 의미하지 않습니까? // OTOH, "자동 테스트"에 첨부 된 ROI에 대해 문의하는 경우 다른 질문입니다.
Jim G.

답변:


24

우리 팀이 자동화 된 UI 테스트를 구현했을 때 많은 일들이 일어났습니다.

첫째, QA 팀은 응용 프로그램을 테스트하는 데 훨씬 더 효율적일뿐만 아니라 응용 프로그램에 능숙 해졌습니다. QA 책임자는 새로운 QA 멤버를 UI의 테스트 스위트에 소개하여 빠르게 속도를 높일 수 있다고 말했다.

둘째, Dev 팀으로 돌아온 QA 티켓의 품질이 더 좋았습니다. '제출 버튼을 클릭했을 때 페이지가 깨졌습니다.'대신에 실패한 정확한 사례를 얻었으므로 양식에 입력 된 내용을 볼 수있었습니다. 또한 QA 팀은 실패한 모든 사례를 확인하고 해당 페이지 주변의 다른 시나리오를 테스트하여 발생한 상황을 더 잘 파악할 수 있도록 한 단계 더 나아갔습니다.

셋째, QA 팀은 더 많은 시간을 보냈습니다. 이 여분의 시간으로, 그들은 더 많은 디자인 회의에 참여할 수있었습니다. 이를 통해 개발자는 새로운 기능을 코딩하는 동시에 새로운 테스트 스위트 사례를 작성할 수있었습니다.

또한 우리가 사용한 테스트 스위트의 스트레스 테스트는 금 무게입니다. 그것은 우리의 응용 프로그램이 그것에 던지는 모든 것을 취할 수 있다는 것을 알고 밤에 더 잘 자도록 도와주었습니다. 우리는 실제로 시작하기 전에 고칠 수있는 압박을 받아 상당히 많은 페이지를 발견했습니다. 완벽 해.

우리가 마지막으로 발견 한 것은 QA 팀의 조정으로 앱에서 SQL 인젝션 테스트를 수행 할 수 있다는 것입니다. 우리는 신속하게 해결할 수있는 몇 가지 취약점을 발견했습니다.

UI 테스트 스위트 설정에 상당한 시간이 걸렸습니다. 그러나 일단 그것이 개발 과정의 중심이되었습니다.


1
프로세스에서 본질적으로 실패한 테스트를 재현하는 단계를 설명하는 +1 (두 번째 요점)
IThasTheAnswer

한 가지 문제 : UI 단위 테스트가 UI의 잠재적 변경을 차단하지는 않습니다. [잠금] ... 당신은 응용 프로그램의 전체 런타임이 단위 테스트가 아닌 단위 테스트에 의해 모니터링되는 방식으로 이점을 설명했기 때문에 upvoted했습니다. 테스트중인 시스템의 개별 구성 요소
monksy

@monksy-우리가 사용한 테스트 스위트 (내 인생의 이름을 기억할 수 없음)는 좌표 기반이 아닙니다. 요소 ID를 사용하기에 충분히 영리했습니다. 모든 UI 요소 이름을 지정하고 디자인 수정을 통해 해당 이름을 유지하는 한 테스트 사례는 여전히 작동했습니다. 우리는 그 소프트웨어에 대해 꽤 많은 돈을 지불했지만 그 기능이 가치 있다고 생각했습니다.
Tyanna

1
@Tyanna 이것에 대해 믿어주십시오. 위치에 따라 UI 테스트 (회귀 테스트 용)를 자동화하려고했습니다. 그것은 작동하지 않으며 매우 실망입니다. Btu I는 구성 요소 이동, 뷰 / UI 및 테마 UI 변경
monksy

13

자동화 된 UI 테스트는 실제 통합 테스트입니다. 그들은 실제 시스템이 실제로 사용되는 방식으로 전체 시스템을 테스트합니다. 따라서 가장 의미있는 테스트가됩니다. 그러나 그것들은 또한 가장 부서지기 쉽고 실행 속도가 가장 느린 경향이 있습니다.

수동으로 만 테스트 몇 가지 있습니다 (그러나 반드시 그들이 할 hestitate하지 않습니다 (취성이 비용의 일부가되는으로) 비용 / 편익 비율에 눈을 유지 하는 테스트). 그리고 가능하면 개발자가 로컬로 실행중인 앱 버전에 대해 UI 테스트 스위트의 특정 부분을 실행할 수 있으므로 개발 중에 테스트의 혜택을 누릴 수 있습니다.

물론 적어도 하루에 한 번 빌드 서버에서 테스트를 자동으로 실행하는 것은 물론 필수입니다.

우리는 테스터가 너무 많은 코드를 작성하는 것을 원하지 않습니다.

IMO는 파이프 꿈입니다. 자동화 된 테스트를 만들기 입니다 코드를 작성. 기록 기능을 사용하면 해당 코드 중 일부를 더 빨리 작성하고 수동으로 작성하여 더 빨리 시작할 수 있습니다 (수동으로 코드를 작성하는 속도가 빠르다는 점을 놓치면 심하게 속도를 늦출 수 있습니다). 결국 코드를 ​​수동으로 작성 하면 결국에는 많이하고 있습니다. 테스트 프레임 워크가이를 지원하고 코드를 작성할 수없는 사람들이 자동화 된 테스트를 생성 할 수 있도록하는 (매우 판매 가능한) 파이프 꿈에 너무 초점을 맞추지 않았 으면 좋겠습니다.


13

테스터가 너무 많은 코드를 작성하는 것을 원하지 않습니다.

우리는 반대의 접근법을 취했습니다. 우리 테스터들이 코드를 작성 하기를 원 했습니다.

우리가 채택한 워크 플로우는 다음과 같습니다. 관리가 프런트 엔드의 자동화 된 테스트에 전적으로 의존 하지 않기 때문에이 작업은 쉽지 않습니다 . 그들은 "충분히"충분히 기꺼이 정착합니다.

  1. 사용자 스토리.

  2. 운영 개념. 이야기가 어떻게 작동할까요? 설계 검토.

  3. 화면 스케치 : UI 디자인. 어떻게 보일까.

  4. 셀레늄 스크립트. 스크립트가 모두 작동하면 릴리스가 완료된 것입니다.

  5. 스크립트가 작동 할 때까지 코딩 및 테스트

자동 테스트는 기능이 존재 함을 보여주는 유일한 방법입니다.

수동 테스트는 오류가 발생하기 쉬우 며 관리 우선 적용 대상입니다. "충분한 테스트는 실패한 테스트를 제 시간에 배포하는 것만 큼 중요하지 않습니다."

"자동 테스트가없는 프로그램 기능은 존재하지 않습니다."

시각적 표현은 또 다른 이야기입니다. 시각적 레이아웃의 수동 테스트는 심미적 판단이나 매우 크고 복잡한 화면의 픽셀에서 특정 (작은) 문제를 볼 수 있기 때문에 예외적 인 경우입니다.


2
"테스터는 자동 검사를 작성합니다". 테스터가 업무를 수행하는 방식입니다. "테스터들은 테스트 할 기회를 얻지 못했다"는 말이 나에게는 의미가 없다. 이것이 무엇을 의미하는지 설명 할 수 있습니까?
S.Lott

3
@ S.Lott : 아마도 수동 테스트입니다. 자동화 된 테스트는 훌륭하지만 모든 것이 아닙니다. 레이아웃 문제와 같은 예기치 않은 많은 오류 모드를 발견 할 수 없습니다. 그리고 마지막 두 문장에 표시된 근본주의는 비생산적이라고 말하고 싶습니다.
Michael Borgwardt

11
Automated testing is the only way to demonstrate that the functionality exists.아닙니다. 탐색 테스트 또는 수동으로 실행 된 테스트는 기능이 존재 함을 보여줍니다. 자동화 된 테스트만큼 좋지는 않지만 자동화 된 테스트 만 테스트 할 수있는 것은 아닙니다.
StuperUser

1
@ S.Lott-Michael과 StuperUser가 옳았습니다. 수동적이고 선호하는 탐색 테스트.
Lyndon Vrooman

1
마이클이 말했듯이 근본주의에 -1. 논리적 결론에 도달했을 때 그 태도가 얼마나 우스운 지에 대한 설명은 joelonsoftware.com/items/2007/12/03.html 을 참조하십시오 .
메이슨 휠러

5

지금까지 우리가 볼 수있는 주요 이점은 특히 플랫폼의 여러 클라이언트 배포에서 회귀 테스트에 대한 것입니다.

회귀 테스트를 자동화하는 것이 좋습니다. 이를 통해 테스터는 더욱 자동화 된 테스트 추가, 애플리케이션 스트레스 테스트 또는 기타 여러 가지 작업을 수행하여보다 흥미로운 작업을 수행 할 수 있습니다.

또한 자동화를 통해 개발자가 테스트를 실행할 수 있으므로 프로세스 후반부에서만 발견되는 모든 문제를 해결할 수 있습니다.


자동 회귀 테스트를 유지 관리하면 테스터가 더 흥미로운 작업을 수행 할 수있는 경험이 있습니까? 나는 이것이 이론이라는 것을 알고 있지만 수동 테스트를 수행하는 것보다 테스트를 작성하거나 수정하는 데 며칠이 걸리면 효과적이지 않을 수 있습니다.
IThasTheAnswer

@Tunic-현재 프로젝트에서 Silverlight를 사용하고 있으며 현재 XAML과 뷰 모델 C # 코드 간의 바인딩을 확인하는 몇 가지 테스트를 작성 중입니다. 이는 테스터가 입력 한 값의 형식이 올바른지 확인하지 않아도됨을 의미합니다. 아직 초기 단계이지만 유망한 것으로 보입니다.
ChrisF

5

우리는 셀레늄과 텔레 릭을보고 훨씬 유연한 레코더 덕분에 후자를 선택 도구로 정했습니다.

당신이 얼마나 조사했는지 잘 모르겠습니다. 다른 옵션도 있습니다. 당신은에 봤어 Watir과 , WatiN , Sikuli 몇 가지 이름을?

테스터가 너무 많은 코드를 작성하는 것을 원하지 않습니다.

이 대본을 유지해야하는 사람들에게는 기분이 좋지 않습니다. 대부분 쉽게 수정할 수있는 코드가 없으면 스크립트가 깨지기 쉬워지고 스크립트를 다시 기록하는 것보다 스크립트를 수정하는 데 시간이 더 걸리기 때문에 시간이 더 많이 걸립니다.

그러나 전반적인 이점을 이해하려고합니다. 사람들의 견해는 무엇이며 어떤 것이 잘 작동하고 어떤 것이 효과가 없습니까?

테스트 자동화는 올바르게 수행하면 아름다운 것입니다. 회귀 테스트 / 검사 시간을 절약하여 테스터에게 테스트 수행에 가장 많은 시간을 할애 할 수 있습니다. 그것이 총알이라고 잠시 믿지 마십시오. 자동화 스크립트는 응용 프로그램이 이미 있지만 테스트가없는 경우 개발하는 데 상당한 시간이 필요하며 각 릴리스마다 지속적인 업데이트가 필요합니다. 자동화 된 테스트는 또한 팀의 새로운 사람들이 시스템의 작동 방식을 확인할 수있는 좋은 방법입니다. 또한 테스터가 자동화해야 할 항목을 결정하도록하십시오. 확인하는 데 많은 시간이 걸리지 않고 매우 단조롭고 자동화하기 쉬운 작은 검사라면 시작하십시오. 항상 자동화를 통해 가장 많이 얻는 점검부터 시작하여 거기서부터 작업하십시오.

지금까지 우리가 볼 수있는 주요 이점은 특히 플랫폼의 여러 클라이언트 배포에서 회귀 테스트에 대한 것입니다.

주요 이점이며 올바르게 설정하면 약간의 구성 변경으로 필요한 대부분의 브라우저를 테스트 할 수 있습니다.

우리는 그것이 옳은 일이라고 "생각하지만"이미 바쁜 일정에서 추가적인 통찰력을 찾고 있습니다.

앞서 언급했듯이 테스트 자동화에는 상당한 노력이 필요하지만 올바르게 수행되면 "테스트 자동화를 설정하지 않았 으면 좋겠다" 고 말한 팀을 아직 만나지 못했습니다 .


2
특히 "이 대본을 유지해야하는 사람들에게는 기분이 좋지 않습니다." 잘 디자인 된 코드는 유지 관리 가능한 UI 테스트 작성, 특히 자주 변경되는 UI에서 작성하는 핵심 부분입니다. OP 테스터가 페이지 개체를 사용하거나 코드를 재사용 할 수없는 경우 안정적인 UI 자동화 (있는 경우) 만 고려하도록 OP에 진지하게 권합니다.
Ethel Evans

3

회귀가 엄청나다는 것이 맞습니다. 또한-

  • 테스트가 모듈 식으로 작성된 경우 테스트 세트를 혼합하고 일치시켜 벅을 더 많이 얻을 수 있습니다.

  • 데이터로드에 자동화 된 테스트 스크립트를 재사용하여 대규모 테스트를 수행하기 위해 데이터베이스를 방해 할 필요가 없습니다.

  • 성능 테스트

  • 다중 스레드 테스트

  • 웹 시스템-브라우저 간 교환 및 OS 간 교환. 브라우저 일관성 문제로 가능한 한 넓은 범위에 도달하는 것은 큰 일입니다.

특히 웹 시스템에서 건너 뛰는 것은 동적이고 변화하는 ID로 디스플레이 요소가 생성되는 경우를 조심하십시오. 자동 테스트 스크립트는이를 잘 처리하지 못하므로이를 업데이트하려면 심각한 재 설계가 필요할 수 있습니다.


첫 포인트 +1 성공적인 테스트 자동화 제품군에 절대적으로 중요합니다!
Lyndon Vrooman

예, 첫 번째 사항에 동의하십시오. 실제로 두 번째와 세 번째 점을 고려했지만 Telerik이 쓰러지는 곳이라고 생각합니다. 셀레늄 스크립트 (ableit 간단한 것들) BroswerMob 사용할 수 있습니다
IThasTheAnswer

3

한 가지 예 : 웹 페이지 렌더링 기간을 정확하게 측정

자동화 테스트를 사용하면 웹 브라우저 성능을 훨씬 쉽게 테스트 할 수 있습니다. 수락 할 수있는 최대 응답 시간을 측정하려면 테스트 스크립트에서 상수를 설정하거나 함수 코드로 전달하십시오 (예 : 의사 코드 $ sel-> wait_for_page_to_load ($ mypage, $ maxtime)).

낮은 값으로 브라우저 간 테스트를 수행하면 상당히 밝을 수 있습니다.

대안은 직원들에게 스톱워치로 타이밍 측정을하는 것입니다.


3

자동화 된 사용자 인터페이스 테스트는 다음과 같은 기능을 해결합니다.

  • 많은 수의 부품에 대한 테스트를 빠르게 반복
  • 매번 많은 기능을 테스트해야 함
  • 어플리케이션이 성장함에 따라 테스트 스위트의 실행 및 실행 시간 비교
  • 수백 가지의 다양한 입력과 다양한 조건으로 설정
  • 테스트를 작성하지 않은 사람들이 테스트를 실행하고 시각적 문제를 볼 수 있도록합니다.
  • 최종 사용자가 애플리케이션을 빠르고 쉽게 사용하고 있음을 확인할 수 있도록합니다.
  • 테스트 UI 실행을 네트워크, 원격 서버 또는 서비스에 배포
  • 병렬 머신을 사용하여 볼륨 테스트를 시작하십시오.

그러나 다른 사람들이 지적했듯이 :

텔레 릭 ...

훨씬 더 유연한 레코더로 인해 선택 도구

우리 중 많은 사람들에게 붉은 깃발입니다.

이러한 방식으로 기록 된 스크립트는 다음과 같은 이유로 장기적인 해결책이 아닙니다.

  • 데이터베이스 / 객체 ID가 대 / 소문자로 변경되는 경향이 있음
  • 수동으로 기록 된 스크립트는 자주 변경되는 페이지 레이아웃 태그에 의존합니다.
  • 재사용을 허용하는 대신 일반적인 조치를 반복해서 작성해야합니다 (SitePrism & PageObject 접근법 참조).
  • 때로는 현재 페이지 정보를 기반으로 추가 정보를 얻기 위해 xpath와 같은 도구를 사용해야합니다. 간단한 기록 된 스크립트는이 작업을 수행하지 않습니다.
  • 코드를 작성하는 개발자와 테스터는 CSS 클래스, ID 및 HTML5 데이터 속성을 사용하지 않는 것이 좋습니다. 이는 CSS를 더욱 강력하고 유지 관리하기 쉬운 테스트로 이끄는 관행입니다.

Telerik은 고려해야 할 몇 가지 장점이 있습니다.

  • 모바일 클라이언트를 목표로
  • 성장 관리를위한 기본 도구
  • Android, iOS 및 Windows Phone 처리

간격을 메우는 데 도움이되는 방법 은 도구 페이지 레코더를 사용하여 초기 스크립트 를 기록한 다음 시간이 지남에 따라 ID, 클래스 및 데이터 속성을 사용하도록 스크립트를 변경 하는 것입니다. 이것은 실제로 파이어 폭스 셀레늄 플러그인과 함께 사용한 접근법입니다.


2

"전문가 테스트"( "탐색 테스트"와 유사하지만 최종 사용자 또는 많은 비즈니스 지식을 가진 팀 구성원이 수행)를 수행하여 결과를보다 쉽게 ​​수행하고 결과를 기록하며 측정 및 자동화 할 수 있습니다.


2

나는 다른 배경에서 이것에 온다. 이전 고용주에서 상용 자동화 테스트 도구 (QALoad, QARun, TestPartner, SilkTest, SilkPerfomer)를 개발했습니다.

자동화 된 UI 테스트는 두 가지 역할을 수행하는 것으로 나타났습니다.

  1. 완전 회귀 테스트

  2. 테스트 환경의 자동 설정

우리는 매일 밤 회귀 테스트를 수행하는 도구에 크게 의존했습니다. UI와 비즈니스 로직 사이에 아무런 문제가 없는지 확인하기 위해 모든 버튼과 대화 상자를 테스트 할 인력이 없었습니다.

보다 중요한 테스트를 위해 한 사람이 여러 개의 VM을 가동시키고 스크립트를 사용하여 실제 테스트 시점에 도달 할 수 있음을 발견했습니다. 중요한 비트에 초점을 맞추고 24 단계 테스트 사례를 따르려고하지 않습니다.

자동화 된 테스트의 유일한 문제점은 중복 또는 불필요한 테스트를 제거하기 위해 어떤 종류의 감독 없이도 너무 많은 테스트를 박스에 버리는 습관이었습니다. 때때로 우리는 들어가서 물건을 다시 정리해야 12 시간 이내에 스위트가 완성됩니다.


2

모든 종류의 자동화 된 테스트는 회귀 테스트를 제공합니다. 작동하는 데 사용 된 테스트를 실행하면 추가 한 다른 내용에 관계없이 여전히 작동하는지 확인합니다. 테스트가 통합 테스트 (일반적으로 UI를 건드리지 않음)인지 또는 AAT (일반적으로 UI를 요구 하는지)인지 여부에 관계없이 적용 됩니다.

자동화 된 UI 테스트를 통해 사용자가 버튼을 클릭하는 것처럼 시스템을 테스트 할 수 있습니다. 따라서 이러한 테스트는 시스템을 통한 탐색, 레이블 및 / 또는 메시지의 정확성, 특정 테스트 환경에서의 성능 및 / 또는로드 시간 등을 확인하는 데 사용할 수 있습니다. 기본 목표는 버튼을 클릭하는 데 소요되는 QA 담당자의 시간을 줄이는 것입니다. 프로그래머를위한 통합 및 단위 테스트와 매우 유사합니다. 테스트를 한 번만 수행 할 수 있으며 (보통 마우스 클릭과 데이터 항목을 스크립트에 기록하여) 테스트가 제대로 작동하면 테스트중인 시스템의 정확성을 확인하기 위해 수행해야 할 모든 작업을 다시 실행해야합니다. Selenium과 같은 일부 프레임 워크에서는 브라우저간에 테스트를 마이그레이션하여 사이트가 제대로 작동해야하는 여러 환경을 테스트 할 수 있습니다.

자동 테스트가 없으면 QA 테스터의 수와 속도에 의해 제한을받습니다. 그들은 문자 그대로 시스템을 실습해야하며, 새로운 기능이 요구 사항을 충족하는지, 그리고 중요하게도 이미 존재했던 것을 깨지 않았는지 테스트해야합니다.


0

테스트는 많은 다른 것들을 결정합니다. 이러한 많은 테스트를 자동화하여 준설을 제거하고 더 많은 작업을 수행 할 수 있습니다. 테스트를 자동화 할 수 있는지 확인하려면 먼저 질문에 대한 질문이 적합한 지 확인해야합니다.

  • 구성 요소가 사양에 따라 작동하는지 확인하고 있습니까?
  • 가능한 모든 다른 입력 및 출력을 모두 테스트 하시겠습니까?
  • 부품 스트레스 테스트?
  • 아니면 "작동"하는지 테스트하려고합니까?

이것들은 대부분 기계적으로 작동하기 때문에 자동화 될 수 있습니다. 새로운 함수는 입력을 받아들이므로 임의의 데이터를 던지면 어떻게됩니까? 그러나 시스템이 작동하는지 테스트하는 것과 같이 일부는 실제로 시스템을 사용해야 합니다. 그렇지 않은 경우 사용자의 기대치가 프로그램의 기대치와 같은지 절대 알 수 없습니다. 즉, 시스템이 끊어 질 때까지.


-1

필자의 경험에 따르면 자동화 된 사용자 인터페이스 테스트는 다음과 같은 많은 차이를 다룹니다.

  • 문서 부족 (예 : 자동화 된 테스트 러너를 사용하여 기존 기능 시연)
  • 스코프 크립으로 인한 오래된 요구 사항 (예 : 테스트 실행 중 화면을 캡처하여 요구 사항과 코드 간 격차 식별)
  • 개발자 및 테스터의 높은 이직률 (예 : 개발자 도구가 열린 상태에서 테스트 실행 중 화면을 캡처하여 레거시 레거시 JavaScript 리버스)
  • XPath 회귀 테스트를 통한 표준 명명 규칙 위반 식별 (예 : 낙타 사례 이름에 대한 모든 DOM 속성 노드 검색)
  • 컴퓨터 만 발견 할 수있는 보안 허점 인식 (예 : 한 탭에서 로그 아웃하면서 동시에 다른 양식을 제출)

1
이러한 것들에 어떻게 도움이됩니까? 조금 더 정교하게 만들 수 있다면 좋을 것입니다.
Hulk

-1

팀의 경험을 공유하고 싶습니다. 우리는 자체 UI 테스트 도구 인 Screenster를 사용하여 우리와 고객의 웹 응용 프로그램을 테스트했습니다. 비주얼 / CSS 테스트 작업을 위해 Selenium 의 유용한 대안으로 입증되었습니다 . Screenster는 다양한 버전의 웹 페이지를 스크린 샷 기반으로 비교 하는 테스트 자동화 도구 입니다. 먼저 각 사용자 작업에 대한 스크린 샷을 찍어 페이지의 시각적 기준을 만듭니다. 다음 실행 중에는 각 단계에서 새 스크린 샷을 만들고 기준 화면의 스크린 샷과 비교하여 차이점을 강조 표시합니다.

요약하자면 Screenster는 다음과 같은 장점이 있습니다. 시각적 기준 : 테스트 기록 중 각 사용자 단계마다 스크린 샷이 캡처됩니다. 스크린 샷 기반 비교 : Screenster는 재생 중에 캡처 된 이미지를 기준선의 이미지와 비교하고 모든 차이점을 강조합니다. 스마트 CSS 선택기 : 테스터가 선택할 수 있음 스크린 샷의 CSS 요소 및 해당 요소를 사용하여 작업 수행-예를 들어 추가 비교에서 제외하려면 무시 영역으로 표시

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.