TestNG إنشاء التقارير في Selenium: كيفية توليد؟

⚡ ملخص ذكي

TestNG التقارير هي ملفات نتائج HTML الافتراضية التي TestNG يكتب في مجلد مخرجات الاختبار بعد كل تشغيل، موضحًا حالات الاختبار التي نجحت أو فشلت أو تم تخطيها، بالإضافة إلى أي سجلات للمُبلغ.

  • 🔘 المخرجات الافتراضية: كل ما TestNG يقوم الأمر run بإنشاء مجلد test-output بدون أي كود إضافي.
  • ☑️ عرضان HTML: يقدم ملف emailable-report.html ملخصًا للنتائج، بينما يحتوي ملف index.html على روابط لعرض التفاصيل.
  • ✅ سجلات المُبلِّغ: تقوم الدالة Reporter.log() بكتابة رسائل مخصصة مباشرة في التقرير المُنشأ.
  • 🧪 مجموعة البرامج: يؤدي تشغيل ملف testng.xml إلى تجميع عدة فئات في تقرير موحد واحد.
  • 🛠️ التخصيص: تتيح أدوات ITestListener و IReporter للفريق إنشاء تنسيق التقرير الخاص به.
  • 📊 ما وراء الإعدادات الافتراضية: يُضيف كل من ExtentReports و Allure الرسوم البيانية والسجلات ومرفقات لقطات الشاشة.

TestNG إنشاء التقارير في Selenium

ما هي TestNG التقارير؟

TestNG التقارير هي تقارير HTML الافتراضية التي يتم إنشاؤها بمجرد تنفيذ حالات الاختبار باستخدام TestNG. تساعدك هذه التقارير على تحديد المعلومات حول حالات الاختبار وحالة المشروع. TestNG تقارير في Selenium سجل ثلاث نتائج لكل طريقة اختبار - النجاح والفشل والتخطي - حتى تتمكن من التحقق من البيانات المتعلقة بحالات الاختبار بنظرة سريعة.

يعد إنشاء التقرير أمرًا مهمًا للغاية عند إجراء اختبار الأتمتة وكذلك الاختبار اليدوي.

  • من خلال النظر إلى النتيجة، يمكنك بسهولة التعرف على عدد حالات الاختبار التي تم اجتيازها أو فشلها أو تخطيها.
  • ومن خلال الاطلاع على التقرير، ستتعرف على حالة المشروع.

Selenium يُستخدم WebDriver لأتمتة تطبيق الويب، ولكنه لا يقوم بإنشاء أي تقارير من تلقاء نفسه.

  • استخدم TestNG سيتم إنشاء التقرير الافتراضي.
  • عند تنفيذ ملف testng.xml وتحديث المشروع، ستحصل على مجلد test-output، ويحتوي هذا المجلد على مخرجات التقارير من TestNG.
  • انقر بزر الماوس الأيمن على ملف emailable-report.html وحدد خيار "فتح باستخدام متصفح الويب".

ملاحظة: لم يتغير السلوك الموصوف هنا في TestNG 7.x. إصدارات من TestNG تتطلب الإصدارات 7.6 وما بعدها JDK 11 أو أعلى، لذلك قد يحتاج مشروع أقدم إلى رفع مستوى JDK الخاص به قبل إنتاج التقارير.

انواع من TestNG التقارير في مجلد مخرجات الاختبار

قبل فتح أي ملف، من المفيد معرفة ما يحتويه مجلد مخرجات الاختبار فعليًا. TestNG يكتب عدة ملفات في كل تشغيل، وكل منها يجيب على سؤال مختلف.

ملف أو مجلد ما يحتويه عندما يكون ذلك مفيداً
index.html و تقرير الهبوط الذي يربط بالنتائج والمجموعات والأوقات وعروض مخرجات المُعدّ. تحليل إحدى الجولات بالتفصيل.
emailable-report.html صفحة واحدة مكتفية ذاتيًا تلخص الطرق التي نجحت، والتي فشلت، والتي تم تخطيها لكل فئة. مشاركة النتائج مع الأشخاص الذين لا يفتحون المشروع.
testng-results.xml ملف XML قابل للقراءة آلياً، مكتوب بواسطة برنامج XML Reporter المدمج، مع حالة كل طريقة ومدتها. تغذية لوحة تحكم أو محلل بيانات مخصص.
تقارير الوحدة JUnitملفات بتنسيق XML، ملف واحد لكل فئة اختبار. أي إضافة CI تقرأ JUnit تنسيق النتيجة.
testng-failed.xml ملف مجموعة تم إنشاؤه يسرد فقط الطرق التي فشلت. إعادة تشغيل حالات الفشل فقط بدلاً من المجموعة الكاملة.

