روبوت يختبر SAP ERP

نحن في Alfastrakhovanie نستخدم SAP ERP كنظام لتسوية خسائر العمليات. وقد حدث أننا قمنا بوضع اللمسات الأخيرة عليه ، وهذا يؤدي حتما إلى أخطاء في الكود. إذا وصلت الأخطاء إلى نظام منتج ، فهذا أمر سيء. يجب تجنب ذلك ، طريقة واحدة هي اختبار الانحدار. سوف أتحدث في هذه المقالة عن كيفية إجراء "الانحدار" لـ SAP بالضبط ، لأننا نفعل ذلك (يا!) غير قياسي.


بدأ كل شيء قبل بضع سنوات. في تلك السنوات ، استخدمنا بالفعل اختبار الانحدار بشكل نشط ، لكننا لم نتمكن من القيام بذلك في SAP - الأدوات المستخدمة لا تعمل مع SAP ، ولم يرغب فريق الاختبار في دراسة الأدوات "شحذت" لـ SAP. لا أتذكر بالضبط السبب ، لكنني كنت أتخذه كتحدي (كان الأمر كذلك حتى قبل أن أتحول إلى هندسة التاريخ) وقررت "دراسة" المشكلة.


نتائج الدراسة (وكذلك "القيام") - في هذه المقالة (أدناه) ، سأقول هذا بإيجاز: نحن نختبر تلقائيًا SAP (وبيئته المباشرة) ، ونقوم بذلك بشكل فعال (بكل معنى الكلمة) ، لم ننفق روبل واحد على التراخيص و التدريب ، نهجنا بسيط وقابل للتكرار بالكامل. ونحن لا نستخدم أي أدوات SAP للاختبار التلقائي لـ SAP (باستثناء في المكان الذي قمنا فيه بتضمين نظام النقل الخاص به).


ضربات كبيرة


هناك خطر من الدخول في التفاصيل وفقدان القراء ، وسأحاول عدم القيام بذلك (كمؤلف ، أعرف كل التفاصيل).


بدأ كل شيء بالدراسة والتواصل مع SAP وشركائنا والسيد Google.


كانت نتيجة هذا الاتصال كما يلي:


  • لدى SAP أدوات لاختبار التشغيل الآلي (نظرنا إلى eCATT ، عن قرب SAP CBTA)
  • أنها تتطلب غمر كبير (وخاصة SAP CBTA)
  • قد تكون القيود ضرورية ، إذا لزم الأمر ، تجاوز حدود SAP (فهو ليس في "فراغ" معنا)
  • هناك منتجات لأطراف ثالثة (على سبيل المثال ، HP) ، ولكن ليس لدينا كفاءات لها ، تمامًا كما اشترينا التراخيص
  • هناك طريقة "لإدارة" SAP من الخارج (أخبرتني شركة Convista بهذه الفكرة ، شكرًا جزيلاً على ذلك)

نظرًا لأنني شخصياً لم يكن لدي معرفة بـ SAP ، فقد قررت محاولة الحفر في الاتجاه الأخير - إدارة SAP ليست من SAP. قدم السيد غوغل بسرعة وثيقة "SAP GUI Scripting API for Windows and Java Platforms" ، والتي كانت بمثابة بداية رائعة لهذه المبادرة. أظهر اختبار سريع لبيثون المفضل أنه يعمل.


بعد ذلك ، كانت مسألة صغيرة - العثور على إطار مناسب لأتمتة الاختبار. منذ أن كان الثعبان لغتي المفضلة ، سرعان ما أخذ إطار عمل الروبوت بعين الاعتبار. وفي الواقع ، بعد أن حصل على القائمة وحوكم ، بقي فقط على القائمة. رشوة من حقيقة أنه "يعمل" على الفور (التطلع إلى الأمام - وما زال يعمل ، أنا لست نادما على دقيقة واحدة عن خياري).


أظهر طيار صغير أن SAP يتم التحكم فيه تمامًا بواسطة روبوت (سأطلق عليه إطار عمل Robot Framework بتلك الكلمة الروسية): بسرعة وبشكل متزامن ويمكن التنبؤ به وموثوق به. في الوقت نفسه - أؤكد - نستخدم طريقة توثيق SAP للتفاعل مع SAP GUI (وليس نوعًا من "العكازات").


هندسة معمارية


(نعم ، اسمحوا لي أن استخدم هذه الكلمة هنا)


صورة


كيف يعمل:


  • يتم تنفيذ البرنامج النصي على الخادم (يتم استخدام كلمة "server" هنا بمعنى أن هذا الكمبيوتر يخدم طلبات الاختبار الخاصة بنا. وفي هذه الحالة بالذات ، من الأصح استخدام كلمة "client" لأنه النص الذي يتحكم في عملية الاختبار)
  • من خلال الآلية القياسية لجهاز التحكم عن بعد الروبوت ، يتفاعل البرنامج النصي مع مكون خادم الروبوت الذي يعمل على SUT (نظام قيد الاختبار)
  • يستدعي مكون الخادم هذا أساليب مكتبة إدارة SAP
  • يعالج SAP GUI هذه الطلبات (بشكل متزامن ، هذا مهم)
  • يتم إرجاع نتائج تنفيذ الاستعلامات أو مجرد "دقات" إلى البرنامج النصي على "الخادم" ، حيث يتم استخدامها في عملية الاختبار

فنيا


  • "الخادم" هو جهاز افتراضي تحت أوبونتو
  • SUT - محطة العمل حيث تم تثبيت محطة عمل SAP وتكوينها (في حالتنا ، فهي عبارة عن كمبيوتر يعمل بنظام Windows أو جهاز ظاهري)
  • تتم كتابة مكتبة إدارة SAP في بيثون (يوجد عدد قليل - بضع مئات من الأسطر)
  • "script" هو "برنامج" بلغة يفهمها Robot Framework
  • يشير الروبوت (على هذا النحو) إلى سطر أوامر ، نظرًا لأن مطوري ABAP لا يعتادون عليه ، لقد صنعت واجهة WEB توفر ، على وجه الخصوص ، العمل الجماعي (حوله لاحقًا).

ما هو رائع


في الواقع ، ما الذي حصلنا عليه ، باستثناء نقص عبء الترخيص؟


الكثير من الأشياء ، إذا كان بإيجاز حول الشيء الرئيسي:


اللغة الروسية


يبدو النص مثل هذا:


صورة


في بداية الرحلة (ربما خلال الطيار) ، فكرت - وأننا سنكسر اللسان ونتوصل إلى بعض الكلمات غير المفهومة حتى بيننا؟ يشير الروبوت إلى إنشاء كلماتك الرئيسية (نأسف للمصطلحات - هذا ما يسميه). فلماذا لا نأتي معهم على الفور باللغة الروسية؟ سأل في مجتمع الاختبار (في مكان ما في أحشاء الإنترنت) - لقد "أزعجني": إنه أمر خطير ، لماذا ، من قال ذلك ، إلخ. لقد ذهبت في طريقي - لدينا كل شيء باللغة الروسية (تبقى المتغيرات والكلمات فقط هياكل التحكم في الروبوت ، ولكن يجب أن تكون مخفية داخل الكلمات الرئيسية - إذا رأيت الإنجليزية ، ثم حان الوقت لإعادة رد الفعل).


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


صورة


السيطرة الكاملة والشاملة والتمدد


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


حول القابلية للتوسعة - يمكن تطوير الوظيفة في أي اتجاه ، والتي استخدمناها بنشاط:


  • تمكنت من التوصل إلى "لغتي" الخاصة في البرامج النصية للاختبار ، وهي مفهومة للأعمال التجارية
  • كان من الممكن التحقق تلقائيًا مما إذا كانت الحقول الموجودة في الواجهة قد تم ملؤها بشكل صحيح في نهاية الاختبار (لهذا ، على وجه الخصوص ، قمنا بتقسيم متغيرات الروبوت إلى معلمات بدء التشغيل ومعلمات الواجهة ، مما جعل من الممكن تحديد أي عنصر واجهة يجب أن يكون معلمة بدء التشغيل)
  • يمكن إضافة نقاط التوقف إلى الاختبارات ؛ خلال نقاط التوقف ، انظر إلى قيم المتغيرات
  • قمنا بتطبيق آلية لإنشاء قوالب الملفات ووضعها في عملية التنفيذ - وبدون ذلك ، لم يكن اختبار مثل حيوان مثل VLP ممكنًا (وقمنا باختباره في وضع تلقائي تمامًا - من إنشاء تطبيق إلى تحليل مقتطف)

