단위 1 / 11

소프트웨어 테스팅 및 QA의 인공 지능 소개: 역할, 경계, 위조 위험 및 검증

이득:

  • 작업 위험 수준에 따라 QA 프로세스에서 인공지능이 실시간을 절약하는 부분과 '출판 준비'와 같은 품질 결정을 인간에게 맡기는 부분을 구분할 수 있습니다.
  • 잘못된 통과의 위험을 인식하고 의도적으로 코드를 깨뜨려 모든 AI 테스트를 테스트하는 검증 규칙을 구현하는 능력
  • 테스트 데이터, 개인 데이터 및 키를 보호하고 인증 및 방어 목적으로만 보안 테스트를 수행하는 습관을 들이는 능력입니다.

릴리스 밤을 고려하십시오. 수백 번의 테스트가 실행되었고 모두 승인을 얻었으며 팀은 안도감을 느꼈고 소프트웨어가 출시되었습니다. 다음날 아침 고객이 결제 화면이 다운됐다고 신고했습니다. 테스트 결과는 녹색이었지만 그는 오류를 보지 못했습니다. 이는 품질 보증(QA) 직업, 즉 소프트웨어가 원하는 품질인지 체계적으로 보장하는 분야, 즉 녹색으로 빛나지만 실제로는 아무것도 확인하지 않는 테스트의 가장 교활한 악몽입니다. 인공 지능(AI - 과거 데이터에서 패턴을 추출하고 텍스트와 코드를 생성하는 소프트웨어)이 이 직업에 들어오면 이 악몽이 엄청나게 가속화되고 확대됩니다. 이 모듈의 초기 약속은 분명합니다. AI는 테스트 보조자, 청사진 생성기 및 아이디어 승수입니다. 당신은 "이 소프트웨어를 출시할 준비가 되었는지" 결정을 내리는 테스터입니다.

이 첫 번째 단원에서는 도구가 아닌 규율에 중점을 둘 것입니다. AI가 QA 프로세스에서 실시간 시간을 절약하는 부분, 위험한 부분, 소위 "false-pass"라고 불리는기만적인 녹색이 왜 가장 큰 위험인지, 각 출력을 검증하는 방법, 어떤 도구에 어떤 데이터를 제공할 수 있는지 알아보세요. 이 기반을 마련하지 않으면 후속 유닛은 공중에 남게 됩니다.

테스트 과정에서 AI는 어디에 유용합니까?

테스트 작업을 두 개의 큰 클러스터로 나누어 보겠습니다. 첫 번째 클러스터: 반복적이고 생산 가능한 초안 작업입니다. 요구 사항에서 테스트 케이스 초안 작성, 중단점 나열, 화면의 자동화 코드 뼈대 작성, 복잡한 오류 사례를 깔끔한 오류 보고서로 변환, 수백 줄의 로그 파일 요약, API 응답에서 스키마 추출. 이러한 작업에서 AI는 몇 분을 몇 초로 단축하고 지치지 않습니다.

두 번째 클러스터: 결과가 품질, 신뢰, 책임인 의사결정입니다. "이 버전을 출시할 수 있습니까?", "이 버그가 심각한가요 아니면 연기할 수 있습니까?", "이 테스트 범위가 충분한가요?", "이 시나리오가 실제 사용자 위험을 포착합니까?" 등과 같은 결정에는 컨텍스트, 제품 지식 및 책임이 필요합니다. 여기서 AI는 옵션과 초안을 생성하지만 "합격/실패" 및 "실행/실행 안함"을 결정하는 것은 사용자입니다.

한 문장으로 차이점을 명확히 해보자. AI는 "어떤 상황을 테스트할 수 있는지, 그리고 이를 테스트하는 코드를 작성하는 방법"에 강하다. "이 소프트웨어가 실제로 작동하는지, 그리고 이를 보증하는 사람은 누구입니까?"라는 질문에 대한 결정은 귀하의 몫입니다.

팁: AI에 작업을 넘기기 전에 "이 출력이 잘못되었는데 내가 눈치채지 못하면 어떻게 되나요?"라고 질문해 보세요. 대답이 "몇 분을 잃을 것입니다"라면 쉽게 위임하십시오. 대답이 "결함 있는 소프트웨어가 활성화됩니다"라면 AI가 초안을 생성하고 결정과 검증을 내리도록 하세요.