الملفان HTML هما الملفان اللذان سيفتحهما هذا البرنامج التعليمي لاحقًا، لذا فإن الشرح أدناه يبدأ بملف emailable-report.html.

كيفية إنشاء التقارير في Selenium

الطريقة 1: emailable-report.html

  1. انقر على الخيار "emailable-report.html"
  2. انقر على خيار متصفح الويب

تُظهر لقطة الشاشة أدناه فتح ملف emailable-report.html من مجلد test-output.

تحديد ملف emailable-report.html داخل TestNG مجلد مخرجات الاختبار

تقارير الإخراج في TestNG سيبدو إعداد التقارير كما يلي إذا تم اجتياز كلا الفصلين:

TestNG تقرير قابل للإرسال عبر البريد الإلكتروني يوضح اجتياز دورات الاختبار DemoA و DemoB

فكر في السيناريو الذي تفشل فيه عمدًا في حالة الاختبار، أي فئة DemoB. ثم قم بتحويل كلتا الفئتين إلى ملف مجموعة testng.xml وقم بتشغيله. ثم ستبدو النتيجة على هذا النحو. ستظهر حالات الاختبار الفاشلة.

هذه نتيجة لفئة DemoB:

تقرير قابل للإرسال عبر البريد الإلكتروني يسلط الضوء على حالة اختبار DemoB الفاشلة عمدًا

وبالمثل، فإن نتيجة Class DemoA ستبدو كما يلي:

ملخص التقرير القابل للإرسال عبر البريد الإلكتروني لطلاب دورة DemoA الناجحة

الطريقة الثانية: Index.html

  1. انقر بزر الماوس الأيمن على ملف Index.html من دليل المشروع.
  2. حدد خيار فتح باستخدام متصفح الويب. سيتم عرض النتيجة بالترتيب التالي.

تُظهر لقطة الشاشة أدناه فتح ملف index.html من دليل المشروع.

فتح ملف index.html من مجلد المشروع في متصفح الويب

النتيجة ستبدو هكذا:

TestNG صفحة تقرير index.html التي تعرض نتائج التشغيل

الطريقة الثالثة: فئة المراسلين

جنبا إلى جنب مع هؤلاء TestNG الطرق التي تم إنشاؤها للتقرير، يمكنك استخدام ملف object.properties لتخزين السجلات التي أنشأها النظام بالإضافة إلى السجلات التي أنشأها المستخدم. ولكن إحدى أبسط الطرق لتخزين معلومات السجل في الاختبار هي استخدام فئة المراسل.

مراسل.تسجيل الدخول Selenium هو فئة موجودة في TestNG لـ Selenium إعداد التقارير. يوفر 4 طرق مختلفة لتخزين معلومات السجل وهي:

  1. Reporter.log(String s);
  2. Reporter.log(String s, Boolean logToStandardOut);
  3. Reporter.log(String s, int Level);
  4. Reporter.log(String s, int Level, Boolean logToStandardOut);

تحدد الوسيطة الثانية ما إذا كانت الرسالة ستُعرض على وحدة التحكم بالإضافة إلى التقرير، وتتحكم وسيطة المستوى في مستوى الإسهاب الذي يتم الاحتفاظ بالرسالة عنده.

مثال:

قم بإنشاء فئتين مثل DemoA و DemoB واكتب الكود التالي داخل الفئات.

لفئة العرض التوضيحي؛

  • استخدم Code تم شرح DemoA أعلاه. أنت تستخدم هنا طريقة السجل لفئة المراسل. (لتنفيذ فئة تقارير خاصة بك، يجب أن تنفذ الفئة واجهة org.testng.IReporter.)
  • طريقة السجل هي طريقة ثابتة لفئة المراسل. إذن أنت تصل إلى هذه الطريقة من خلال فئة Reporter.
  • يتم استخدام طريقة السجل لتخزين معلومات السجل المكتوبة داخل البرنامج. من خلال النظر إلى معلومات السجل، ستتعرف بسهولة على المكان الذي توقف فيه تنفيذ البرنامج بالضبط.

تُظهر لقطة الشاشة أدناه استدعاءات Reporter.log الموضوعة داخل فئة DemoA.

عبارات Reporter.log المكتوبة داخل فئة اختبار DemoA

بالنسبة للفئة DemoB:

عبارات Reporter.log المكتوبة داخل فئة اختبار DemoB

  • الآن، قم بإنشاء ملف testng.xml عن طريق تحديد هاتين الفئتين و
  • حدد تشغيل كـ و
  • انقر فوق التحويل إلى اختبار.
  • ثم قم بتشغيل ملف testng.xml هذا عن طريق تحديد تشغيل باسم وتحديد مجموعة testng.
  • ثم قم بتحديث المشروع وافتح مجلد إخراج الاختبار.
  1. في مجلد test-output، افتح ملف emailable-report.html. سيبدو كما يلي:

    تقرير قابل للإرسال عبر البريد الإلكتروني يتم إنتاجه بعد تشغيل مجموعة اختبار Testng.xml DemoA و DemoB

    وبالمثل، سيكون لديك مخرجات لمشروع العرض التوضيحي B أيضًا.

  2. في مجلد مخرجات الاختبار، افتح ملف index.html. سيبدو كالتالي:

    تم إنشاء تقرير index.html بعد تشغيل مجموعة اختبار testng.xml

انقر على إخراج المراسل. سيتم فتح معلومات التسجيل مهما كانت مكتوبة في طرق الاختبار.

TestNG عرض مخرجات المُبلِّغ الذي يسرد الرسائل التي سجلتها طرق الاختبار

انقر على الأوقات. سيوضح مقدار الوقت المستغرق لتشغيل طريقة الاختبار الموجودة في الفصل باستخدام TestNG أدوات إعداد التقارير.

TestNG عرض زمني يوضح المدة التي استغرقتها كل طريقة اختبار لتنفيذها

كيفية التخصيص TestNG التقارير باستخدام ITestListener و IReporter

تستخدم الطرق الثلاث المذكورة أعلاه أي شيء TestNG يتم ذلك افتراضيًا. عندما يحتاج الفريق إلى تصميم مختلف، أو حقول إضافية، أو عرض مباشر للتقدم، TestNG يعرض نقطتي توسيع بدلاً من مطالبتك بتصحيح التقرير الافتراضي.

  • ITestListener يتم إخطارك في الوقت الفعلي عند بدء كل اختبار أو نجاحه أو فشله أو تخطيه. استخدم هذه الميزة عندما تحتاج إلى التقاط المعلومات في لحظة وقوع الحدث - كلقطة شاشة عند الفشل، على سبيل المثال.
  • ايريبورتير يتم إخطار النظام مرة واحدة بعد انتهاء كل مجموعة عمليات، ويتلقى كائنات تصف العملية بأكملها. استخدمه عندما يكون الناتج مستندًا نهائيًا، مثل ملف PDF أو صفحة HTML مخصصة.

يبدو المستمع الذي يدفع كل نتيجة إلى التقرير من خلال فئة Reporter على النحو التالي.

import org.testng.ITestListener;
import org.testng.ITestResult;
import org.testng.Reporter;

public class ReportListener implements ITestListener {

    @Override
    public void onTestSuccess(ITestResult result) {
        Reporter.log("PASSED: " + result.getName(), true);
    }

    @Override
    public void onTestFailure(ITestResult result) {
        Reporter.log("FAILED: " + result.getName(), true);
    }

    @Override
    public void onTestSkipped(ITestResult result) {
        Reporter.log("SKIPPED: " + result.getName(), true);
    }
}

يتم تسجيل المستمع في نفس ملف مجموعة اختبار testng.xml الذي أنشأته بالفعل لـ DemoA و DemoB.

<suite name="Demo Suite">
  <listeners>
    <listener class-name="ReportListener" />
  </listeners>
  <test name="Demo Test">
    <classes>
      <class name="DemoA" />
      <class name="DemoB" />
    </classes>
  </test>
</suite>

هناك خياران من خيارات سطر الأوامر يجدر معرفتهما أثناء التجربة. -d يُغيّر هذا الخيار الدليل الذي تُكتب فيه التقارير، و -usedefaultlisteners false يُعطّل هذا الأمر المُبلّغات المُدمجة بحيث لا يعمل سوى المُستمع الخاص بك. كلاهما موصوف في النسخة الرسمية. TestNG تسجيل البيانات وتوثيق النتائج، والذي يوثق أيضًا الخصائص التي يقبلها برنامج الإبلاغ عن XML المدمج.

يتم تسجيل المستمع مرة واحدة ثم يتم تطبيقه على كل فئة في المجموعة، وهذا هو السبب في أن الفرق التي تعمل على نطاق واسع اختبار الأتمتة عادةً ما تفضل مجموعات الاختبار ذلك على إضافة أسطر السجل إلى كل طريقة اختبار يدويًا.

TestNG التقارير الافتراضية مقابل ExtentReports مقابل Allure