أضاف وجود واجهة الويب الخاصة بنا المزيد من خيارات التوسعة - على سبيل المثال ، يمكننا تعديل لغة الروبوت (توصلنا ، على سبيل المثال ، المشغل الشرطي الخاص بنا - لم نحب نحن ومستخدمينا من رجال الأعمال كلمة "Run if if" القياسية). أصبح هذا ممكنًا لأن الملفات التي تحتوي على شفرة مصدر اختبار يتم إنشاؤها للروبوت بواسطة تطبيق ويب.


سهولة الدخول


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


صورة


تعليمات المستخدم


التفتنا أيضًا إلى "Our William ..." - إلى الوثائق. ليس سراً على أي شخص - كقاعدة عامة ، لا توجد وثائق للنظام ، وحتى إذا كان هناك ، فإنه يصبح سريعًا جدًا. المستخدمين تمرير قواعد العمل مع نظام "كلمة الفم". إذا كان رمز الاختبار التلقائي هو وصف لكيفية استخدام النظام وفقًا للمؤلف ، فلماذا لا يتم تحويله إلى تعليمات؟


صورة


بطبيعة الحال ، يصعب رؤية التفاصيل على هذه القطعة ، من المهم أن يتم إنشاء التعليمات وتحديثها في وضع تلقائي بالكامل ، بما في ذلك لقطات الشاشة. التعليمات محدثة دائمًا (لأن الاختبارات التلقائية تعمل دائمًا). في حالة SAP ، يتم تلقي لقطات الشاشة بشكل جيد عمومًا - في SAP يمكنك دائمًا العثور على عنصر واجهة - مستطيل ستكون إحداثياته ​​ذات صلة بالمكان الحالي في رمز الاختبار ، يتم استخدام عنصر التحكم هذا (غير المرئي للعين) كمعلمة للكلمة الرئيسية "التقاط لقطة" (هذه الكلمة ، بالطبع ، لا يعمل إلا مع وضع إطلاق الاختبار المناسب - لماذا تنفق الكهرباء تمامًا مثل ذلك).


قمنا بتنسيق الإرشادات باستخدام Sphinx (أنا متأكد من أن الكثيرين تعلموا نظام الألوان) ، وبالتالي فهي متوفرة في كل من الدليل الإلكتروني والمطبوع.


قليلا عن روبوت الإطار


ومع ذلك ، لا يمكن قول أي شيء عن الروبوت - سوف يتحول بشكل غير مفهوم وسطحيا. سأحاول لفترة وجيزة.


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


  • بيئة تنفيذ البرنامج (المبرمجون - لا يتعرضوا للإهانة) بهذه اللغة
  • مكتبات غنية وظيفيًا (من العمل بالسلاسل والقوائم إلى ssh و selenium)
  • الإبلاغ (في عملية الاستخدام ، لم يكن هناك حتى فكرة كتابة أي نوع من التقارير)
  • نموذج بسيط لتكوين برنامج من الكلمات الرئيسية (غريبة بعض الشيء ، ولكن يمكنك التعود عليه) ، هناك أشياء مثل المتغيرات والمعلمات ونتائج "المكالمات" (الكلمات الرئيسية)
  • القابلية للتوسعة البسيطة والقوية - من السهل جدًا إنشاء مكتبتك الخاصة في بيثون (على سبيل المثال ، لقد عملنا بهذه الطريقة مع Excel) ، سواء المحلي (على سبيل المثال ، تم التنفيذ في نفس مكان رمز الاختبار) وجهاز التحكم عن بعد (على سبيل المثال ، الذي يتحكم في SAP GUI)

عملية إنشاء اختبار واضحة إلى حد ما


  • نقوم بتشكيل سلسلة من الإجراءات وترجمتها إلى مصطلحات الروبوت (سيكون أقل قليلاً تفاصيل حول التفاعل مع النظام قيد الاختبار)
  • تكرار تسلسل refactor في الكلمات الأساسية (الجديدة) الخاصة بهم
  • قم بإجراء الاختبار ، وانظر كيف يعمل ، وإصلاح ، وتحسين
  • يتم توفير تصحيح الأخطاء بواسطة نقاط التوقف (مع إمكانية عرض المتغيرات - يتم توفيرها بواسطة البنية ، وبشكل أكثر دقة - استخدام المكتبة عن بُعد الخاصة بالروبوت)

والنتيجة ليست حتى برنامج (انظر الأمثلة أعلاه) ، بل تسلسل رسمي من الإجراءات ، والذي ، بالمناسبة ، يصف استخدام البرنامج بالشكل الذي قصده المؤلف (انظر ATDD أعلاه).


التفاعل مع النظام تحت الاختبار


في حالتنا ، نحن نختبر مستوى واجهة المستخدم (أي أن اختباراتنا تتفاعل مع SAP على مستوى واجهة المستخدم الرسومية - إنها "تنقر" على الأزرار ، وتملأ حقول النص ، وما إلى ذلك). من المقبول عمومًا أن هذه الطريقة في كتابة الاختبارات ليست هي الأفضل. أوافق جزئيًا على ذلك ، لكنني مستعد للاستماع ومناقشة كيفية اختبار تطبيقات SAP GUI (مثل SAP FS CM).


هناك مثل هذا المعلم - روبرت مارتن (المعروف أيضًا باسم "العم بوب" - مؤلف كتاب "المبرمج النظيف" ، إذا قرأ أي شخص) ، فقد تحدثنا قليلاً عن هذا. لقد اتفقوا على أنه إذا لم يكن من الصعب جدًا القيام بذلك ، فإنه لا يتغير كثيرًا (كسر الاختبارات) ، إذن حسنًا - يمكنك أيضًا الاختبار من خلال الواجهة.


من جهتي ، أستطيع أن أقول هذا: في حالة SAP GUI ، لا توجد خيارات كثيرة لتطبيق واجهة المستخدم. إذا كنت بحاجة إلى إضافة القدرة ، على سبيل المثال ، لتتبع رمز IMEI ، يمكنك القيام بذلك بطريقة واحدة تقريبًا - عن طريق إضافة الحقل المناسب إلى إحدى الإشارات المرجعية. لذلك أعتقد أن جميع الفروق الدقيقة في هذه "الإضافة" يمكن ويجب أن يفكر بها العميل (كيف سيتم استدعاء هذا الحقل في الواجهة ، العرض ، ترتيب الاستخدام ، وما إلى ذلك). ويمكنه القيام بذلك مباشرة في برنامج نصي ، والذي سيقوم بعد ذلك باختباره تلقائيًا. إذا كنت لا تستطيع التفكير من خلال مراجعة حتى النهاية (كما يقولون - حسنًا ، يمكنك القيام بذلك ، وسنرى) ، فمن الأفضل عدم القيام بهذه المراجعة. ولتفعل ما يمكنك التفكير فيه. حسنا ، حصلت على ATDD مرة أخرى ...


العودة إلى التفاعل مع SAP GUI: لقد تمكنا ، كما كتبت بالفعل ، من حوالي 200 سطر في بيثون وحوالي 10 وظائف مختلفة لإدارة الواجهة (مثل "اذهب إلى إشارة مرجعية" ، و "ملء الحقل" ، و "اضغط على الزر"). تم تشكيل هذه المجموعة في الأيام الأولى تقريبًا ولم تتوسع كثيرًا بعد ذلك. يرجع الفضل في SAP ، إلى أن كل شيء يعمل بسرعة كبيرة - لا تملك العين الوقت الكافي لتتبع "وميض" الواجهة ، حيث تم إدراج التأخيرات في حلقة التحكم لإبطاء (إذا لزم الأمر ، التحكم البصري). وألاحظ أيضًا مزايا التشغيل المتزامن - في أي مكان في الكود ، يجب أن تنتظر أي شيء ، على سبيل المثال ، إذا تم الضغط على الزر ، ثم اكتمل الإجراء المقابل لنقرة زر (على سبيل المثال ، تم حفظ الخسارة).


def get_ctrl_attr ( self, uid, attr ): """     (  )   (  )  exception =  (   log) """ ctrl = self._get_ctrl(uid) try: retText = getattr( ctrl, attr ) except: raise AssertionError("  {1}   {0}".decode("utf-8").format(attr,uid)) return retText 

