소프트웨어 테스트를 위해 LLM을 활용합니다

소프트웨어 테스트를 위해 LLM을 활용합니다

소프트웨어 시스템이 더욱 복잡해지면서 전통적인 테스트 방법은 빠르게 진행되는 개발주기와 변화하는 사용자 요구를 유지하는 데 부족합니다. 다행스럽게도 기계 학습 및 생성 AI의 발전은 테스트 범위를 개선하고 유지 보수 노력을 감소시키기 위해 지능적이고 적응적인 테스트 전략을 가져오고 있습니다.

이 기사는 LLM (Large Language Models)을 사용하여 Python Codebase 프로젝트를 테스트합니다.

테스트 자동화에서 LLM의 이점

효율성과 속도 향상

LLM은 테스트 케이스 생성, 실행 및 분석과 같은 작업을 자동화하여 테스트 프로세스를 크게 가속화 할 수 있습니다. 이 자동화를 통해 테스트 팀은 탐색 테스트 및 테스트 계획과 같은보다 전략적 활동에 집중할 수 있습니다.

개선 된 테스트 범위

LLM은 수동 테스트가 간과 할 수있는 에지 케이스를 식별하고 테스트 시나리오를 생성하여 테스트 범위를 향상시킬 수 있습니다. 이로 인해보다 포괄적이고 강력한 테스트 프로세스가 발생하여 결함이 생산에 방출 될 위험이 줄어 듭니다.

테스트 스크립트 유지 보수 감소

LLMS는 코드 변경을 분석하고 테스트 스크립트를 자동으로 업데이트 할 수 있습니다. 이 프로세스는 수동 노력과 오류 가능성을 크게 최소화합니다.

chatgpt를 사용한 사용자 스토리의 테스트 사례 생성

다음 Python 코드는 OpenAI의 API를 사용하여 주어진 사용자 스토리에 대한 테스트 케이스를 생성합니다. API 키를 설정하고 정의합니다 generate_test_case.py 사용자 스토리를 사용하여 프롬프트를 생성하고 GPT-4 모델과 상호 작용하여 테스트 케이스를 생성하는 함수.

이는 수동 테스트 케이스를 작성하는 데 필요한 부트 스트랩에 도움이됩니다.

from openai import ChatCompletion

openai.api_key = "your-api-key"

def generate_test_case(user_story):
    prompt = f"Write test cases for: '{user_story}'"
    response = ChatCompletion.create(
        model="gpt-4",
        messages=[{"role": "user", "content": prompt}]
    )
    return response.choices[0].message['content']

user_story = "As a user, I want to reset my password to regain account access."
print(generate_test_case(user_story))

chatgpt를 사용한 Python 함수의 Pytest Case Generation

Pytest는 Python의 인기있는 테스트 프레임 워크입니다. 다음 파이썬 코드는 OpenAI의 GPT API를 사용하여 Pytest 테스트 케이스를 생성합니다. calculate_bmi 함수는 체중과 높이에 따라 BMI를 계산하고이를 분류합니다 ( “저체중”, “정상 체중”등).

사용 inspect 모듈, 스크립트는 기능의 소스 코드를 추출하고 gpt에게 유효하지 않거나 입력이 0과 같은 에지 케이스를 포함하여 매개 변수화 된 테스트 케이스를 생성하도록 요청하는 프롬프트를 준비합니다. 이 방법은 자동화 된 Pytest 케이스를 생성하는 데 매우 효과적이며 프로젝트에서 별도의 테스트 파일로 포함될 수 있습니다.

import openai
import inspect

# Set up your API key
openai.api_key = "your-api-key-here"

# Calculate BMI function part of your app's feature
def calculate_bmi(weight, height):
    if height 

기능 코드를 통과하지 않고 Pytest 케이스 생성

어떤 상황에서는 개인 정보 또는 보안 문제로 인해 코드를 직접 공유 할 수 없습니다. 그러나 Chatgpt는 여전히 이러한 경우를 도울 수 있습니다.

  • 기능 서명. 함수 이름, 매개 변수 및 리턴 유형 만 사용하여 ChatGpt는 그 목적을 유추하고 관련 테스트 사례를 만들 수 있습니다.
  • 코드 설명. 코드 기능에 대한 자세한 설명을 제공함으로써 개발자는 Chatgpt를 안내하여 적절한 테스트를 생성 할 수 있습니다.
import openai
import inspect
openai.api_key = "your-api-key-here"

signature = inspect.signature(calculate_bmi)
docstring = inspect.getdoc(calculate_bmi)

prompt = f"""
Generate pytest test cases for the following Python signature and docstring:
signature - {signature}
docstring - {docstring}
Include edge cases such as invalid inputs (zero or negative values), and use parameterized tests where possible.
"""

# Make the API call
response = openai.ChatCompletion.create(
    model="gpt-4",     
    messages=[
        {"role": "system", "content": "You are a Python testing assistant."},
        {"role": "user", "content": prompt}
    ],
    max_tokens=500,
    temperature=0.7
)

# Print the response
print(response['choices'][0]['message']['content'])

결론

LLM 구동 테스트 자동화는 소프트웨어 품질 보증의 상당한 발전을 나타냅니다. 과제가 존재하지만 이러한 기술을 성공적으로 구현하는 조직은 테스트 효율성, 적용 범위 및 신뢰성에서 상당한 이점을 얻습니다.

AI 기능이 발전함에 따라 소프트웨어 품질을 더욱 향상시키고 수동 노력을 줄일 수있는보다 정교한 테스트 방법을 기대할 수 있습니다.

출처 참조

Post Comment

당신은 놓쳤을 수도 있습니다