الادعاءات في SoapUI: البرامج النصية، XQuery، أنواع XPath

⚡ ملخص ذكي

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

  • 🔘 الفئات: محتوى العقار، والامتثال/الحالة/المعايير، والنصوص البرمجية، واتفاقية مستوى الخدمة، ونظام إدارة الفيديو، والأمان.
  • ☑️ يحتوي على: يؤكد وجود سلسلة نصية في الاستجابة، مع دعم التعبيرات النمطية.
  • لا يحتوي على: يؤكد عدم وجود سلسلة نصية، وهو أمر مفيد لرموز الخطأ والحقول المسربة.
  • 🧪 مطابقة XPath: قم بتعريف مساحة الاسم أولاً، ثم استهدف عقدة واحدة وقارن قيمتها.
  • 🛠️ مطابقة XQuery: يتحقق من صحة مجموعات العقد المتكررة التي قد تحتاج لولا ذلك إلى مئات من عمليات التحقق من XPath.
  • 📊 النصي: Groovy تتعامل التأكيدات مع الاستجابات الديناميكية ومنطق الإعداد أو الإزالة.
  • 🔍 استكشاف الأخطاء وإصلاحها: تتسبب مساحة الاسم الخاطئة واستخدام النقطة بدلاً من النقطتين في معظم حالات الفشل.

الادعاءات في SoapUI

ما هو التأكيد؟

التأكيد يعني فعل تأكيد أو ذكر شيء ما. ويمكن أيضًا تفسيرها على أنها نقطة تفتيش أو نقطة تحقق.

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

أنواع التوكيد

توجد طرق متنوعة للتعبير عن رد الفعل؛ ومع ذلك، سنركز على الطرق الشائعة الاستخدام SoapUI أنواع التأكيدات أثناء التحقق من صحة الاستجابة. فيما يلي الفئات المتوفرة في النسخة مفتوحة المصدر من SoapUI.

  1. محتوى الملكية
  2. معيار حالة الامتثال
  3. سيناريو
  4. جيش تحرير السودان
  5. JMS
  6. الأمن والحماية

يقوم مربع الحوار بتجميع كل تأكيد ضمن تلك الفئات، كما توضح لقطة الشاشة أدناه.

فئات التأكيدات المدرجة في SoapUI إضافة مربع حوار التأكيد
أنواع التأكيدات في SoapUI

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

ملاحظة حول الإصدار: تيار SoapUI تتضمن الوثائق أيضًا قائمة بـ JDBC. الفئة (حالة JDBC ومهلة JDBC) إلى جانب الفئات المذكورة أعلاه، و محتوى الرسالة تأكيد داخل محتوى الخاصية لمقارنة XML أكثر ثراءً. الإصدار التجاري المشار إليه هنا باسم "Pro" يُباع الآن باسم ReadyAPI بواسطة SmartBear، لذلك قد تختلف تسميات القوائم في الإصدارات الأحدث بينما يظل سلوك التأكيد كما هو.

يحتوي على التأكيد

يبحث عن وجود السلسلة المحددة. كما أنه يدعم التعبير العادي.

سنستمر بنفس المثال من البرنامج التعليمي السابق مع طلب WSDL كـ http://www.dneonline.com/calculator.asmxإذا لم تكن قد أنشأت هذا المشروع بعد، فاعمل على ذلك إنشاء مشروع ومجموعة اختبار وحالة اختبار لأول مرة.

الخطوة 1: بشكل افتراضي، لا توجد تأكيدات.

  1. يتم عرض عدد التأكيدات في علامة التبويب التأكيدات.
  2. لإضافة تأكيد جديد، انقر فوق الزر "إضافة تأكيد جديد".

SoapUI علامة تبويب التأكيدات لا تعرض أي تأكيدات، وزر إضافة تأكيد جديد

الخطوة 2: الآن ،

  1. حدد فئة التأكيد.
  2. حدد نوع التأكيد.
  3. انقر فوق "إضافة"

