مولد اختبار وحدة تلقائي مفتوح المصدر ملحد للغة + اختبار الطفرات المستند إلى LLM لاختبار البرامج الآلية
تحديث 2024-07-18
يسعدنا مشاركة خريطة الطريق الخاصة بنا التي تحدد الميزات والتحسينات القادمة لـ Mutahunter!
التحقق من ذلك هنا: خريطة الطريق
نود أن نسمع تعليقاتك واقتراحاتك وأي أفكار لديك حول اختبار الطفرات. انضم إلى المناقشة وشارك أفكارك حول خريطة الطريق أو أي أفكار أخرى لديك. ؟
سمات
مولد اختبار الوحدة: تعزيز تغطية الخط والطفرات (WIP)
البدء في اختبار الطفرة
أمثلة
تكامل CI/CD
يمكن لـ Mutahunter إنشاء اختبارات الوحدة تلقائيًا لزيادة تغطية الخط والطفرات، والاستفادة من نماذج اللغات الكبيرة (LLMs) لتحديد وسد الثغرات في تغطية الاختبار. يستخدم نماذج LLM لإدخال أخطاء مدركة للسياق في قاعدة التعليمات البرمجية الخاصة بك. ينتج هذا النهج المعتمد على الذكاء الاصطناعي عددًا أقل من الطفرات المكافئة، والطفرات ذات القدرة العالية على اكتشاف الأخطاء، وتلك ذات الاقتران العالي والتشابه الدلالي مع الأخطاء الحقيقية، مما يضمن إجراء اختبار شامل وفعال.
إنشاء اختبار الوحدة التلقائي: إنشاء اختبارات الوحدة لزيادة تغطية الخط والطفرات، والاستفادة من LLMs لتحديد وسد الثغرات في تغطية الاختبار. راجع قسم مولد اختبار الوحدة لمزيد من التفاصيل.
غير محدد اللغة: متوافق مع اللغات التي توفر تقارير التغطية بتنسيقات Cobertura XML وJacoco XML وlcov. قابلة للتوسيع إلى لغات وأطر اختبار إضافية.
طفرات LLM المدركة للسياق: تستخدم نماذج LLM لإنشاء طفرات مدركة للسياق. تشير الأبحاث إلى أن الطفرات الناتجة عن LLM تتمتع بإمكانية أعلى للكشف عن الأخطاء، وعدد أقل من الطفرات المكافئة، واقتران أعلى وتشابه دلالي مع الأخطاء الحقيقية. يستخدم خريطة لمستودع git بأكمله لإنشاء المسوخات ذات الصلة بالسياق باستخدام repomap الخاص بالمساعد. يدعم LLMs ذاتية الاستضافة وAnthropic وOpenAI وأي نماذج LLM عبر LiteLLM.
الطفرات المستندة إلى الاختلاف: تشغيل اختبارات الطفرات على الملفات والخطوط المعدلة بناءً على أحدث تغييرات طلب الالتزام أو السحب، مما يضمن اختبار الأجزاء ذات الصلة من التعليمات البرمجية فقط.
تحليل المسوخات الباقية على قيد الحياة في LLM: يقوم تلقائيًا بتحليل المسوخات الباقية على قيد الحياة لتحديد نقاط الضعف المحتملة في مجموعة الاختبار ونقاط الضعف ومجالات التحسين.
تقوم هذه الأداة بإنشاء اختبارات الوحدة لزيادة تغطية الخط والطفرات، مستوحاة من الأوراق البحثية:
التحسين الآلي لاختبار الوحدة باستخدام نماذج اللغة الكبيرة في Meta: - يستخدم LLMs لتحديد وسد الثغرات في تغطية الاختبار.
إنشاء اختبار فعال باستخدام نماذج لغة كبيرة مدربة مسبقًا واختبار الطفرات: - إنشاء اختبارات تكتشف طفرات التعليمات البرمجية وتقتلها، مما يضمن المتانة.
## انتقل إلى الأمثلة/java_maven## إزالة بعض الاختبارات من BankAccountTest.javamutahunter gen-line --test-command "mvn test -Dtest=BankAccountTest" --code-coverage-report-path "target/site/jacoco/jacoco. xml" --jacoco من نوع التغطية --مسار ملف الاختبار "src/test/java/BankAccountTest.java" -- مسار ملف المصدر "src/main/java/com/example/BankAccount.java" --model "gpt-4o" --تغطية خط الهدف 0.9 - -الحد الأقصى للمحاولات 3 تمت زيادة تغطية الخط من 47.00% إلى 100.00% تمت زيادة تغطية الطفرة من 92.86% إلى 92.86%
# قم بتثبيت حزمة Mutahunter عبر GitHub. مطلوب Python 3.11+.$ pip installmuthaunter# العمل مع GPT-4o على الريبو الخاص بك$export OPENAI_API_KEY=your-key-goes-here# أو العمل مع نماذج Anthropic$export ANTHROPIC_API_KEY=your-key-goes-here# Run Mutahunter على ملف معين. # يجب أن يتوافق تقرير التغطية مع أمر الاختبار. $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 معلومات:=-=-=-=-=-=-= -=-=-=-=-=-=-=-=-=-=-= تغطية الطفرة الشاملة؟ 100.00% تغطية الطفرة: 63.33% إجمالي المسوخ: 30 المسوخ الناجين: 11 المسوخ المقتول: 19 المسوخ المهلة: 0 مسوخ خطأ في التجميع: 0 التكلفة الإجمالية: 0.00167 دولار أمريكي ?=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=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.
مثال جافا
اذهب المثال
مثال جافا سكريبت
مثال بايثون FastAPI
لا تتردد في إضافة المزيد من الأمثلة!
يمكنك دمج Mutahunter في خط أنابيب CI/CD الخاص بك لأتمتة اختبار الطفرات. فيما يلي مثال لملف سير عمل GitHub Actions:
الاسم: Mutahunter CI/CD على: الدفع: الفروع: - طلب السحب الرئيسي: الفروع: - الوظائف الرئيسية: mutahunter: التشغيل: أحدث خطوات أوبونتو: - الاسم: يستخدم مستودع الخروج: الإجراءات/الخروج@v4 مع: عمق الجلب: 2 # مطلوب لـ git diff - الاسم: إعداد استخدامات Python: الإجراءات/setup-python@v5 مع: إصدار python: 3.11 - الاسم: تثبيت Mutahunter run: pip install mutahunter - الاسم: إعداد Java لاستخدامات مشروعك: Actions/setup-java@v2 مع: Distribution: "adopt" java-version: "17" - الاسم: تثبيت التبعيات وتشغيل الاختبارات: mvn اختبار - الاسم: تشغيل Mutahunter env: OPENAI_API_KEY: ${{ Secrets.OPENAI_API_KEY }} تشغيل: | تشغيل mutahunter - اختبار الأمر "اختبار mvn" - مسار تقرير تغطية الكود "target/site/jacoco/jacoco.xml" - نوع التغطية jacoco - نموذج "gpt-4o" - اسم مختلف : تعليق العلاقات العامة الذي تستخدمه تغطية الطفرة: thollander/[email protected] مع: filePath: logs/_latest/coverage.txt