التأكيدات في SoapUI: البرامج النصية، XQuery، البرنامج التعليمي لأنواع XPath
ما هو التأكيد؟
التأكيد يعني فعل تأكيد أو ذكر شيء ما. ويمكن أيضًا تفسيرها على أنها نقطة تفتيش أو نقطة تحقق.
بمجرد إرسال الطلب إلى خادم الويب، يتم تلقي الرد. نحتاج إلى التحقق من صحة ما إذا كانت الاستجابة تحتوي على البيانات التي نتوقعها. من أجل التحقق من صحة الاستجابة، نحن بحاجة إلى استخدام التأكيدات.
أنواع التوكيد
هناك طرق مختلفة لتأكيد الرد. ومع ذلك، سنركز على أنواع تأكيدات SoapUI شائعة الاستخدام أثناء التحقق من صحة الاستجابة. فيما يلي تلك المتوفرة في الإصدار المفتوح المصدر من SoapUI.
- محتوى الملكية
- معيار حالة الامتثال
- سيناريو
- جيش تحرير السودان
- JMS
- حماية
بصرف النظر عن تلك المذكورة أعلاه، يحتوي الإصدار PRO أيضًا على تأكيد JDBC يحمل في ثناياه عوامل يمكننا من خلاله التأكد مما إذا كانت خدمة الويب قد قامت بتحديث قاعدة البيانات بشكل صحيح.
يحتوي على التأكيد
يبحث عن وجود السلسلة المحددة. كما أنه يدعم التعبير العادي.
سنستمر بنفس المثال من البرنامج التعليمي السابق مع طلب WSDL كـ http://www.dneonline.com/calculator.asmx.
خطوة 1 افتراضيا لا توجد تأكيدات.
- يتم عرض عدد التأكيدات في علامة التبويب التأكيدات.
- لإضافة تأكيد جديد، انقر فوق الزر "إضافة تأكيد جديد".
خطوة 2 الآن،
- حدد فئة التأكيد.
- حدد نوع التأكيد.
- انقر فوق "إضافة"
خطوة 3 دعونا نتحقق من وجود السلسلة "46" في الرد. انقر فوق موافق'
ملاحظة: يمكننا أيضًا تجاهل حالة الأحرف وإضافة تعبير عادي.
خطوة 4 عند إضافته، يتم تنفيذ التأكيد فورًا ويظهر ما إذا كان صالحًا أم غير صالح.
خطوة 5 لنفترض الآن أننا قمنا بتغيير محتوى "يحتوي على تأكيد في SoapUI" إلى "47" ونرى ما سيحدث.
خطوة 6 يتم تنفيذ التأكيد ويتم طرح النتيجة للمستخدم. نظرًا لعدم وجود السلسلة "47" ضمن الاستجابة، فقد فشل التأكيد.
لا يحتوي على التأكيد
يبحث عن عدم وجود السلسلة المحددة. كما أنه يدعم التعبير العادي.
خطوة 1 الآن بعد النقر على زر "إضافة تأكيدات جديدة"،
- حدد فئة التأكيد.
- حدد نوع التأكيد - في هذه الحالة "لا يحتوي"
- انقر فوق "إضافة"
خطوة 2 دعونا نتحقق من وجود السلسلة "intA" في الاستجابة. أدخل السلسلة "FromCurrency" وانقر فوق "موافق"
خطوة 3 بمجرد إضافة تأكيد، يتم تنفيذه وعرض النتيجة. حتى الآن أضفنا تأكيدين، وبالتالي يتم تنفيذ كلا التأكيدين وعرض النتيجة.
خطوة 4 الآن دعونا نغير محتويات "لا يحتوي على التأكيد" ونرى ما سيحدث. سوف نتحقق من عدم وجود السلسلة "AddResult".
الخطوة 5: السلسلة "AddResult" موجودة بالفعل في الاستجابة، وبالتالي سيفشل التأكيد "NOT يحتوي على" كما هو موضح أدناه.
تأكيد مطابقة XPath
استخدام كسباث التعبير لتحديد العقدة الهدف وقيمها. XPath، هي لغة استعلام XML لتحديد العقد من مستند XML.
خطوة 1 الآن بعد النقر على زر "إضافة تأكيدات جديدة"،
- حدد فئة التأكيد.
- حدد نوع التأكيد - في هذه الحالة "مطابقة XPath"
- انقر فوق "إضافة"
خطوة 2 يتم فتح نافذة إضافة XPath.
قبل إضافة SoapUI XPath، نحتاج إلى الإعلان عن مساحة الاسم. مساحة اسم XML هي مجموعة من الأسماء، التي تم تحديدها بواسطة مرجع معرف الموارد الموحد (URI)، والتي يتم استخدامها في مستندات XML كأسماء العناصر والسمات. يتم استخدام نفس الشيء في SOAP UI XPath Assertion.
للإعلان عن مساحة اسم XML، نحتاج فقط إلى النقر فوق الزر "إعلان" الذي سيؤدي المهمة نيابةً عنا، وإلا يمكننا أيضًا إعلان مساحة الاسم يدويًا بأنفسنا.
بعد الإعلان عن مساحة الاسم، نحتاج إلى إحالة XPath باستخدام مساحة الاسم التي تم إنشاؤها.
عند النقر فوق الزر "إعلان"، ستظهر مساحتان للاسم حيث أن لدينا عنوانين URI. أحدهما هو عنوان URL للمخطط والآخر يتوافق مع عنوان URL الفعلي لخدمة الويب. نحن بحاجة إلى استخدام مساحة الاسم الفعلية حيث توجد خدمة الويب وليس مساحة اسم المخطط أثناء الرجوع إلى XPath.
إعلان مساحة الاسم Soap='http://schemas.xmlsoap.org/soap/envelope/';
أعلن مساحة الاسم ns1='http://tempuri.org/';
خطوة 3 نحن الآن بحاجة إلى إدخال XPath لعقدة XML التي نحتاج إلى التحقق من صحتها.
//ns1:AddResult يعطينا قيمة العقدة المحصورة بينهما & و ns1 يتوافق مع مساحة الاسم المعلنة والتي تشير إلى "http://tempuri.org/"
بعد إدخال ملف XML، نحتاج إلى النقر فوق "تحديد من الحالي" بحيث يتم التقاط القيمة من الاستجابة الحالية للمقارنة من الآن فصاعدا.
خطوة 4 حتى الآن،
- بعد الإعلان عن مساحات الأسماء، قمنا بإدخال XPath لعقدة XML التي نحتاج إلى التحقق من صحتها.
- نحتاج إلى النقر فوق "تحديد من الحالي" لجعل القيمة الحالية هي القيمة المتوقعة.
- يتم عرض القيمة الحالية للمستخدم والتي يمكننا تعديلها إذا لزم الأمر.
- انقر فوق "حفظ".
خطوة 5 سيتم عرض التأكيد المضاف في SoapUI كما هو موضح أدناه.
تأكيدات البرمجة النصية
يعد أسلوب التأكيد هذا هو الأكثر استخدامًا على نطاق واسع لأنه من الصعب للغاية إدارة مئات التأكيدات والحفاظ عليها.
يستخدم SOAP UI إما Groovy البرمجة النصية أو Javaسيناريو لتأكيدات النصوص البرمجية. يتم اعتماد تقنية النصوص البرمجية لتطوير إطار عمل لاختبار SOAP. يتم استخدام تأكيدات النصوص البرمجية في ظل الظروف التالية.
يتيح البرمجة النصية للمستخدم إجراء بعض العمليات قبل وبعد تنفيذ TestCase باستخدام طريقتي الإعداد والإزالة على التوالي. الإعداد هو إجراء يتم تنفيذه قبل تنفيذ طريقة معينة (على سبيل المثال - إنشاء الكائن والتهيئة) بينما الإزالة هي إجراء يتم تنفيذه بعد تنفيذ الطريقة (على سبيل المثال: تدمير الكائنات والتنظيف). هذه الميزة غير متوفرة في أنواع التأكيد الأخرى ويمكن القيام بها فقط من خلال الترميز.
فهو يسمح للمستخدمين بإجراء فتح/إغلاق المشروع، من أجل تهيئة أو تنظيف الإعدادات المتعلقة بالمشروع وكذلك العمل مع المتغيرات البيئية وهو أمر مفيد للغاية أثناء البرمجة النصية.
فهو يساعدنا في تأكيد محتوى الاستجابة الديناميكي.
يتم استخدام تأكيدات البرمجة النصية لإنشاء تأكيدات محددة من قبل المستخدم والتي لم يتم تعريفها مسبقًا بواسطة SOAP UI.
لتوضيح تأكيد البرنامج النصي في SoapUI، سنستخدم الآلة الحاسبة WSDL، وهي حالة الاختبار "Add" التي قمنا بإنشائها مسبقًا.
خطوة 1 خطوات إضافة برنامج نصي رائع هي نفس خطوات التأكيدات الأخرى باستثناء أن التأكيد ليس محددًا مسبقًا. وبدلاً من ذلك، فهو عبارة عن تأكيد محدد من قبل المستخدم يوفر مرونة أكبر من تلك المضمنة.
حدد خطوة الاختبار التي سيتم إضافة التأكيد عليها.
انقر فوق الزر "إضافة تأكيد" كما هو موضح أدناه.
خطوة 2 الآن حدد فئة التأكيد.
- في هذه الحالة هو البرنامج النصي.
- حدد تأكيد البرنامج النصي SoapUI ولا توجد أنواع فرعية مرتبطة به.
- انقر فوق "إضافة".
خطوة 3 يتم فتح مربع حوار البرمجة النصية حيث سيتمكن المستخدم من كتابة برنامج نصي محدد من قبل المستخدم للتحقق من صحة استجابة XML.
خطوة 4 الآن دعونا نكتب نصًا رائعًا للتحقق من صحة معدل التحويل. تم إرفاق البرنامج النصي أدناه مع التعليقات المضمنة. من المستحسن أن يكون لديك المعرفة 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"}
- انقر فوق الزر "تنفيذ" لبدء التنفيذ.
- يتم عرض إخراج البرنامج النصي في جزء الإخراج. لقد قام بطباعة قيمة التحويل وكذلك النتيجة النهائية (نجاح أو فشل)
- يتم عرض المعلومات التي تفيد بأن "تأكيد البرنامج النصي قد تم اجتيازه". انقر فوق "موافق".
ملاحظة: سيتم دائمًا عرض نافذة المعلومات النهائية المنبثقة مع الرسالة "تم تمرير تأكيد البرنامج النصي" طالما أن البرنامج النصي صحيح من الناحية التركيبية. ليس له أي علاقة بتأكيدك في النص.
انقر OK
خطوة 5 الآن تعرض علامة التبويب التأكيدات جميع التأكيدات التي أضفناها لمجموعة الاختبار هذه مع الحالة مقابل كل واحدة منها.
خطوة 6
- حدد مجموعة الاختبار من شجرة المستكشف
- انقر فوق زر "تشغيل".
- سيتم عرض النتائج لمجموعة الاختبار بأكملها.
تأكيد مطابقة Xquery
ويستخدم تعبير Xquery لتحديد المحتوى من الخاصية الهدف. نحن بحاجة إلى استجابة XML أكبر بكثير من أجل فهم تأكيد XQuery بشكل أفضل في SoapUI. دعونا نقوم باستيراد WSDL آخر كما هو موضح أدناه: http://www.webservicex.net/medicareSupplier.asmx?WSDL
خطوة 1 قم بالنقر بزر الماوس الأيمن على المشروع الحالي وحدد "إضافة WSDL".
خطوة 2 قم بالنقر بزر الماوس الأيمن على المشروع الحالي وحدد "إضافة WSDL". اترك الخيارات الأخرى كإعداد افتراضي وانقر على زر "موافق".
خطوة 3 يتم إدراج كافة العمليات كما هو موضح أدناه.
خطوة 4 الآن دعونا نضيف أ حالة الاختبار ضمن نفس مجموعة الاختبار التي أنشأناها من أجلها الاختبار محول العملات.
خطوة 5 أدخل اسم حالة الاختبار وانقر على زر "موافق".
خطوة 6 يتم إنشاء حالة الاختبار كما هو موضح أدناه.
خطوة 7 أضف
خطوة اختبار جديدة من نوع "طلب اختبار الصابون" كما هو موضح أدناه.
خطوة 8 أدخل اسم خطوة الاختبار. دعنا نقول - المورد حسب_المدينة والذي سيكون ذا معنى أكبر، انقر فوق "موافق".
خطوة 9 إختار ال Operaما نريد التحقق منه هو "MedicareSupplierSoap -> GetSupplierByCity". انقر فوق "موافق".
خطوة 10 أدخل اسم حالة الاختبار وانقر فوق "موافق".
خطوة 11 سيتم عرض مخطط طلب XML كما هو موضح أدناه.
خطوة 12 الآن دعنا نعثر على كافة المعلومات الخاصة بالموردين لمدينة "نيويورك".
للقيام بذلك، أضف الأسطر التالية إلى الكود الخاص بك.
<GetSupplierByCity xmlns="http://www.webservicex.net/"> <City>New York</City> </GetSupplierByCity>
WSDL في عنوان URL أدناه – http://www.webservicex.net/medicareSupplier.asmx?op=GetSupplierByCity
خطوة 13 عند تنفيذ الاختبار، نتلقى الاستجابة أدناه
خطوة 14 لنفترض أننا بحاجة إلى التحقق من صحة رقم المورد بالكامل. لا يمكننا استخدام تأكيد XPath لأننا نحتاج إلى مئات من تأكيدات XPath. وبالتالي فإن استخدام XQuery أمر لا مفر منه في هذه الحالة.
يساعدنا تأكيد XQuery في التحقق من صحة مجموعة من استجابات XML المتكررة بطبيعتها.
خطوة 15 الآن انقر على "إضافة تأكيد"،
- حدد "فئة التأكيد" - محتوى الخاصية في هذه الحالة.
- حدد نوع التأكيد كـ "تأكيد XQuery"
- انقر فوق "إضافة".
خطوة 16 على غرار تأكيد XPath، نحتاج إلى الإعلان عن مساحة الاسم.
-
انقر فوق الزر "إعلان" للسماح تلقائيًا لواجهة مستخدم SOAP بإعلان مساحة الاسم. عند النقر فوق الزر "إعلان"، ستظهر نافذة منبثقة تحتوي على الرسالة "إعلان مساحة الاسم من المخطط بدلاً من ذلك" للمستخدم. انقر فوق "نعم" للمتابعة كما هو موضح أدناه.
ملحوظة: عند الضغط على زر "الإعلان"، قد ينتهي بك الأمر إلى عناوين URL مختلفة كإعلان لمساحة الاسم، ومع ذلك، فإن مساحة الاسم الفعلية لموقع خدمة الويب هي ما سيتم أخذه في الاعتبار عند الترميز.
- لاستعادة جميع أرقام المورد، نحتاج إلى كتابة استعلام XPath وسنضعه داخل < رقم المورد > و العلامات.
- انقر فوق "تحديد من الحالي" والذي سيتم تنفيذه من الاستجابة الحالية.
- عند النقر على "اختر من الحالي"، يتم إدراج جميع أرقام الموردين.
- انقر فوق "حفظ".
// 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)} }
خطوة 17 يتم تنفيذ تأكيد XQuery ويعرض النتيجة النهائية في لوحة "التأكيد" كما هو موضح أدناه. لقد نجحنا الآن في إضافة تأكيد Xquery والذي قمنا من خلاله بالتحقق من صحة جميع معلومات رقم المورد. سيتم مقارنة نفس الشيء مع البيانات الفعلية، في كل مرة يتم إرسال الطلب إلى خادم الويب.
ملاحظة: لن يتم عرض القيم الفعلية. إذا كانت جميع القيم الفعلية مماثلة للقيم المتوقعة، فسيتم عرض VALID وإلا فسيتم عرض "Failed".
متى يجب استخدام التأكيد المدمج؟
- عندما تكون الاستجابة قصيرة بحيث يمكن التحقق من صحتها باستخدام أحد تلك التأكيدات المضمنة.
- يمكننا أيضًا استخدام التأكيد المدمج إذا كانت الاستجابة المرسلة من خادم الويب ثابتة دائمًا بطبيعتها. إذا كانت ديناميكية، فلن نتمكن من تأكيدها باستخدام التأكيدات المضمنة.
- عندما يصبح استخدام التأكيدات المضمنة مثل تأكيدات المهلة والتأكيدات الأمنية أمرًا لا مفر منه.
- تعتبر التأكيدات المضمنة جيدة جدًا للاستخدام لمرة واحدة حيث لا يلزم تكرار الاختبارات.
خيارات التأكيدات
يمكن التحكم بشكل أفضل في التأكيدات التي تم إنشاؤها بمساعدة لوحة التحكم الموضحة أدناه.
تسمح التأكيدات التي تم إنشاؤها للمختبرين بتكوين الأشياء التالية من مجموعة أدوات التأكيدات.
خيار | الوصف |
---|---|
التأكيد المحدد يتحرك لأعلى الترتيب. | |
ينتقل التأكيد المحدد إلى أسفل الترتيب. | |
إزالة التأكيد المحدد | |
إعادة تكوين/تحرير التأكيد المحدد. |
- فيما يلي الميزات المتوفرة حصريًا في الإصدار PRO من SOAP UI. يساعدنا إصدار PRO أيضًا في تجميع التأكيدات حتى نتمكن من إضافة طبقة أخرى من التحقق من الصحة إلى التأكيدات التي تم إنشاؤها.
- الإصدار المحترف يسمح أيضًا استنساخ التأكيدات: يتيح هذا الخيار للمختبرين السماح بنسخ التأكيد إلى خطوة اختبار مختلفة في نفس المشروع أو في مشروع مختلف.
- تعطيل/تمكين التأكيدات: يسمح هذا الخيار بتعطيل أو تمكين أي تأكيد مجمع أو غير مجمع. إذا تم تعطيل تأكيد، فإنه يظهر باللون الرمادي وعندما يتم تنفيذ حالة اختبار، فلن يتم تنفيذ التأكيدات المعطلة.
- فك تجميع التأكيدات: يمكن فك تجميع أي تأكيدات مجمعة إذا قرر المختبرون القيام بذلك.
AND: يتم تقييم جميع التأكيدات على أنها تأكيد صالح مما سيؤدي إلى شرط المجموعة الذي تم تمريره. أو: يجب أن يكون أحد التأكيدات على الأقل داخل المجموعة صالحًا لتأكيد شرط المجموعة الذي تم تمريره.
قائمة كاملة بالطرق المتاحة في أنواع التأكيد المختلفة
آلية التأكيد |
الوصف |
محتوى العقار | |
يحتوي | يبحث عن وجود السلسلة المحددة. كما أنه يدعم التعبير العادي. |
لا يحتوي على | يبحث عن عدم وجود السلسلة المحددة. كما أنه يدعم التعبير العادي. |
مباراة XPath | يستخدم تعبير XPath لتحديد العقدة الهدف وقيمها. |
مطابقة كسكيوري | يستخدم تعبير Xquery لتحديد المحتوى من الخاصية الهدف. |
الامتثال والحالة والمعايير | |
HTTP تحميل كافة الموارد | التحقق من صحة مستند HTML بعد تنزيله ويتوافق مع أي خاصية تحتوي على HTML. |
رموز حالة HTTP غير صالحة | التحقق مما إذا كانت استجابة HTML تحتوي على رمز حالة غير موجود في قائمة الرموز المحددة. |
ليس خطأ الصابون | التحقق مما إذا كانت الرسالة المستلمة الأخيرة ليست خطأ SOAP. من الواضح جدًا أنه ينطبق فقط على خطوات اختبار SOAP. |
الامتثال للمخطط | التحقق مما إذا كانت الرسالة المستلمة الأخيرة متوافقة مع تعريف مخطط المخطط القياسي WSDL أو WADL. يحمل جيدًا خطوات اختبار الصابون والراحة. |
خطأ الصابون | التحقق مما إذا كانت آخر رسالة تم استلامها هي خطأ SOAP. إنه عكس تأكيدات الخطأ "NOT SOAP". |
استجابة الصابون | التحقق مما إذا كانت الاستجابة الأخيرة المستلمة هي استجابة SOAP صالحة وتتوافق مع خطوات طلب اختبار SOAP فقط. |
رموز حالة HTTP صالحة | التحقق مما إذا كانت استجابة HTML تحتوي على رمز الحالة الموجود في قائمة الرموز المحددة. إنه عكس تأكيد "رموز حالة HTTP غير الصالحة". |
طلب معالجة WS | التحقق مما إذا كان آخر طلب تم استلامه يحتوي على رؤوس عناوين WS المناسبة. |
استجابة معالجة WS | التحقق مما إذا كانت آخر استجابة تم تلقيها تحتوي على رؤوس عناوين WS المناسبة. |
حالة أمان WS | يتم التحقق من صحة ما إذا كانت آخر رسالة تم تلقيها تحتوي على رؤوس WS-Security صالحة وتظل صالحة فقط لطلبات SOAP. |
سيناريو | |
تأكيد البرنامج النصي | يسمح للمستخدمين بتنفيذ برنامج نصي مخصص لإجراء عمليات التحقق من الصحة التي يحددها المستخدم. |
جيش تحرير السودان | |
الاستجابة لاتفاقية مستوى الخدمة | يتم التحقق من صحة ما إذا كان وقت الاستجابة لآخر استجابة تم استلامها ضمن الحد المحدد. |
JMS | |
حالة JMS | التحقق من تنفيذ طلب JMS لخطوة الاختبار بنجاح ويظل صالحًا لخطوات الاختبار مع نقطة نهاية JMS. |
مهلة JMS | التحقق مما إذا كانت استجابة JMS لخطوة الاختبار لم تستغرق وقتًا أطول من المدة المحددة. |
حماية | |
التعرض للمعلومات الحساسة | التحقق مما إذا كانت رسالة الرد لا تكشف عن معلومات حساسة حول النظام المستهدف. يمكننا استخدام هذا التأكيد لخطوات اختبار REST وSOAP وHTTP. |
قم بتنزيل مشروع SOAPUI الذي يحتوي على التأكيدات المذكورة أعلاه
الأخطاء الشائعة واستكشاف الأخطاء وإصلاحها
استخدم مساحة الاسم الصحيحة. يجب أن تكون مساحة الاسم هي عنوان URL الذي توجد به خدمة الويب.
إذا حدث خطأ أثناء تطوير تأكيد البرمجة النصية، فاستخدم "log.info" لطباعة محتويات المتغيرات
إذا لم تحصل على النتيجة المطلوبة، فتأكد من تمرير إدخال صالح في الطلب.
على سبيل المثال، في محول العملات، إذا قمت بإدخال "intA" كـ "x" وهو ليس عددًا صحيحًا، فسيؤدي الإخراج إلى ظهور رمز خطأ كـ "SOAP-Client" مما يعني أن المشكلة تتعلق بالمعلمة التي يتم تمريرها من جانب العميل.
تأكد من استخدام بناء الجملة الصحيح أثناء استخدام تأكيد XPATH وXQuery. يجب ألا تستخدم النقطة (.) بدلاً من النقطتين (:) أثناء استخدام التأكيد أعلاه. بناء الجملة هو //namespace:Tagname وليس //namespace.tagname. ومن خلال القيام بذلك، قد ينتهي بك الأمر إلى الحصول على رسالة مفادها "لا يوجد تطابق في الاستجابة الحالية" على الرغم من أن اسم العلامة صحيح.