إضافة مربع حوار التأكيد مع تحديد فئة التأكيد ونوعه

الخطوة 3: لنتحقق مما إذا كانت السلسلة '46' موجودة في الاستجابة. انقر فوق "موافق".

ملاحظة: يمكننا أيضًا تجاهل حالة الأحرف وإضافة تعبير عادي.

يحتوي على مربع حوار تكوين التأكيد مع إدخال القيمة 46

الخطوة 4: عند إضافتها، يتم تنفيذ التأكيد على الفور ويظهر ما إذا كان صحيحًا أم غير صحيح.

تُظهر علامة التبويب "التأكيدات" أن تأكيد "يحتوي على" صحيح.

الخطوة 5: لنفترض الآن أننا قمنا بتغيير محتوى "يحتوي على تأكيد في SoapUI' إلى '47' وانظر ماذا سيحدث.

تعديل محتوى التأكيد "يحتوي على" من 46 إلى 47

الخطوة السادسة: يتم تنفيذ التأكيد وعرض النتيجة للمستخدم. بما أننا لا نملك السلسلة '47' ضمن الاستجابة، فقد فشل التأكيد.

علامة تبويب التأكيدات تُشير إلى فشل تأكيد "يحتوي على"

لا يحتوي على التأكيد

يعمل نظيره في الاتجاه المعاكس، حيث يبحث عن عدم وجود السلسلة المحددة. كما يدعم التعبيرات النمطية.

الخطوة 1: الآن بعد النقر على زر "إضافة تأكيدات جديدة"،

  1. حدد فئة التأكيد.
  2. حدد نوع التأكيد - في هذه الحالة "لا يحتوي"
  3. انقر فوق "إضافة"

أضف مربع حوار التأكيد مع تحديد "لا يحتوي على".

الخطوة الثانية: لنتحقق من وجود السلسلة النصية 'intA' في الاستجابة. أدخل السلسلة النصية 'FromCurrency' وانقر على "موافق".

مربع حوار "لا يحتوي على تأكيد" مع إدخال السلسلة FromCurrency

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

علامة تبويب التأكيدات التي تعرض نتائج "يحتوي على" و"لا يحتوي على".

الخطوة الرابعة: لنقم الآن بتغيير محتوى عبارة "Not Contains Assertion" ونرى ما سيحدث. سنتحقق من عدم وجود السلسلة النصية "AddResult".

مربع حوار التأكيد "لا يحتوي على" يتحقق من الرمز المميز AddResult

الخطوة 5: السلسلة 'AddResult' موجودة بالفعل في الاستجابة، وبالتالي فإن تأكيد 'NOT Contains' سيفشل كما هو موضح أدناه.

فشل تأكيد "لا يحتوي على" لوجود AddResult

تأكيد مطابقة XPath

تُعدّ مطابقة السلاسل النصية عمليةً غير دقيقة، لذا يستهدف التأكيد التالي عقدةً واحدةً بدلاً من ذلك. ويستخدم تعبير XPath لتحديد العقدة المستهدفة وقيمها. كسباث، هي لغة استعلام XML لاختيار العقد من مستند XML.

الخطوة 1: الآن بعد النقر على زر "إضافة تأكيدات جديدة"،

  1. حدد فئة التأكيد.
  2. حدد نوع التأكيد - في هذه الحالة "مطابقة XPath"
  3. انقر فوق "إضافة"

إضافة مربع حوار التأكيد مع تحديد مطابقة XPath

الخطوة الثانية: إضافة XPath تفتح النافذة.

قبل إضافة SoapUI في لغة XPath، نحتاج إلى تعريف مساحة الاسم. مساحة اسم XML هي مجموعة من الأسماء، يتم تحديدها بواسطة مرجع مُعرّف الموارد الموحد (URI)، والتي تُستخدم في مستندات XML كأسماء للعناصر والخصائص. ويُستخدم الشيء نفسه في SoapUI تأكيد XPath.

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