تكفي التقارير الافتراضية لمجموعة برامج صغيرة، لكنها لا تتضمن سجلات تاريخية ولا رسومًا بيانية. عادةً ما يتم إضافة مكتبتين مفتوحتي المصدر عند توسع مجموعة البرامج، وكلاهما يعمل مع TestNG.

القدرات TestNG الافتراضي تقارير إكستنت تقرير جاذبية
جهد الإعداد لا شيء — تم إنتاجه تلقائيًا أضف المكتبة واكتب كود المُبلِّغ أضف المحول، ثم أنشئ التقرير من النتائج
المخططات ولوحات المعلومات لا نعم نعم
صور فقط من خلال ترميز ملف Reporter.log واجهة برمجة تطبيقات المرفقات المدمجة واجهة برمجة تطبيقات المرفقات المدمجة
سجل الجري والاتجاهات لا من خلال مكون الخادم الاختياري نعم، من النتائج السابقة المخزنة
تغطية الإطار TestNG فقط Java و .NET حيادية الإطار

ابدأ بالتقارير الافتراضية بينما لا تزال المجموعة صغيرة. انتقل إلى تقارير إكستنت عندما يطلب أصحاب المصلحة لوحات معلومات سهلة القراءة، و تقرير جاذبية عندما يصبح سجل الاختبارات غير المستقرة عبر عمليات البناء هو السؤال المهم. أياً كان الخيار الذي تختاره، عادةً ما يتم نشر التقرير بواسطة مهمة البناء، وهو ما تم تغطيته في Jenkins التكامل المستمر البرنامج التعليمي.

الأسئلة الشائعة

لا يظهر المجلد إلا بعد TestNG يُنهي البرنامج تشغيله ويتم تحديث المشروع في بيئة التطوير المتكاملة. عادةً ما يعني المجلد الفارغ أن الفئة قد تم تشغيلها كبرنامج عادي. Java تم إيقاف تشغيل التطبيق، أو المستمعين الافتراضيين، لذلك لم يتم تشغيل أي برنامج إبلاغ.

نعم. TestNG يكتب البرنامج إلى مجلد test-output افتراضيًا. مرر الخيار -d في سطر الأوامر، أو حدد مجلد الإخراج في إعدادات تشغيل بيئة التطوير المتكاملة أو في إعدادات Maven Surefire التي تُشغّل مجموعة الاختبارات.

التقط الصورة داخل دالة استماع مثل onTestFailure، واحفظ الملف بجانب التقرير، ثم اكتب وسم صورة HTML من خلال Reporter.log. يقوم التقرير بعرض الترميز، بحيث تظهر الصورة بجانب الدالة التي فشلت.

TestNG لا يقوم البرنامج نفسه بإرسال البريد الإلكتروني. عادةً ما تقوم الفرق بإرفاق ملف emailable-report.html من مهمة بناء، على سبيل المثال Jenkins قم بإجراء خطوة إرسال بريد إلكتروني بعد عملية البناء، أو أضف روتين بريد صغير داخل تطبيق IReporter.

تقوم نماذج الذكاء الاصطناعي بتجميع حالات الفشل حسب التراكم-tracبناءً على التشابه، يتم التمييز بين العيوب الحقيقية وأعطال البيئة أو التوقيت، ويتم ترتيب الطرق المعيبة حسب الأولوية لفحصها. وبذلك، تتحول قائمة التقارير الطويلة التي يمكن إرسالها عبر البريد الإلكتروني إلى قائمة انتظار قصيرة ذات أولوية للفريق.

مساعد الطيار جيثب يمكن إنشاء فئات المستمعين، وعبارات Reporter.log، وإدخالات testng.xml من تعليق قصير. Revراجع كل اقتراح، لأن المستمعين المُنشأين غالبًا ما يغفلون عن أساليب الواجهة الدقيقة. TestNG تتوقع.

بمجرد ربط محلل إعادة المحاولة، يتم تسجيل كل محاولة إعادة إلى جانب النتيجة النهائية. وبالتالي، يُظهر التقرير الافتراضي كل محاولة، لذا قد يظهر اختبار غير مستقر على أنه فاشل وناجح في نفس التشغيل.

مرر الخيار ‎-usedefaultlisteners false في سطر الأوامر، أو اضبط قيمة useDefaultListerners على false في إعدادات Maven Surefire أو Ant. سيتم تشغيل التقارير التي تسجلها صراحةً فقط، مما يقلل وقت التشغيل للمجموعات الكبيرة جدًا.

تلخيص هذه التدوينة بـ: