ليس من البداية
أنت تعرف الكثير من أدوات الاختبار التي يمكنها:
- احصل على خطوات بلغة غيركين مباشرة مما طالب به المستخدم؟
- هل تريد إنشاء تعليمات فيديو تلقائيًا ، مع ترجمة ، جاك أسود وإلينا ؟)
- إنشاء ملف * .feature باللغة الإنجليزية في الواجهة الرومانية ، للمستخدم الذي يتحدث الإيطالية؟
هذا متاح وواضح (بالصور) في هذه المقالة ، لا تقم بالتبديل ...
الدخول
هذه المقالة هي نظرة عامة على أداة اختبار تطبيق 1C التي تم إنشاؤها في أحشاء OpenSource تسمى أتمتة Vanessa . هذا المشروع هو استمرار مباشر لمشروع سلوك فانيسا ، المعروف على نطاق واسع في الدوائر الضيقة (تم إنشاء الشوكة في الإصدار 1.1.131). بالمناسبة ، هناك شوكات أخرى.
السياق
لن يكون من اللطيف التفكير في أن كل قارئ لهذه المقالة على habr يعرف 1C ، على الرغم من ذلك ، فإن الغش ليس خيارًا. لذلك ، لن أجرؤ على الاستمرار دون تكوين فهم القارئ لمنصة 1C وإمكانياته المستخدمة في أتمتة فانيسا (فيما يلي va أو Vanessa ).
لذلك ، بعد تثبيت النظام الأساسي 1C ، تحتاج إلى تشغيله في وضع Enterprise أو في وضع Configurator .

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

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

يتم دعم التكوينات التي يوفرها 1C (من المستحيل تغييرها حتى لا تفقد التحديثات التلقائية) ، والمعالجة الخارجية تجعل من الممكن إجراء عمليات معالجة مختلفة للبيانات دون إزالة الدعم ، وبالطبع - للاختبار!
ملحقاتبعد إصدار إصدار النظام الأساسي 8.3.10 ، أصبح من الممكن ، لأغراض الاختبار ، استخدام ، بالإضافة إلى المعالجة الخارجية ، أيضًا الامتدادات (فهي تصحيحات).
مع درجة معينة من التبسيط ، يمكن القول أنه من الناحية الفنية ، المعالجة الخارجية 1C هي ملف بامتداد epf الذي يمكنك فتحه في المكون ، يمكنك إنشاء العديد من النماذج ← وضع عناصر التحكم في النماذج وبرمجة بعض الوظائف في وحدات هذه النماذج. تحتوي المعالجة الخارجية أيضًا على وحدة "مشتركة" (تُعرف أيضًا باسم "وحدة الكائن" ) وتخطيطات ، ولكن هذه قصة مختلفة تمامًا ، ونعود إلى الاختبار.
لاستخدام وظيفة الاختبار الآلي ، تحتاج إلى تشغيل مثيلين من مؤسسة 1C ، الأول باستخدام مفتاح مدير الاختبار (/ TESTMANAGER) ، والثاني باستخدام مفتاح عميل الاختبار (/ TESTCLIENT) وإنشاء اتصال بين مدير الاختبار والعميل. وبالتالي ، يصبح سيناريو الاستخدام بواسطة مطور النظام الأساسي كما يلي:

من المكوِّن ، ابدأ 1C في وضع المؤسسة بمفتاح مدير الاختبار → في المؤسسة ، وافتح va واستخدمه لتشغيل مثيل آخر
1C في وضع المؤسسة مع مفتاح عميل اختبار. يتم إنشاء اتصال va بين المدير وعميل الاختبار تلقائيًا بعد بدء عميل الاختبار. يمكن أن يكون عميل الاختبار إما عميل رفيع أو عميل ويب.
المجموع: 1C كتبت السيلينيوم الخاص بها ، والذي بني في منصة 1C: Enterprise. وهذه السيلينيوم من 1C لها مزايا. على سبيل المثال ، دائمًا ما يكون لأي عنصر تحكم (يُعرف أيضًا باسم التحكم) في نموذج اسم فريد ، والذي يُعرف مسبقًا في 99.99٪ من الحالات. وفقًا لذلك ، لا توجد مشاكل في تحديد المواقع ، ولإيجاد عنصر تحكم ، اكتب فقط:
= .(,,);
أصلح المادة بمثال
من الضروري تطوير تكوين لحساب مبيعات البضائع مع طباعة الفواتير.
يمكن للعارض اليقظ أن يلاحظ التصميم
<>
ولم تكن مخطئًا ، نعم - تستخدم فانيسا لهجتها من جلد الغرين ، والتي لديها شروط ودورات. أعتقد أن فكرة إضافة شروط ودورات إلى غيركين قد ولدت شيئًا مثل هذا:
انتقد بعض أعضاء مجتمع OpenSource هذا القرار ، ولكن إذا كان هناك اعتقاد بأن المتشدد اتفقوا على ما يلي - فإن "قابلية القراءة البشرية" للميزات لا تضر بهذه الوظيفة ، ويقرر الجميع ما إذا كان سيتم استخدامها أم لا.
حول توربو غيركين مخطط مقال منفصل ، ترقبوا.
"BDD على 1C" وقليل من التاريخ
va ، كما نراه الآن ، تم رؤيته بشكل مختلف من قبل المبدعين . لم يتم تحديد الخيار نفسه + السيلينيوم في 1C إلا بعد اختبار أكثر الخيارات وضوحًا ومنخفضة التكلفة. في مرحلة معينة ، أصبح من الواضح أنه إذا كنت تستخدم الخيار والسيلينيوم ، فسيتعين عليك إنهاء هذه الأدوات من أجل الحصول على الوظائف اللازمة لاختبار حلول تطبيقات الأعمال 1C. هذا المواءمة ، في إطار المصدر المفتوح وواقع عالم 1C ، أدى إلى تعقيد وتوسيع المشروع في الوقت المناسب. ونتيجة لذلك ، تقرر القيام بذلك فقط مع منصة 1C: Enterprise.
على سبيل المثال ، مع بيع البضائع ، رأينا كيفية عمل va ، والآن لنرى كيف يتم تنفيذه.
الاختيار خطوة
يُظهر مقطع الفيديو "اختبار" va ، حيث تم بالفعل تحميل ملف ميزة (يُشار إليه فيما بعد بميزة ) وتم تكوين شجرة من الخطوات. عن طريق النقر على زر "تشغيل البرامج النصية" ، تبدأ معالجة كل خطوة ، أي استدعاء إجراء التحقق خطوة. حول مكان وجود هذا الإجراء ، سأشرح بالقدوة.
افترض أن هناك ميزة مع برنامج نصي:
: "" 10 "" 300 "" 3000
لتنفيذ التحقق من خطوات هذا السيناريو ، تحتاج إلى الحصول على معالجة خارجية تتوافق مع الميزة. في va ، يتم ذلك تلقائيًا ، عن طريق الزر المقابل.

ونتيجة لذلك ، سيتم إنشاء دليل step_definitions
في نفس الدليل مثل الميزة ، وسيتم إنشاء معالجة خارجية فيه ، بنفس اسم الميزة.
..\.feature ..\step_definitions\.epf
سيتم تحديد إجراءات التحقق خطوة في وحدة نموذج المعالجة.

علاوة على ذلك ، عند تحميل ميزة ، ستقوم va بالبحث عن العمليات الخارجية وتسلسلها لمعرفة إجراءات التحقق من الخطوات التي يتم تنفيذها (العمليات الخارجية). الإجراء التالي مسؤول عن ذلك:

تسلسل البحث للتحقق من الخطوات كما يلي:
1. , feature 2. , , 3. ,

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

نتيجة لذلك ، لدينا ملف xml مع وصف لإجراءات المستخدم:
<?xml version="1.0" encoding="UTF-8"?> <uilog xmlns:d1p1="http://v8.1c.ru/8.3/uilog"> <ClientApplicationWindow isMain="true"> <CommandInterface> <CommandInterfaceGroup title=" "> <CommandInterfaceButton title=" "> <click/> </CommandInterfaceButton> </CommandInterfaceGroup> </CommandInterface> </ClientApplicationWindow> <ClientApplicationWindow caption=" "> <Form title=" "> <FormGroup name="" title=" "> <FormButton name="" title=""> <click/> </FormButton> </FormGroup> </Form> </ClientApplicationWindow> <ClientApplicationWindow caption=" ()"> <Form title=" ()"> <FormTable name="" title=""> <FormGroup name="" title=" "> <FormButton name="" title=""> <click/> </FormButton> </FormGroup> <FormField name="" title=""> <closeDropList/> <executeChoiceFromDropList presentation=""/> </FormField> </FormTable> </Form> </ClientApplicationWindow> <ClientApplicationWindow caption=""> <Form title=""> <FormTable name="" title=""> <gotoRow direction="down"> <Field title="" cellText="000000001"/> <Field title="" cellText=""/> </gotoRow> <choose/> </FormTable> </Form> </ClientApplicationWindow> <ClientApplicationWindow caption=" () *"> <Form title=" () *"> <FormTable name="" title=""> <endEditRow cancel="false"/> </FormTable> <FormGroup name="" title=" "> <FormButton name="" title=" "> <click/> </FormButton> </FormGroup> </Form> </ClientApplicationWindow> </uilog>
من الصعب القول ما إذا كانت فكرة إنشاء وظيفة تحويل إجراءات المستخدم إلى خطوات البرنامج النصي تكمن على السطح ، ولكن أول من يخمن وينفذ هذه الفكرة هو Leonid Pautov ( pr-mex ). يمكن تقدير حجم العمل المنجز من خلال محتوى وحجم المكتبة ، لأنه بالإضافة إلى ترجمة إجراءات المستخدم إلى gherkin ، كان من الضروري تنفيذ إجراءات التنفيذ وإجراءات التحقق من الخطوات.
وبالتالي ، من أجل الحصول على نص جاهز "من فراغ" ، يكفي تمكين تسجيل إجراءات المستخدم في مدير الاختبار.

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

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

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

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

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

إن إنقاذ المستخدمين لمشاهدة تنفيذ البرنامج النصي (من أين تأتي روح الدعابة البوليسية هذه؟) ليس خيارًا ، لكن المؤلف لم يتوقف عن تنفيذ وظيفة إنشاء ملف html بالخطوات ولقطات الشاشة المقابلة. لم يتم إيقافه من حقيقة أنه عند تشغيل إجراءات المستخدم ، لا يتم عرض مؤشر الماوس ولا توجد طريقة لتحديد منطقة عشوائية في النموذج ، لذلك كتب الأدوات المساعدة المقابلة. علاوة على ذلك ، بناءً على طلب المستخدمين ، تمت إضافة التمثيل الصوتي ( Elena ) ، والذي أدى مع العمل الأساسي على تشكيل الفيديو مع الترجمة والخلفية الموسيقية الأصلية ، إلى قدر كبير من العمل ، ولكن تعليمات الفيديو التلقائي كانت هناك. في الوقت الحالي ، تم تحسين تعليمات الفيديو التلقائي بشكل كبير ، من حيث مزامنة التمثيل الصوتي والإجراءات على الفيديو.
بعض الإحصائيات المملة
يدعم va :
- إصدارات 1C: منصة Enterprise تبدأ من 8.3.6 وأعلى (يوصى باستخدام النظام الأساسي 8.3.10 وأعلى).
- تتم إدارتها وكأشكال "عادية" (قد يكون التكوين الذي تم اختباره في وضع التوافق 8.2 أو أعلى).
- وضع الاتصال غير المتزامن.
من أجل العمل بشكل صحيح في مثل هذه "حديقة الحيوانات" ، كان على va أن تتعلم اختبار نفسها. يبدو تقرير الاختبار الذاتي كالتالي:


البرامج النصية للاختبار "الذاتي" في نفس المستودع .
مكتبة الخطوة
تتضمن حزمة va مكتبة Gherkin للخطوات القياسية ، والتي تتيح لك حل المهام اليومية للاختبار التلقائي ، مثل العمل مع واجهة التطبيق (الأزرار والحقول والجداول وما إلى ذلك) ، والعمل مع الملفات ، ونظام التشغيل ، وما إلى ذلك. في الوقت الحالي ، إنها أكثر من 400 خطوة.
التعريب
تم ترجمة واجهة va بـ 20 لغة:
RU, am, az, bg, et, fr, ka, de, en, hu, it, lv, lt, mn, pl, ro, sl, es, sv, tr, vi.
يمكن تقسيم التوطين va إلى 3 مكونات:
- Interface (يتم استخدام الآلية القياسية للمرادفات في 1C: منصة Enterprise).
- يتم استخدام الرسائل الموجهة إلى المستخدم (بدلاً من استدعاء تخطيطات () مع ترجمات الرسائل).
- ترجمة خطوات غيركين من مكتبة va القياسية. على سبيل المثال بدلاً من تنفيذ الخطوة "وأضغط على الزر" NameKnopki "في كل لغة ، يتم استخدام" رسم الخرائط "مرة أخرى في الخطوة المقابلة لـ Gherkin ، والتي يتم تنفيذها بالفعل باللغة الروسية.
في اللغة الإنجليزية ، ستكون هذه الخطوة
And I click 'ButtonName' button
لذلك ، يمكن الآن للمستخدمين الناطقين باللغة الإنجليزية كتابة البرامج النصية على va باللغة الإنجليزية. يتم ترجمة جميع الخطوات من المكتبة القياسية من قبل الرجل. قد تبدو النتيجة شيء من هذا القبيل.
من المنطقي أنه من أجل دعم هذا التعريب ، كان علينا تنفيذ أدوات إضافية للعمل مع التخطيطات (التخطيط هو شيء يشبه جدول excel) لإدخال / حذف القيم ، وفرز الصفوف ، إلخ. مباشرة في المصدر (ملفات XML).
"TDD في 1C" ، اختبار الإجراءات والوظائف (اختبارات الوحدة)
باستخدام va ، يمكنك اختبار "سلوك" الإجراءات والوظائف. يكفي كتابة نص مماثل:

إذا كان القراء مهتمين ، فيمكن الكشف عن هذا الموضوع بمزيد من التفصيل في المقالات المستقبلية.
خيارات التوصيل
في البداية ، تم تسليم المشروع فقط في شكل مجموعة من ملفات epf ، والتي يمكن تجميعها من المصدر على github ، أو تنزيل إصدار جاهز. بدءًا من الإصدار 1.2.009 ، يتم توفير va أيضًا كملف epf واحد ، والذي يتضمن جميع المكتبات والمكونات الإضافية وحزم التوطين ووحدات تجميع الفيديو وما إلى ذلك. إذا جاز التعبير - الكل في واحد.
هذا الإصدار من إطار العمل يسمى Vanessa-automation-single . وهي مناسبة تمامًا لأولئك المستخدمين الذين لا يخططون لتعديل va ، ولكنهم سيستخدمونها فقط. أيضًا ، خيار التسليم هذا مناسب تمامًا للتضمين في التكوينات أو الامتدادات الأخرى (تسمح ميزة ترخيص مشروع FreeBSD بذلك).
من الأعلى إلى الأسفل ومن الأسفل إلى الأعلى
على الرغم من حقيقة أن الأداة تم تصميمها في الأصل لتنفيذ منهجية BDD (أي عندما تتم كتابة البرامج النصية من الأعلى إلى الأسفل ، أي بناءً على متطلبات المستوى الأعلى للعميل) ، فقد أظهرت ممارسة الاستخدام أنه يمكن أيضًا كتابة البرامج النصية من الأسفل إلى الأعلى. الحالة النموذجية هي عندما يكون هناك بالفعل تكوين جاهز ، وتحتاج فقط إلى تغطيته بالاختبارات دون القلق بشأن المنهجيات.
معنوي
آمل أن يكون القارئ قد طور (الكلمة "شكلت") فكرة عن va كأداة اختبار جادة. بالنظر إلى نظائرها الأجنبية في البداية ، الآن يتفوق عليها في رأيي المتواضع. إن تمديد وظيفة العمل مع gherkin ، جعل من الممكن (وعد ، ولكن لم يتم تنفيذه قبل turbo gherkin) بإشراك كل من المحلل والمطور والمختبر في عملية التطوير. سأشرح أن المحلل يكتب نصًا متقاطعًا من المستوى الأعلى ← المطور يشرح تفاصيل هذا النص البرمجي باستخدام البرامج النصية للتصدير أيضًا ، ولا يكتب شيئًا سوى الرمز (جميع خطوات واجهة المستخدم الضرورية موجودة بالفعل في المكتبة) → يضيف المختبر نصوصًا للتحقق من "زاوية مختلفة" وظائف وكل هذا - في ملف ميزة واحدة ، هتاف الرفاق!

ملاحظة
حول هذا ، اسمحوا لي أن أختتم مقال المراجعة هذا.
دعم المشروع بكلمة لطيفة / مثل / نقد (دردشة المشروع في Gitter هنا ) ، يسعد المؤلفون دائمًا.
شكرا لكم على اهتمامكم!
المراجع