بعد تعريف مساحة الاسم، نحتاج إلى الإشارة إلى XPath باستخدام مساحة الاسم التي تم إنشاؤها.

عند النقر على زر "إعلان"، ستظهر مساحتا اسم حيث لدينا عنوانان موحدان للموارد (URI). أحدهما هو المخطط. URL والآخر يتوافق مع خدمة الويب الفعلية URLيجب استخدام مساحة الاسم الفعلية التي يوجد بها موقع خدمة الويب، وليس مساحة اسم المخطط، عند الإشارة إلى XPath. تظهر الأسطر المُعلنة في أعلى مربع XPath كما هو موضح أدناه.

تم تعريف مساحات الأسماء soap و ns1 داخل نافذة تأكيد XPath

إعلان مساحة الاسم Soap='http://schemas.xmlsoap.org/soap/envelope/';

أعلن مساحة الاسم ns1='http://tempuri.org/';

نافذة تأكيد XPath تظهر مباشرة بعد النقر على "إعلان".

الخطوة 3: الآن نحتاج إلى إدخال XPath الخاص بعقدة XML التي نحتاج إلى التحقق من صحتها.

//ns1:AddResult يعطينا قيمة العقدة المحصورة بينهما & و ns1 يتوافق مع مساحة الاسم المعلنة والتي تشير إلى "http://tempuri.org/"

بعد إدخال ملف XML، نحتاج إلى النقر فوق "تحديد من الحالي" بحيث يتم التقاط القيمة من الاستجابة الحالية للمقارنة من الآن فصاعدا.

تم إدخال تعبير XPath مع تحديد "تحديد من الحالي".

الخطوة الرابعة: حتى الآن،

  1. بعد الإعلان عن مساحات الأسماء، قمنا بإدخال XPath لعقدة XML التي نحتاج إلى التحقق من صحتها.
  2. نحتاج إلى النقر فوق "تحديد من الحالي" لجعل القيمة الحالية هي القيمة المتوقعة.
  3. يتم عرض القيمة الحالية للمستخدم والتي يمكننا تعديلها إذا لزم الأمر.
  4. انقر فوق "حفظ".

إعدادات مطابقة XPath التي تعرض القيمة المتوقعة وزر الحفظ

الخطوة 5: التأكيد المضاف في SoapUI سيتم عرضها كما هو موضح أدناه.

علامة تبويب التأكيدات تعرض تأكيد مطابقة XPath المضاف

تأكيدات البرمجة النصية

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

SoapUI يستخدم إما Groovy البرمجة النصية أو Javaسيناريو لتأكيدات البرمجة النصية. يتم اعتماد تقنية البرمجة النصية لتطويرping إطار عمل لاختبار بروتوكول SOAP. تُستخدم تأكيدات البرمجة النصية في الظروف التالية.

  • تتيح البرمجة النصية للمستخدم تنفيذ بعض العمليات قبل وبعد تنفيذ حالة اختبار باستخدام طريقتي الإعداد والإنهاء على التوالي. الإعداد هو إجراء يُنفذ قبل تنفيذ طريقة معينة (مثال: إنشاء كائن وتهيئته)، بينما الإنهاء هو إجراء يُنفذ بعد تنفيذ تلك الطريقة (مثال: حذف الكائنات وتنظيف النظام). هذه الميزة غير متوفرة في أنواع التأكيدات الأخرى، ولا يمكن تنفيذها إلا من خلال البرمجة.
  • يسمح للمستخدمين بفتح/إغلاق مشروع، من أجل تهيئة أو تنظيف الإعدادات المتعلقة بالمشروع وأيضًا للعمل مع المتغيرات البيئية وهو أمر مفيد للغاية أثناء كتابة البرامج النصية.
  • فهو يساعدنا في تأكيد محتوى الاستجابة الديناميكي.
  • تُستخدم تأكيدات البرمجة النصية لإنشاء تأكيدات مُعرَّفة من قِبل المستخدم وليست مُعرَّفة مسبقًا بواسطة SoapUI.

