เครื่องมือสร้างการทดสอบหน่วยอัตโนมัติของผู้ไม่เชื่อเรื่องพระเจ้าภาษาโอเพ่นซอร์ส + การทดสอบการกลายพันธุ์ที่ใช้ LLM สำหรับการทดสอบซอฟต์แวร์อัตโนมัติ
อัปเดต 2024-07-18
เรารู้สึกตื่นเต้นที่จะแบ่งปันแผนงานของเราโดยสรุปฟีเจอร์และการปรับปรุงที่กำลังจะเกิดขึ้นสำหรับ Mutahunter!
ตรวจสอบได้ที่นี่: แผนงาน
เรายินดีรับฟังความคิดเห็น ข้อเสนอแนะ และความคิดเห็นของคุณเกี่ยวกับการทดสอบการกลายพันธุ์ เข้าร่วมการสนทนาและแบ่งปันข้อมูลเชิงลึกเกี่ยวกับแผนงานหรือแนวคิดอื่นๆ ที่คุณมี -
คุณสมบัติ
เครื่องสร้างการทดสอบหน่วย: การปรับปรุงความครอบคลุมของเส้นและการกลายพันธุ์ (WIP)
เริ่มต้นการทดสอบการกลายพันธุ์
ตัวอย่าง
บูรณาการ CI/ซีดี
Mutahunter สามารถสร้างการทดสอบหน่วยโดยอัตโนมัติเพื่อเพิ่มความครอบคลุมของบรรทัดและการกลายพันธุ์ โดยใช้ประโยชน์จาก Large Language Models (LLM) เพื่อระบุและเติมเต็มช่องว่างในความครอบคลุมของการทดสอบ ใช้โมเดล LLM เพื่อแทรกข้อผิดพลาดแบบ Context-Aware ลงในโค้ดเบสของคุณ แนวทางที่ขับเคลื่อนด้วย AI นี้สร้างการกลายพันธุ์ที่เทียบเท่ากันน้อยลง สายพันธุ์กลายที่มีศักยภาพในการตรวจจับข้อผิดพลาดที่สูงกว่า และการกลายพันธุ์ที่มีความคล้ายคลึงและความคล้ายคลึงทางความหมายกับข้อบกพร่องจริงที่สูงกว่า ทำให้มั่นใจได้ว่าการทดสอบจะครอบคลุมและมีประสิทธิภาพ
การสร้างการทดสอบหน่วยอัตโนมัติ: สร้างการทดสอบหน่วยเพื่อเพิ่มความครอบคลุมของบรรทัดและการกลายพันธุ์ โดยใช้ประโยชน์จาก LLM เพื่อระบุและเติมช่องว่างในความครอบคลุมของการทดสอบ ดูส่วนตัวสร้างการทดสอบหน่วยสำหรับรายละเอียดเพิ่มเติม
ผู้ที่ไม่เชื่อเรื่องพระเจ้า: เข้ากันได้กับภาษาที่ให้รายงานความครอบคลุมในรูปแบบ Cobertura XML, Jacoco XML และ lcov สามารถขยายเป็นภาษาเพิ่มเติมและกรอบการทดสอบได้
การกลายพันธุ์ที่รับรู้บริบทของ LLM: ใช้แบบจำลอง LLM เพื่อสร้างการกลายพันธุ์ที่รับรู้บริบท การวิจัยระบุว่าการกลายพันธุ์ที่สร้างโดย LLM มีศักยภาพในการตรวจจับข้อบกพร่องที่สูงกว่า การกลายพันธุ์ที่เทียบเท่ากันน้อยกว่า และการมีเพศสัมพันธ์และความคล้ายคลึงทางความหมายที่สูงกว่ากับข้อบกพร่องที่แท้จริง ใช้แผนที่ของพื้นที่เก็บข้อมูล git ทั้งหมดของคุณเพื่อสร้างการกลายพันธุ์ที่เกี่ยวข้องตามบริบทโดยใช้ repomap ของ aider รองรับ LLM ที่โฮสต์เอง, Anthropic, OpenAI และ LLM รุ่นใดๆ ผ่านทาง LiteLLM
การกลายพันธุ์ตามความแตกต่าง: รันการทดสอบการกลายพันธุ์ในไฟล์และบรรทัดที่แก้ไขตามการเปลี่ยนแปลงคำขอส่งหรือดึงล่าสุด เพื่อให้มั่นใจว่าจะมีการทดสอบเฉพาะส่วนที่เกี่ยวข้องของโค้ดเท่านั้น
การวิเคราะห์การกลายพันธุ์ที่รอดตายของ LLM: วิเคราะห์การกลายพันธุ์ที่รอดชีวิตโดยอัตโนมัติเพื่อระบุจุดอ่อนที่อาจเกิดขึ้นในชุดทดสอบ ช่องโหว่ และพื้นที่ที่ต้องปรับปรุง
เครื่องมือนี้สร้างการทดสอบหน่วยเพื่อเพิ่มความครอบคลุมทั้งบรรทัดและการกลายพันธุ์ โดยได้รับแรงบันดาลใจจากเอกสาร:
การปรับปรุงการทดสอบหน่วยอัตโนมัติโดยใช้โมเดลภาษาขนาดใหญ่ที่ Meta: - ใช้ LLM เพื่อระบุและเติมช่องว่างในความครอบคลุมของการทดสอบ
การสร้างการทดสอบที่มีประสิทธิภาพโดยใช้แบบจำลองภาษาขนาดใหญ่ที่ได้รับการฝึกอบรมล่วงหน้าและการทดสอบการกลายพันธุ์: - สร้างการทดสอบที่ตรวจจับและกำจัดการกลายพันธุ์ของโค้ด เพื่อให้มั่นใจถึงความแข็งแกร่ง
## ไปที่ example/java_maven## ลบการทดสอบบางส่วนออกจาก BankAccountTest.javamutahunter gen-line --test-command "mvn test -Dtest=BankAccountTest" --code-coverage-report-path "target/site/jacoco/jacoco. xml" -- ประเภทความครอบคลุม jacoco --test-file-path "src/test/java/BankAccountTest.java" --source-file-path "src/main/java/com/example/BankAccount.java" --model "gpt-4o" --target-line-coverage 0.9 --max-attempts 3 ความครอบคลุมของสายเพิ่มขึ้นจาก 47.00% เป็น 100.00% ความครอบคลุมของการกลายพันธุ์เพิ่มขึ้นจาก 92.86% เป็น 92.86%
# ติดตั้งแพ็คเกจ Mutahunter ผ่าน GitHub ต้องใช้ Python 3.11+$ pip install muthaunter# ทำงานกับ GPT-4o บน repo$ ของคุณส่งออก OPENAI_API_KEY=your-key-goes-here# หรือ ทำงานกับโมเดลของ Anthropic$ ส่งออก ANTHROPIC_API_KEY=your-key-goes-here# Run Mutahunter ในไฟล์เฉพาะ # รายงานความครอบคลุมควรสอดคล้องกับคำสั่ง test.$ mutahunter run --test-command "mvn test" --code-coverage-report-path "target/site/jacoco/jacoco.xml" --coverage-type jacoco -- รุ่น "gpt-4o-mini" - - - - - - - - - - - - - - - - - - - - - - - |- |(' ` `-' ' ` ' ' ` `-' ' ` ' `-' ' '2024-07-29 12:31:22,045 INFO:=-=-=-=-=-=-= -=-=-=-=-=-=-=-=-=-=-=-=-=-=-= เส้นความครอบคลุมของการกลายพันธุ์โดยรวม ? ความครอบคลุม: 100.00% ? ความครอบคลุมของการกลายพันธุ์: 63.33% ? การกลายพันธุ์ที่รอดชีวิต: 11 ?? ️ การกลายพันธุ์ที่ถูกฆ่า: 19 ?️ การกลายพันธุ์ที่หมดเวลา: 0 ข้อผิดพลาดในการคอมไพล์: 0 ? ?=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=2024-07-29 12 :31:22,050 ข้อมูล: สร้างรายงาน HTML:mutation_report.html2024-07-29 12:31:22,058 ข้อมูล: สร้างรายงาน HTML: 1.html2024-07-29 12:31:22,058 ข้อมูล: การทดสอบการกลายพันธุ์สิ้นสุดลงใช้เวลา 127 วินาที
ไปที่ไดเร็กทอรีตัวอย่างเพื่อดูวิธีรัน Mutahunter ในภาษาโปรแกรมต่างๆ:
ตรวจสอบตัวอย่าง Java เพื่อดูตัวอย่างการทดสอบการกลายพันธุ์บน LLM ที่น่าสนใจ
ตัวอย่างจาวา
ไปตัวอย่าง
ตัวอย่างจาวาสคริปต์
ตัวอย่าง Python FastAPI
อย่าลังเลที่จะเพิ่มตัวอย่างเพิ่มเติม!
คุณสามารถรวม Mutahunter เข้ากับไปป์ไลน์ CI/CD ของคุณเพื่อทำการทดสอบการกลายพันธุ์โดยอัตโนมัติ นี่คือตัวอย่างไฟล์เวิร์กโฟลว์ GitHub Actions:
ชื่อ: Mutahunter CI/CD บน: พุช: สาขา: - main pull_request: สาขา: - mainjobs: mutahunter: run-on: ubuntu-ขั้นตอนล่าสุด: - ชื่อ: พื้นที่เก็บข้อมูล Checkout ใช้: actions/checkout@v4 พร้อมด้วย: fetch- allowance: 2 # จำเป็นสำหรับ git diff - ชื่อ: ตั้งค่า Python ใช้: actions/setup-python@v5 ด้วย: python-version: 3.11 - ชื่อ: ติดตั้ง Mutahunter วิ่ง: pip ติดตั้ง mutahunter - ชื่อ: ตั้งค่า Java สำหรับโครงการของคุณ ใช้: actions/setup-java@v2 ด้วย: การแจกจ่าย: "adopt" java-version: "17" - ชื่อ: ติดตั้งการพึ่งพาและรันการทดสอบ : การทดสอบ mvn - ชื่อ: เรียกใช้ Mutahunter env: OPENAI_API_KEY: ${{ Secrets.OPENAI_API_KEY }} เรียกใช้: | mutahunter run --test-command "mvn test" --code-coverage-report-path "target/site/jacoco/jacoco.xml" --coverage-type jacoco --model "gpt-4o" --diff - ชื่อ : PR แสดงความคิดเห็นเกี่ยวกับความครอบคลุมของการกลายพันธุ์ที่ใช้: thollander/[email protected] ด้วย: filePath: logs/_latest/coverage.txt