False Pass: QA에서 AI의 가장 큰 위험

테스트에 녹색 불이 들어오면 이는 두 가지 의미일 수 있습니다. 즉, 소프트웨어가 실제로 올바르게 작동하고 있거나 테스트가 잘못 작성되었기 때문에 버그를 볼 수 없다는 뜻입니다. 두 번째는 거짓 통과(False Pass)라고 합니다. 테스트에서는 "통과"라고 표시되지만 실제로는 아무것도 확인하지 않습니다. AI가 유창하고 매끄럽게 보이지만 빈 테스트를 작성하는 데 매우 성공적이기 때문에 AI로 생성된 테스트에서는 이러한 위험이 크게 증가합니다.

의사 통과의 가장 일반적인 세 ​​가지 형태는 다음과 같습니다. (1) 주장 없는 테스트 - 코드가 실행되고, 주장이 없으며, 항상 통과합니다. (2) 자체 검증 테스트 - 테스트의 예상 값은 테스트 중인 코드의 출력에서 ​​계산됩니다. 즉, 코드가 생성하는 것이 무엇이든 테스트에서는 "올바른" 것으로 받아들입니다. (3) 잘못된 것을 확인하는 테스트 - 주장이 존재하지만 실제 비즈니스 규칙이 아닌 사소한 것(예: "응답이 null이 아닙니다")을 확인합니다.

주의: 녹색 테스트 패널은 품질을 증명하지 않습니다. 기껏해야 "우리가 작성한 컨트롤은 지금 당장은 손상되지 않았습니다"라고 말합니다. AI가 생성하는 테스트에서 "통과"를 보고 위안을 삼지 마십시오. 실제 질문은: 의도적으로 코드를 깨면 이 테스트가 빨간색으로 변할까요? 회전하지 않으면 그 테스트는 장식입니다.

이 모듈 전체에서 반복되는 황금률은 의도적으로 코드를 깨뜨려 모든 AI 테스트를 테스트하는 것입니다. 테스트가 여전히 녹색이면 해당 테스트가 작동하지 않는 것입니다. (이 아이디어는 10단원에서 돌연변이 테스트를 통해 심화할 것입니다.)

검증 규율: 3단계

AI는 자신있게 말합니다. 그렇다고 그것이 사실이라는 뜻은 아닙니다. 모든 결과에 적용할 수 있는 3단계 반사 방법을 개발하세요.

  1. 요구 사항에 연결하십시오. 모든 테스트 사례와 AI가 생성하는 주장은 실제 요구 사항 또는 승인 기준(작업이 "완료"로 간주되기 위해 충족해야 하는 조건)을 기반으로 해야 합니다. "이 시나리오는 어떤 규칙을 확인합니까?" 묻다.
  2. 빨간색을 참조하세요. 생성된 테스트를 한 번 실행하여 코드를 분리합니다. 빨간색으로 변하지 않으면 테스트가 무효입니다. 이는 AI 테스트에서 협상할 수 없는 단계입니다.
  3. 컨텍스트 필터를 통해 전달합니다. 출력이 제품 동작, 아키텍처, 실제 사용자 흐름과 일치합니까? 귀하의 도메인 지식이 최종 필터입니다.

데이터 개인정보 보호 및 보안: 무엇이 어디로 가는가?

테스트 환경에서 작업하는 데이터는 실제 고객 기록, 프로덕션 데이터베이스 복사본, API 키, 내부 시스템 주소, 아직 발표되지 않은 기능 등 민감한 데이터인 경우가 많습니다. 간단한 분류를 해보세요. 공개 데이터(문서화되어 공개적으로 사용 가능)는 모든 차량에 들어갈 수 있습니다. 내부 데이터(소스 코드 조각, 내부 문서)는 기관 승인 도구에만 해당됩니다. 기밀 데이터(실제 고객 데이터, 신원 정보, 취약성 세부 정보, 키)는 기관과 계약한 도구에만 입력되며 해당 데이터는 모델 교육에 사용되지 않으며 가급적이면 마스킹됩니다.

보안 테스트와 관련하여 추가적인 제한이 있습니다. 이 모듈에서 학습한 모든 내용은 방어 목적, 즉 자신의 제품의 보안을 정식으로 테스트하기 위한 것입니다. AI를 사용하여 허가 없이 다른 사람의 시스템에 침투하거나, 실제 취약점을 무기화하거나, 권한이 없는 시스템을 테스트하는 것은 비윤리적이고 범죄적입니다. 승인(범위 및 허가) 없이 공격적인 테스트는 수행되지 않습니다.

팁: 실제 고객 데이터 대신 합성(인위적으로 생성된) 테스트 데이터를 사용하세요. AI에게 "현실적이면서도 완전히 허구적인 테스트 데이터를 생성"하도록 요청하면 개인 정보 보호가 유지되고 극단적인 경우가 다양해집니다.

세 개의 미니 케이스

사례 1 — 올바른 장소에서 시간을 절약해 줍니다. Ekomerce 팀의 테스터는 각 릴리스에 대한 30페이지 요구 사항 문서에서 테스트 시나리오를 수동으로 작성하는 데 6시간을 소비했습니다. 그는 문서(영업비밀이 포함되지 않은 부분)를 YZ에 전달하고 구조화된 시나리오 초안을 요청했습니다. 시간은 90분으로 단축되었습니다. 그는 절약된 시간을 AI가 놓친 비즈니스 룰 엣지 케이스를 추가해 스스로 검증하는 데 쏟았습니다. AI는 반복적인 작업을 없애고 판단은 인간에게 맡겼다.

사례 2 — 페이크 패스가 적발되었습니다. 개발자는 AI가 컴퓨팅 기능에 대한 12개의 단위 테스트를 작성하도록 했습니다. 그들은 모두 녹색이었습니다. 테스터는 "빨간색 참조" 단계를 구현했습니다. 즉, 함수 내부의 덧셈 기호를 의도적으로 곱셈으로 변경하는 것입니다. 12개 테스트 중 3개만 빨간색으로 나타났습니다. 나머지 9개 테스트에서는 실제 확인이 이루어지지 않았습니다. "오류가 발생하지 않았습니다"라고만 표시되었습니다. 9개의 장식 테스트가 삭제되고 5개의 실제 테스트가 대신 작성되었습니다.

사례 3 - 개인 정보 침해로부터 복귀. 한 인턴은 실제 고객 이메일과 프로덕션 데이터베이스의 카드 마지막 4자리 숫자가 포함된 오류 로그를 공개 도구에 붙여넣고 "이 오류를 설명해주세요"라고 말했습니다. QA 리더가 개입했습니다. 이는 통제할 수 없는 개인 데이터이자 KVKK(개인 데이터 보호법) 위반이었습니다. 기관에서 승인한 차량에서 동일한 작업이 수행되어 개인 영역을 가리고 스택 추적만 남겼습니다.

복사 가능한 템플릿 4개

1) 직무 적합성 평가:

귀하의 역할: 수석 QA 리더. 테스트 작업에 대해 설명하겠습니다. (1) 이 작업이 AI에 안전하게 위임할 수 있는 초안/분석 작업인지 아니면 인간이 내려야 하는 품질 결정인지, (2) 잘못된 출력으로 인한 잠재적 비용, (3) 위임하기 전에 수행해야 할 검증을 알려주세요. 직업: [여기에 직업 입력]

2) 의사 통과 제어:

아래 테스트를 확인해 보세요. 말해 보세요:- 이 테스트는 어떤 동작을 확인합니까? (한 문장)- 테스트가 빨간색으로 바뀌도록 테스트 중인 코드를 어떻게 깨뜨릴 수 있습니까?- 이 테스트를 항상 통과하게 만들 수 있는 약점이 있습니까(어설션 누락, 자체 검증, 사소한 검사 누락)?테스트: [여기에 테스트 붙여넣기]

3) 테스트 데이터 마스킹 제어:

제가 귀하에게 제공할 로그/데이터에는 개인 또는 기밀 필드(이메일, 이름, 카드, 키, 내부 주소)가 포함될 수 있습니다. 먼저, 마스킹해야 하는 필드를 나열하십시오. 마스크해서 다시 보내드리겠습니다. 있는 그대로 분석하지 마세요.

4) 합성 테스트 데이터 생성:

[다음 필드 구조]에 대해 완전히 허구적이고 현실적인 테스트 데이터 20개 행을 생성합니다. 실제 개인/조직 데이터를 사용하지 마세요. 빈 공간, 너무 긴 텍스트, 한계 값, 잘못된 형식 등 극단적인 경우도 포함됩니다.