لتوضيح تأكيد البرنامج النصي في SoapUI، سنستخدم ملف WSDL الخاص بالآلة الحاسبة، حالة الاختبار "الجمع" التي أنشأناها سابقًا.

الخطوة الأولى: خطوات إضافة سكربت Groovy هي نفسها خطوات إضافة التأكيدات الأخرى، باستثناء أن التأكيد ليس مُعرّفًا مسبقًا، بل هو تأكيد يُعرّفه المستخدم، مما يوفر مرونة أكبر من التأكيدات المدمجة.

حدد خطوة الاختبار التي سيتم إضافة التأكيد عليها.

تم تحديد خطوة الاختبار في SoapUI الملاح قبل إضافة التأكيد

انقر فوق الزر "إضافة تأكيد" كما هو موضح أدناه.

زر "إضافة تأكيد" في شريط أدوات تأكيدات خطوة الاختبار

الخطوة الثانية: الآن حدد فئة التأكيد.

  1. في هذه الحالة هو البرنامج النصي.
  2. اختر SoapUI تأكيد البرنامج النصي، ولا توجد أنواع فرعية مرتبطة به.
  3. انقر فوق "إضافة".

أضف مربع حوار التأكيد مع تحديد فئة البرنامج النصي

الخطوة 3: يفتح مربع حوار البرمجة النصية حيث سيتمكن المستخدم من كتابة نص برمجي محدد من قبل المستخدم للتحقق من صحة XML الاستجابة.

فارغ SoapUI مربع حوار محرر تأكيدات النصوص البرمجية

الخطوة الرابعة: لنكتب الآن برنامج Groovy للتحقق من معدل التحويل. البرنامج مرفق أدناه مع التعليقات المضمنة. يُنصح بمعرفة المزيد حول Java البرنامج النصي أو Groovy البرنامج النصي قبل محاولة كتابة البرنامج النصي الخاص بك.

//Define Groovy Utils and holder for validating the XML reponse content
def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context)
def holder = groovyUtils.getXmlHolder(messageExchange.responseContent)

//Define the NameSpace
holder.namespaces["ns1"] = "http://tempuri.org/"

//Get the Value of the Node 'AddResult' and assign to a variable
def addResult = holder.getNodeValue("//ns1:AddResult")

//print the value of the result in the Output panel
log.info "The result value for integers is " + addResult

//Comparing the value to print 'Pass' or 'Fail'
if(addResult=="46")
{ log.info "Pass" }
else
{ log.info "fail"}
  1. انقر فوق الزر "تنفيذ" لبدء التنفيذ.
  2. يتم عرض إخراج البرنامج النصي في جزء الإخراج. لقد قام بطباعة قيمة التحويل وكذلك النتيجة النهائية (نجاح أو فشل)
  3. يتم عرض المعلومات التي تفيد بأن "تأكيد البرنامج النصي قد تم اجتيازه". انقر فوق "موافق".

ملاحظة: سيتم دائمًا عرض نافذة المعلومات النهائية المنبثقة مع الرسالة "تم تمرير تأكيد البرنامج النصي" طالما أن البرنامج النصي صحيح من الناحية التركيبية. ليس له أي علاقة بتأكيدك في النص.

لوحة إخراج تأكيد البرنامج النصي تعرض قيمة النتيجة و"اجتياز".

انقر OK

الخطوة 5: الآن تعرض علامة التبويب "التأكيد" جميع التأكيدات التي أضفناها لمجموعة الاختبار هذه مع الحالة المقابلة لكل منها.

علامة تبويب التأكيدات تعرض قائمة بجميع التأكيدات المضافة إلى مجموعة الاختبار

الخطوة شنومكس: الآن

  1. حدد مجموعة الاختبار من شجرة المستكشف
  2. انقر فوق زر "تشغيل".
  3. سيتم عرض النتائج لمجموعة الاختبار بأكملها.

نتائج تشغيل مجموعة الاختبارات بعد تنفيذ جميع التأكيدات

تأكيد المطابقة في XQuery

يستخدم تعبير XQuery لاختيار المحتوى من الخاصية المستهدفة. نحتاج إلى ملف XML استجابة أكبر بكثير لفهم تأكيد XQuery بشكل أفضل. SoapUIلنستورد ملف WSDL آخر كما هو موضح أدناه: http://www.webservicex.net/medicareSupplier.asmx?WSDL

ملاحظة: لم تعد نقاط نهاية العرض التوضيحي العامة لموقع webservicex.net المستخدمة في هذا الشرح قابلة للوصول إليها بشكل موثوق، لذا تم الاحتفاظ بلقطات شاشة الطلب والاستجابة أدناه كمثال مرجعي. أي ملف WSDL يُرجع مجموعة عقد متكررة سيُفعّل تأكيد XQuery بنفس الطريقة تمامًا.

الخطوة 1: انقر بزر الماوس الأيمن على المشروع الحالي وحدد "إضافة WSDL".

انقر بزر الماوس الأيمن على القائمة SoapUI مشروع يعرض إضافة WSDL

الخطوة الثانية: سيتم فتح مربع حوار إضافة WSDL. اترك الخيارات الأخرى كما هي افتراضياً وانقر على زر "موافق".

أضف مربع حوار WSDL مع خيارات الاستيراد الافتراضية

الخطوة 3: جميع العمليات مدرجة كما هو موضح أدناه.

عمليات WSDL لموردي Medicare المدرجة في شجرة التنقل

الخطوة الرابعة: لنضف الآن حالة الاختبار ضمن نفس مجموعة الاختبار التي أنشأناها من أجلها الاختبار محول العملات.

خيار جديد لحالات الاختبار في مجموعة الاختبارات الحالية

الخطوة 5: أدخل اسم حالة الاختبار وانقر على زر "موافق".

إدخال اسم حالة الاختبار في مربع حوار حالة الاختبار الجديدة

الخطوة 6: يتم إنشاء حالة الاختبار كما هو موضح أدناه.

حالة اختبار تم إنشاؤها حديثًا في SoapUI شجرة الملاح

الخطوة 7: أضف خطوة اختبار جديدة من النوع "طلب اختبار Soap" كما هو موضح أدناه.

أضف قائمة الخطوات مع تحديد طلب اختبار SOAP

الخطوة 8: أدخل اسم خطوة الاختبار. لنفترض مثلاً اسم "المورد حسب المدينة"، وهو اسم أكثر وضوحاً. انقر على "موافق".

تسمية خطوة الاختبار الجديدة: Supplier_by_City

الخطوة شنومك: حدد Operaما نريد التحقق منه هو "MedicareSupplierSoap -> GetSupplierByCity". انقر فوق "موافق".

تحديد عملية GetSupplierByCity لخطوة الاختبار

الخطوة 10: أدخل اسم حالة الاختبار وانقر فوق "موافق".

تأكيد اسم طلب اختبار SOAP

الخطوة 11: سيتم عرض مخطط XML للطلب كما هو موضح أدناه.

مخطط XML لطلب GetSupplierByCity المُنشأ

الخطوة 12: الآن دعونا نجد جميع معلومات الموردين لمدينة "نيويورك".

للقيام بذلك، أضف الأسطر التالية إلى الكود الخاص بك.

<GetSupplierByCity xmlns="http://www.webservicex.net/">

<City>New York</City>

</GetSupplierByCity>

ملف WSDL أدناه URL – http://www.webservicex.net/medicareSupplier.asmx?op=GetSupplierByCity

تم تعديل ملف XML الخاص بالطلب بحيث تكون قيمة المدينة هي نيويورك