بعض التعليقات على الكود


  • جزء من مكتبة إدارة SAP GUI
  • المكتبة هي كائن ، والطرق متاحة مباشرة في الاختبارات (بالكلمات الرئيسية) ، على سبيل المثال ، يمكن استدعاء الطريقة المذكورة أعلاه على النحو التالي: "res = get ctrl attr $ {UID} text" (باستخدام تدوين آلي)
  • في حالة وجود خطأ ، سيكون نص الاستثناء مرئيًا في سجل الروبوت (لا تحتاج إلى القيام بأي شيء من أجل هذا - فقط استثناء "القتل"

الكود بسيط للغاية ، إنه يرضي.


تشغيل الاختبارات


وفقًا لمنطق الروبوت ، يتم دمج الاختبارات الفردية في مشاريعنا. يمكن بدء الاختبار أو المشروع يدويًا من واجهة الويب. يتم دمج عملية اختبار الانحدار أيضًا في نظام نقل SAP:


  • يوافق مالك المنتج ، عند الانتهاء من مرحلة اختبار الأعمال ، على طلبات النقل للنقل
  • "نقل" الطلبات المعتمدة واحدًا تلو الآخر إلى بيئة ما قبل الإنتاج ، حيث يتم ، وفقًا للإعدادات ، إطلاق مجموعة معينة من الاختبارات (أو بالأحرى ، المشاريع)
  • إذا كانت نتيجة الاختبار إيجابية ، يتم تحرير الطلب و "الانتقال" إلى بيئة الإنتاج
  • عند حدوث أخطاء ، يتم إرسال رسالة إلى مؤلف الطلب تحتوي على رابط إلى تقرير الاختبار (تم إنشاؤه بواسطة الروبوت) ، ولا يذهب الطلب إلى أبعد من ذلك

صورة


هام - تعمل واجهة الويب على تقليل عتبة الدخول في عملية الاختبار بشكل كبير: لبدء الاختبار بسيط - انقر فوق الزر "بدء". في الوقت نفسه (بسبب استخدام Robot Framework) ، يتم الحفاظ على جميع مزايا تمثيل الملفات للاختبارات (التحكم في الإصدار ، سطر الأوامر والأتمتة ذات الصلة ، وما إلى ذلك).


ليس النسغ om


طبقنا تطويرنا بنجاح ليس فقط لاختبار SAP GUI ، لقد كان لدي تطور صغير (واجهة تسجيل خسارة مبسطة) في بيثون و django. نظرًا لأن جميع النقاط الأساسية التي تم تنفيذها بالفعل ، كان كل ما يلزم القيام به هو كتابة مكتبة لإدارة المستعرض (مثلما كنت أحتاج إلى إدارة SAP GUI ، فقط من خلال السيلينيوم). واتضح عظيم:


  • لا تزال الاختبارات تعمل على جهاز Linux الظاهري (على نفس الاختبار - اختبارات SAP وليست اختبارات SAP مباشرة في نفس "المثيل")
  • "وميض" المستعرض في مكان عمل المختبر (تحكم مرئي كامل دون أي حيل)
  • التقارير القياسية ، وأدوات مألوفة

في اختبارات هذا النظام ، ذهبت إلى أبعد من ذلك (نحو ATDD) - تم تكوين العناصر المرئية بصريًا (الملصقات والعناصر النائبة) مبدئيًا في الاختبارات ، حيث اتفقوا مع الشركة ومن هناك "سقطوا" في الكود المصدر للنظام نفسه (اتضح أنه DRY قليلاً) - لا يمكنك اكتب الكود دون كتابة الاختبار أولاً. بارد؟


بالطبع ، تم تطوير الكثير من الأدوات لتطبيقات الويب ، لكن لا يمكنني القول أنني واجهت أي إزعاج أثناء العمل. اتضح بشكل جيد هنا ...


لتلخيص


يبدو أن عالم SAP كبير ويحتوي على كل ما هو ضروري لتحقيق السعادة الكاملة للمطورين. لكن هذا لا يعني على الإطلاق أنك تحتاج إلى السير فقط عبر تلك المسارات التي "يسير" SAP ونظامها الإيكولوجي بها. من المفيد في بداية الطريق أن تسأل نفسك السؤال: هل أريد بالتأكيد أن أفعل "مثل أي شخص آخر"؟ نحن في Alfastrakhovanie نسأله ، وليس فقط في تكنولوجيا المعلومات.


ومرة أخرى ، كل شيء ممكن في البرمجة ، والسؤال هو فقط الوقت والمال (الدافع).

Source: https://habr.com/ru/post/ar457706/


All Articles