약한 프롬프트 / 강한 프롬프트

약함: "이 코드에 대한 테스트를 작성합니다."
Strong: "할인 함수에 대해 이 쓰기 단위 테스트를 계산합니다. 함수에 대한 허용 기준: 1000 TL을 초과하는 10% 할인, 5000 TL을 초과하는 20% 할인, 음수 금액은 오류를 발생시켜야 합니다. 각 테스트에 대해 유효성을 검사하는 규칙을 주석 줄로 지정합니다. 제한 값(999, 1000, 1001, 5000, 0, -1)을 별도로 테스트합니다. 빨간색으로 변하는 실제 어설션을 사용하세요. 코드를 비우거나 사소한 주장을 작성하지 마세요."

강력한 프롬프트; 이는 허용 기준, 한계 값, 검증 기대치 및 명시적인 스푸핑 방지 지침을 제공합니다. 약한 프롬프트는 AI가 장식적인 테스트를 작성하도록 유도합니다.

일반적인 실수

  • 녹색을 신뢰합니다. 시험에 합격하는 것이 증거라고 생각합니다. 진짜 질문은: 코드를 깨면 빨간색으로 변하는가입니다.
  • 이유를 밝히지 않고 테스트를 요청합니다. AI는 확인해야 할 사항을 알지 못한 채 일반적이고 종종 쓸모없는 테스트를 생성합니다.
  • 확인을 건너뛰는 중입니다. "AI가 썼다면 아마 사실일 것이다"라고요. 책임은 결과물을 사용하는 사람에게 있습니다.
  • 실제/민감한 데이터를 도구에 붙여넣습니다. 생산 데이터, 키 또는 개인 데이터로 작업합니다.
  • 무단 보안 테스트. 범위와 허가 없이 공격적인 테스트를 시도합니다.
  • AI를 사용하여 의사결정을 위임합니다. "이 버전이 출시될 수 있나요?"라는 질문을 던집니다. AI에게 답을 서명에 넣는 것입니다.

요약하면

AI는 반복적이고 생산 가능한 작업의 속도를 높이는 QA 프로세스의 강력한 보조자입니다. 그러나 품질 결정의 책임은 인간에게 있습니다. 이 직업에서 AI의 가장 큰 위험은 의사 통과입니다. 즉, 깔끔하게 보이지만 아무것도 확인하지 않는 녹색 테스트입니다. 의도적으로 코드를 깨뜨려 모든 AI 테스트를 테스트하세요. 빨간색으로 변하지 않으면 그 테스트는 장식입니다. 요구 사항에 연결하고 빨간색을 확인한 후 컨텍스트 필터를 통과하세요. 기밀 데이터를 가리고 승인된 방어 목적으로만 보안 테스트를 수행합니다.

응용과제

자신의 프로젝트에서 AI 생성(또는 AI 생성) 단위 테스트 5개를 수행하세요. 각각에 대해: (1) 검증된 동작을 한 문장으로 적고, (2) 테스트 중인 코드를 의도적으로 중단하고 실행하고 몇 개가 빨간색으로 변하는지 기록하고, (3) 빨간색으로 변하지 않는 코드를 "장식 테스트"로 표시하고 실제 어설션으로 다시 작성합니다. 결과를 테이블에 넣으십시오: 테스트 이름 / 확인된 규칙 / 깨졌을 때 깨졌습니까 / 조치.

체크리스트

  • [ ] 작업을 넘기기 전 "잘못되면 무엇을 잃게 되나요?"라는 질문을 던졌습니다.
  • [ ] 모든 AI 테스트는 코드를 깨뜨려 테스트했습니다. 빨간색으로 변하지 않은 것을 실제 테스트로 교체했습니다.
  • [ ] 테스트 케이스를 실제 요구사항/수락 기준에 연결했습니다.
  • [ ] 민감한/실제 데이터를 도구에 제공하지 않고 마스킹했습니다. 가능하면 합성 데이터를 사용했습니다.
  • [ ] 나는 권한 내에서 방어 목적으로만 보안 테스트를 고려했습니다.
  • [ ] '버전 출시 여부' 결정은 AI가 아닌 나 자신에게 맡겼다.