الخطوة 13: عند تنفيذ الاختبار، نتلقى الاستجابة التالية

استجابة GetSupplierByCity التي تحتوي على سجلات موردين متكررة

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

يساعدنا تأكيد XQuery في التحقق من صحة مجموعة من استجابات XML المتكررة بطبيعتها.

عقد SupplierData المتكررة التي سيتكرر عليها XQuery

الخطوة 15: انقر الآن على "إضافة تأكيد"،

  1. حدد "فئة التأكيد" - محتوى الخاصية في هذه الحالة.
  2. حدد نوع التأكيد كـ "تأكيد XQuery"
  3. انقر فوق "إضافة".

تم تحديد تأكيد XQuery في فئة محتوى الخاصية

الخطوة 16: على غرار تأكيد XPath، نحتاج إلى تعريف مساحة الاسم.

  1. انقر على زر "إعلان" للسماح تلقائيًا SoapUI لتعريف مساحة الاسم. عند النقر على زر "تعريف"، ستظهر نافذة منبثقة تحمل رسالة "تعريف مساحة الاسم من المخطط بدلاً من ذلك". انقر "نعم" للمتابعة كما هو موضح أدناه.
  2. لاستعادة جميع أرقام المورد، نحتاج إلى كتابة استعلام XPath وسنضعه داخل < رقم المورد > و العلامات.
  3. انقر فوق "تحديد من الحالي" والذي سيتم تنفيذه من الاستجابة الحالية.
  4. عند النقر على "تحديد من الحالي"، يتم سرد جميع أرقام الموردين.
  5. انقر فوق "حفظ".

قم بتعريف مساحة الاسم من نافذة تأكيد المخطط المنبثقة

ملاحظة: عند الضغط على زر "إعلان"، قد تحصل على نتائج مختلفة URL's كإعلان لمساحة الاسم، ومع ذلك، فإن مساحة اسم موقع خدمة الويب الفعلية هي ما سيتم اعتباره للبرمجة.

يبدو تعبير XQuery النهائي، مع تعريفات مساحة الاسم الخاصة به، على النحو التالي.

// Namespace declaration
declare namespace soap='http://schemas.xmlsoap.org/soap/envelope/';
declare namespace ns1='http://www.webservicex.net/';
declare namespace x = '';

// Placing the result in Myresult Tags

{
// Iterating through all the supplier number
for $x in //ns1:GetSupplierByCityResponse/ns1:SupplierDataLists/ns1:SupplierDatas/ns1:SupplierData

//Return all the Supplier number within ‘SupplierNumber’ Tags.
return {data($x/ns1:SupplierNumber)}
}

نافذة تعبير XQuery التي تعرض جميع أرقام الموردين

الخطوة 17: يتم تنفيذ تأكيد XQuery وعرض النتيجة النهائية في لوحة "التأكيد" كما هو موضح أدناه. لقد أضفنا بنجاح تأكيد XQuery الذي استخدمناه للتحقق من صحة جميع معلومات رقم المورد. ستتم مقارنة هذه المعلومات بالبيانات الفعلية في كل مرة يتم فيها إرسال الطلب إلى خادم الويب.

ملاحظة: لن يتم عرض القيم الفعلية. إذا كانت جميع القيم الفعلية مماثلة للقيم المتوقعة، فسيتم عرض VALID وإلا فسيتم عرض "Failed".

لوحة التأكيدات التي تعرض نتيجة تأكيد XQuery

متى يجب استخدام التأكيد المدمج؟

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

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

خيارات التأكيدات

يمكن التحكم بشكل أفضل في التأكيدات التي تم إنشاؤها بمساعدة لوحة التحكم الموضحة أدناه.

لوحة تحكم أدوات التأكيدات في SoapUI

تسمح التأكيدات التي تم إنشاؤها للمختبرين بتكوين الأشياء التالية من مجموعة أدوات التأكيدات.

خيار الوصف
انقل رمز التأكيد لأعلى التأكيد المحدد يتحرك لأعلى الترتيب.
أيقونة تحريك التأكيد لأسفل ينتقل التأكيد المحدد إلى أسفل الترتيب.
إزالة رمز التأكيد إزالة التأكيد المحدد
تكوين أو تعديل رمز التأكيد إعادة تكوين/تحرير التأكيد المحدد.

فيما يلي الميزات المتوفرة حصريًا في النسخة الاحترافية من SoapUIيتم شحنها الآن على النحو التالي: ReadyAPIكما تساعدنا النسخة الاحترافية على تجميع التأكيدات بحيث يمكننا إضافة طبقة أخرى من التحقق إلى التأكيدات التي تم إنشاؤها.

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

قائمة كاملة بالطرق المتاحة في أنواع التأكيد المختلفة

يجمع الجدول أدناه كل التأكيدات التي تمت مناقشتها أعلاه، مصنفة حسب الفئة التي تظهر تحتها في مربع حوار إضافة التأكيد.

آلية التأكيد الوصف
محتوى العقار
يحتوي يبحث عن وجود السلسلة المحددة. كما أنه يدعم التعبير العادي.
لا يحتوي على يبحث عن عدم وجود السلسلة المحددة. كما أنه يدعم التعبير العادي.
مباراة XPath يستخدم تعبير XPath لتحديد العقدة الهدف وقيمها.
مطابقة كسكيوري يستخدم تعبير XQuery لتحديد المحتوى من الخاصية المستهدفة.
الامتثال، الوضع، المعايير
HTTP تحميل كافة الموارد التحقق من صحة مستند HTML بعد تنزيله ويتوافق مع أي خاصية تحتوي على HTML.
حالة HTTP غير صالحة Codes التحقق مما إذا كانت استجابة HTML تحتوي على رمز حالة غير موجود في قائمة الرموز المحددة.
ليس خطأ الصابون التحقق مما إذا كانت الرسالة المستلمة الأخيرة ليست خطأ SOAP. من الواضح جدًا أنه ينطبق فقط على خطوات اختبار SOAP.
الامتثال للمخطط التحقق مما إذا كانت الرسالة المستلمة الأخيرة متوافقة مع تعريف مخطط المخطط القياسي WSDL أو WADL. يحمل جيدًا خطوات اختبار الصابون والراحة.
خطأ الصابون التحقق مما إذا كانت آخر رسالة تم استلامها هي خطأ SOAP. إنه عكس تأكيدات الخطأ "NOT SOAP".
استجابة الصابون التحقق مما إذا كانت الاستجابة الأخيرة المستلمة هي استجابة SOAP صالحة وتتوافق مع خطوات طلب اختبار SOAP فقط.
حالة HTTP صالحة Codes يتحقق مما إذا كانت استجابة HTML تحتوي على رمز حالة موجود في قائمة الرموز المحددة. وهو عكس "حالة HTTP غير صالحة". Codeتأكيد s.
طلب معالجة WS التحقق مما إذا كان آخر طلب تم استلامه يحتوي على رؤوس عناوين WS المناسبة.
استجابة معالجة WS التحقق مما إذا كانت آخر استجابة تم تلقيها تحتوي على رؤوس عناوين WS المناسبة.
حالة أمان WS يتم التحقق من صحة ما إذا كانت آخر رسالة تم تلقيها تحتوي على رؤوس WS-Security صالحة وتظل صالحة فقط لطلبات SOAP.
سيناريو
تأكيد البرنامج النصي يسمح للمستخدمين بتنفيذ برنامج نصي مخصص لإجراء عمليات التحقق من الصحة التي يحددها المستخدم.
جيش تحرير السودان
الاستجابة لاتفاقية مستوى الخدمة يتم التحقق من صحة ما إذا كان وقت الاستجابة لآخر استجابة تم استلامها ضمن الحد المحدد.
JMS
حالة JMS التحقق من تنفيذ طلب JMS لخطوة الاختبار بنجاح ويظل صالحًا لخطوات الاختبار مع نقطة نهاية JMS.
مهلة JMS التحقق مما إذا كانت استجابة JMS لخطوة الاختبار لم تستغرق وقتًا أطول من المدة المحددة.
الأمن والحماية
التعرض للمعلومات الحساسة التحقق مما إذا كانت رسالة الرد لا تكشف عن معلومات حساسة حول النظام المستهدف. يمكننا استخدام هذا التأكيد لخطوات اختبار REST وSOAP وHTTP.

قم بتنزيل مشروع SOAPUI الذي يحتوي على التأكيدات المذكورة أعلاه

الأخطاء الشائعة واستكشاف الأخطاء وإصلاحها

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

  • استخدم مساحة الاسم الصحيحة. يجب أن تكون مساحة الاسم هي URL مكان وجود خدمة الويب.
  • إذا حدث خطأ أثناء التطويرping في حالة تأكيد البرمجة النصية، استخدم 'log.info' لطباعة محتويات المتغيرات.
  • إذا لم تحصل على النتيجة المطلوبة، فتأكد من تمرير إدخال صالح في الطلب.

على سبيل المثال، في محول العملات، إذا أدخلت القيمة 'x' في 'intA' وهي ليست عددًا صحيحًا، فسيظهر رمز خطأ 'SOAP-Client'، مما يعني أن المشكلة تكمن في المعامل المُمرر من جانب العميل. وسيتم عرض الطلب الذي يحمل القيمة غير الصالحة أولًا.

SoapUI طلب تمرير قيمة غير صحيحة غير صالحة لـ intA

تُعيد الاستجابة رمز الخطأ بدلاً من النتيجة، كما هو موضح أدناه.

رمز الخطأ الذي تم إرجاعه بواسطة عميل SOAP SoapUI محرر الردود

تأكد من استخدام الصيغة الصحيحة عند استخدام تأكيد XPath وXQuery. لا تستخدم النقطة (.) بدلاً من النقطتين (:) عند استخدام التأكيد المذكور أعلاه. الصيغة الصحيحة هي //namespace:Tagname وليست //namespace.tagname. قد يؤدي استخدام هذه الصيغة الخاطئة إلى ظهور رسالة "لا يوجد تطابق في الاستجابة الحالية" حتى لو كان اسم الوسم صحيحًا.

خطأ "لا يوجد تطابق في الاستجابة الحالية" ناتج عن بناء جملة XPath غير صحيح

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

أي رقم. SoapUI يطبق كل تأكيد مرفق بخطوة اختبار أخذ العينات بعد تنفيذها، ويتم وضع علامة "فشل" على الخطوة في عرض حالة الاختبار إذا فشل أي من هذه التأكيدات.

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

المصدر المفتوح SoapUI يشمل ذلك محتوى الملكية، والامتثال، والبرمجة النصية، واتفاقية مستوى الخدمة، ونظام إدارة الفيديو، والأمان. ReadyAPI يضيف المجموعةping، الاستنساخ، وفحوصات JDBC، وتمكين أو تعطيل التحكم.

تقوم نماذج الذكاء الاصطناعي بقراءة استجابة نموذجية واقتراح تعبيرات XPath أو XQuery، واقتراح قيم حدودية، ووضع علامات على الحقول التي تتغير في كل تشغيل - مما يقلل بشكل كبير من العمل اليدوي المتعلق بمساحة الاسم والتعبير.

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

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

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

يحتوي، لا يحتوي، مطابقة XPath، مطابقة XQuery، اتفاقية مستوى الخدمة للاستجابة، البرنامج النصي، رموز حالة HTTP الصالحة وغير الصالحة، كشف المعلومات الحساسة، والامتثال للمخطط مقابل WADL أو المخطط المستنتج.

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