في هذا المنشور ، أود مشاركة استعراض لـ 15 تقريرًا من مؤتمر Heisenbug ، لإخبارك بما كان مثيرًا للاهتمام في المدرجات في الشركات ، وأيضًا لمشاركة مواد الفيديو من تقرير Artyom Eroshenko حول إنشاء إضافات إجراءات لـ IntelliJ IDEA من شأنها أن تساعدك على تغيير رمز مشروع الاختبار بسرعة.

معلومات حول HeisenBug
Heisenbug - المؤتمر الفني
لأخصائيي الاختبار. إنه مهم بشكل رئيسي للمختبرين ومهندسي تطوير البرمجيات في الاختبار والمتخصصين في الاختبار الآلي والتحميل. المنظمون هم فريق
JUG.RU ، والذي خلفه مؤتمرات مثل Joker و HolyJS و SmartData و DevOops و DotNext و Mobius.
المكان

عُقد المؤتمر
الخامس في فندق سلافيانسكايا راديسون ، محطة مترو كييفسكايا ، موسكو. عند الاقتراب من الفندق ، كانت هناك لافتة إلكترونية تحمل شعار المؤتمر. علاوة على ذلك ، عند مدخل بهو الفندق ، رافق المشارك علامات على مكاتب تسجيل الدخول وخزانة الملابس. من المستحيل أن تضيع. تم تسجيل المشاركين والمتحدثين في الطابق الأرضي ، في الردهة الرئيسية للمؤتمر ، كانت هناك أجنحة للشركاء وقاعات مؤتمرات وقاعات مع استراحة لتناول القهوة ووجبات غداء. يسر مستوى حراس الأمن ، بحيث "الأرانب المتخلفة" لم يكن للحصول عليها. في المجموع ، حضر الحدث أكثر من 500 مشارك ، معظمهم سجل قبل أسبوعين من البداية.
البرنامج
يمكن العثور على البرنامج
هنا . أريد أن
أشير إلى أن
JUG.RU تسعى دائمًا لجعل البرنامج عمليًا ، دون ماء إضافي ومع خبراء أجانب مشهورين. تنقسم التقارير إلى رموز:

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

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

عرضت Raiffeisen أن تذهب من خلال السعي عبر الإنترنت مع حل لجميع أنواع الألغاز ، كما يمكن لخبراء الكلاسيكيات الذين لا يدومون أن يلعبوا Mortal Kombat 3 على Sega. قام زملاء Alfa-Bank بعمل روبوت برقية مع مهام ، بالإضافة إلى مجموعة كبيرة من ألعاب Lego Mindstorms التي تم إجراؤها في اليانصيب. أريد أن أثني على كشك دويتشه بنك ، حيث قام مطورو الاتصالات المباشرة بتفويض المهام وشاركوا في المناقشة ، على عكس كل الأكشاك الأخرى ، حيث قاموا فقط بفحص الإجابات.

تطارد العديد من الشركات المتخصصين بشكل خفي ، وتوزع كتيبات تصف الوظائف الشاغرة (وليس جميعها تعمل في الأعمال الخيرية).
نظرة عامة على التقارير
1. لدينا DevOps. دعونا إطلاق النار على جميع اختبار - باروخ Sadogursky.
افتتح المؤتمر Baruch Sadogursky ، داعية مطور من JFrog ، متحدث معروف في المؤتمرات المتعلقة بجافا و Devops. في التقرير ، عالج باروخ مشاكل جودة البرمجيات في مواجهة الإصدارات المتكررة ، والتي تنجم عن متطلبات العمل المتزايدة باستمرار ، وتعقيد اختبار الكود بسبب ضعف البنية ، وتحديث دور المختبر في فرق أجيل الحديثة. كان التقرير ممتعًا للاستماع من البداية إلى النهاية ، والكثير من الفكاهة والحقائق والمقارنات المثيرة للاهتمام.
حسنًا ، يمكن وضع الأفكار الرئيسية للتقرير في شريحة واحدة ، مما يوضح أن اختبار أتمتة وممارسات DevOps يقلل من تكاليف الوقت للعمليات الروتينية ويسمح لك بتخصيص المزيد من الوقت لتنفيذ المهام الجديدة.
2. تحتاج إلى refactor المشروع؟ هناك IDEA! - ارتيم اروشينكو.
تحدث Artyom في تقريره عن إنشاء مكونات إضافية
للإجراءات لـ IntelliJ IDEA ، والتي سوف تساعدك على تغيير رمز مشروع الاختبار بسرعة.

وقدم شرحًا للفئات الرئيسية (AnAction ، و PsiClass ، و PsiAnnotation ، و AnActionEvent ، و JavaCodeStyleManager) ، وهي نقطة إدخال إجراءات البرنامج المساعد.
نظرت في كيفية حل المهام التالية:
أ) ما هو الآلي في المشروع وما هو ليس كذلك. مزامنة تلقائية مع Jira.
وفقًا لنص التعليق التوضيحي ، ذهبDisplayName إلى Jira ، وتلقى التذاكر اللازمة وأوقف جميع الاتصالات الضرورية باستخدامTmsLink.
ب) وضع علامات @ علامات تلقائيا من سياق جيرا.
هناك علامات معينة في
بطاقة التراجع المفضلة . نذهب إلى الاختبار ، وهناك تعليقات توضيحيةTmsLink ، ونستخدم المكوّن الإضافي ولدينا تعليقات توضيحية @ علامات ، وبعد ذلك بمساعدة Junit ، يمكننا إجراء اختبارات على هذه العلامات.
ج) ما هو فحص في الاختبارات؟
هناك اختبار تلقائي ، هناك خطوات ، نقوم بالتصدير ولدينا خطوات في الاختبارات. أيضا في الفيديو هناك مثال لاثنين من الاختبارات.
أثبت Artyom أيضًا كيفية التبديل بسرعة من Allure 1 إلى Allure 2.
تقرير عملي للغاية لأولئك الذين يفكرون في تحسين عملية كتابة التعليمات البرمجية. يمكن العثور على الكود المصدري للمكونات الإضافية
هنا .
3. مشروع جافا ومفاعل؟ - ولكن ماذا عن الاختبارات؟ - كيريل مركوشيف.
شارك سيريل تجربته في تطوير الشركة الطبية الدولية Vivy. وقال كيف تم حل مشاكل قابلية تطوير نظام متجانسة باستخدام microservices ومكتبة مفاعل. تم إيلاء الكثير من الاهتمام لهذه المكتبة ، ومبادئها الأساسية ، وطرق اختبار الأنظمة التفاعلية ، وميزات القاتل (مثل نقاط التفتيش والسجلات في سلسلة الطلبات ، والسنانير ، والطلبات المتكررة (إعادة المحاولة).

أنا شخصياً لم أتعامل مع اختبار الأنظمة التفاعلية ، لذلك كان الأمر جديدًا وممتعًا بالنسبة لي.
4. كما كتبنا إطار عمل مانع التسرب للبحث عن تسرب الذاكرة في JS ، سيرجي دوكوشيف.
هذا الحديث يدور حول تسرب الذاكرة (الكائنات التي يمكن الوصول إليها من الكود ولكن لم تعد هناك حاجة إليها) على تطبيقات الويب ذات الصفحة الواحدة. عيّن Sergey المهمة للعثور تلقائيًا على جميع تسربات الذاكرة المهمة في الإصدار الذي تم إصداره من المنتج. تحدث عن صعوبات العثور على مثل هذه الأخطاء وكيفية القيام بذلك يدويًا باستخدام أدوات Google Chrome. بعد ذلك ، درست أداة
SeaLant ، والتي هو المؤلف. SeaLant بأتمتة الكشف عن التسرب من خلال التفاعل مع عملية كروم باستخدام بروتوكول Chrome DevTools. انتهى التقرير بحقيقة أنه إذا تمكنت الصفحة من تشغيل برامج نصية دورية (من جهاز واحد ، بجلسة واحدة ، دون إعادة تحميل الصفحة) ، فعلى الأرجح ، من خلال اختبارها ، يمكنك التخلص من معظم تسربات الذاكرة.
5. ميزات الاختبار البصري للواجهات - Anton Usmansky ، المطور الرائد لأدوات Gemini (أداة اختبار بصرية) و Hermione (الجيل التالي ، أداة متعددة الأغراض العامة التي يمكن أن تؤدي تأكيدات لقطة الشاشة).

هذا التقرير مفيد لأولئك الذين يفكرون في تنفيذ أدوات الاختبار البصرية في مشاريعهم. أولئك الذين يستخدمون بالفعل Gemini و Hermione قد يكونوا مهتمين أيضًا - فهو يعطي فهمًا لكيفية ترتيب الأدوات في الداخل. في بعض الأماكن ، يتعامل المؤلف مع أشياء أساسية إلى حد ما.
6. مشاكل في السلينيوم WebDriver - أليكسي بارانتسيف.
تحدث أليكسي عن مشاكل مشروع السيلينيوم وأسباب حدوثه. شارك تفاصيل مجموعة المستودع الأحادي باستخدام أداة تجميع
Bazel . وتطرق إلى موضوع رؤية العنصر (في معيار W3C WebDriver ، لا توجد عملية تحقق ما إذا كان العنصر مرئيًا أم لا) وشرح كيف تختلف وظائف getProperty ، getDomAttriubute ، getAttribute.

تتيح معرفة المشكلات للمستخدمين تمييز الميزات عن الأخطاء وتطوير "عكازات" فعالة في مشاريع الاختبار الخاصة بهم.
7. وصفات لخلق من الصفر وتطوير نظام اختبار الحمل - أناتولي Plaskovsky.
يمثل Anatoly مجموعة أبحاث الأداء Yandex.Money. شارك في تقريره ممارساته حول كيفية تحديد الحاجة إلى دراسات الأداء ، وأين يمكن العثور على أشخاص للقيام بهذه الأنشطة ، وكيفية بناء عملية بحث. يركز المؤلف على حقيقة أن بحث الأداء! = اختبار الحمل ، وأن الاختبار على الإنتاج فقط يمكن أن يُظهر نتيجة ذات صلة. في الوقت نفسه ، من الممكن إجراء تجارب دون مشاكل للعملاء عن طريق اختيار طرق الاختبار والبيانات ومراقبة النتائج المحتملة للسيناريو والتنبؤ بها.
أنشأ Anatoly أرض تحميل محادثة برقية ، والتي تناقش اختبار التحميل ، حيث يمكنك النقر للحصول على المساعدة والمشورة.
8. ملحمة فشل الشركات المصنعة للجهاز - عيد الحب Wylsacom بيتوخوف.
تم إغلاق اليوم الأول من خلال تقرير Wylsacom سيء السمعة ، والذي كان ينظر إليه بشكل غامض من قبل الجمهور (إذا حكمنا من خلال دردشة المشاركين في heisenbag في برقية :)).
بالنسبة لي ، لم أستحوذ على أي شيء مثير للاهتمام من التقرير المتعلق باختبار تجريبي للأجهزة والتطبيقات ، ولكن ربما أعجب به المشجعون. اصطف مجال المناقشة للصورة ، لذلك كان نجاح العلاقات العامة.
9. اختبار التكامل الأنيق للحيوان microservice باستخدام TestContainers و JUnit 5 باستخدام مثال منصة SMS العالمية - Andrey Markelov.
أخبر المؤلف كيف يتم اختبار الخدمات المصغرة في شركته باستخدام حزمة Testontainers + Junit 5 + MockServer. بدا التقرير مثيراً للاهتمام ، لكن مثل هذا المخطط لا يتعلق بعدد كبير من الخدمات المجهرية. رابط
الكود المصدري
10. استراق النظر من المختبر ، أو كيفية مراقبة المستخدمين سوف تساعدك - أنتونينا Khisametdinova.
تقرير مشوق للغاية ، على الرغم من أنه أكثر ارتباطًا بتصميم الويب منه إلى الاختبار. يتحدث عن ممارسات UX ومخاطر تجنبه عند تصميم واجهة العميل.

حددت Antonina الأخطاء الرئيسية عند مراقبة المستخدمين في حلول واجهة المستخدم مثل تعطيل الأزرار ، واستخدام اللوادر ، ونصائح الأدوات ، والمكونات المألوفة ، إلخ.
تجدر الإشارة أيضًا إلى التصميم الجرافيكي للتقرير بأمثلة بديهية من مشاريع حقيقية (كما يلائم تقارير حول UX).
11. أنظمة الاختبار مع التبعيات الخارجية: المشاكل والحلول ، Mountebank - Andrey Glazkov.
تحدث المؤلف عن تطور مراحل ترطيب مشاريعه. تعتبر إيجابيات وسلبيات moking على مستوى الرمز. شارك تجربته في الحالات التي يكون من الجيد فيها إنشاء تطبيق مزيف للخدمات. ولكن إذا كنت تريد إعادة إنشاء الخدمات المزيفة فورًا ، وإدخالها في نفس الوقت ، وسيتم إدخال سجلات الطلبات الواردة ، ثم يوصي Andrey بإلقاء نظرة فاحصة على أداة
Mountebank .

المزايا الرئيسية:
- mounteBank - يعمل على مستوى TCP ؛
- حقن جافا سكريبت
- الموثوقية والسرعة من خارج منطقة الجزاء.
- وثائق ممتازة
- عامل دعم الحاويات
قيود الأداة المحددة:
- أنظمة خارجية مع تخزين البيانات ؛
- WebSocket - غير معتمد ؛
- اختبارات الحمل (> 150 دورة في الثانية) ، ولكن يمكنك استخدام الموازن.
12. لماذا الشخصية نهاية إلى نهاية الاختبارات للتطبيقات النقالة - فياتشيسلاف فرولوف.
في تقريره ، تحدث فياتشيسلاف عن وضع الاختبارات الذاتية على Badoo ، أي كيفية حل مشكلة موازاة 1500 اختبار UI متنقل ، والتي تستغرق 30 ساعة آلية للتشغيل على جهاز محاكاة واحد. ونتيجة لذلك ، تمكنوا من تحقيق نتيجة لمدة 30 دقيقة ، مما سمح لهم بإجراء 80 ألف اختبار يوميًا. بالإضافة إلى الزيادة الخطية في الطاقة ، تم تطبيق التحسين لمسح ذاكرة التخزين المؤقت للتطبيق بدلاً من إعادة تشغيل جهاز المحاكاة. تم ذكر المحللون أيضًا في التقرير ، وكيف تم استخدامهم للكشف عن حالات الاختناقات الخاصة في الاختبارات: على سبيل المثال ، تم تشغيل طريقة long_press () في ios 11.0 لمدة 5 ثوانٍ ، وبعد التحسين بدأ تشغيله في ثانية ، أو كيف بمساعدة http-header - "يمكنك تجنب إعادة الاتصال ، وبالتالي تسريع جميع الاختبارات بشكل كبير في وقت واحد. أخبر المؤلف أيضًا كيفية عرض نتائج ملفات التعريف باستخدام أدوات FlameGraph و FlameChart.
13. اختبارات الوحدة: من النظرية إلى التطبيق - فاديم Pushtaev.
يشارك المؤلف تجربته في تطوير UnitTests. يتألف التقرير من ثلاثة أجزاء.
- ماذا نريد من UT → الانحدار (تغيير الكود ، تم التحقق منه) ، التأثير على البنية (عندما يكتب المطورين الاختبارات ، يصبح الكود أفضل) ، فهم (للتعامل مع الكود القديم) ؛
- مبادئ → فاديم يتذكر أن النظرية ليست جيدة مثل الممارسة. تم رفض مبدأ "اختبار الواجهة ، وليس التنفيذ" ، حيث يمكن أن يكون هناك الكثير من المنطق في التنفيذ. بالإضافة إلى ذلك ، مبدأ "اختبارات الوحدة ليست آلية اختبار." يعتبر هذا نوعًا من الأساليب المعمارية ، قوية ومفيدة للغاية ، ولكن هذه ليست آلية للتحقق من صحة التعليمات البرمجية.
- التنفيذ → قصة حول الأساليب التقنية التي يستخدمها المؤلف في العمل (لكل فئة هناك فئة اختبار واحدة ، وإنشاء ألعاب خاصة بهم ، واستخدام التبعيات الخارجية ، إذا لزم الأمر ، وما إلى ذلك).
14. اختبار والبكاء مع اختبار التمهيد الربيع - كيريل Tolkachev
قرر Cyril إعادتنا إلى عالم IoC و DI و Spring وأخبرنا كيفية كتابة اختبارات الوحدات والمكونات باستخدام JUnit 5 و SpringBoot.

إضافة كبيرة لهذا التقرير هي أن المتحدث كتب معظم الاختبارات في الوقت الفعلي ، أي أظهرت بوضوح عملية خطوة بخطوة من التفاف الاختبارات مع شروح الربيع. ومع ذلك ، نظرًا للكم الكبير من الشفرة ، كان من الصعب وضع كل التقنيات الموضحة في رأسي. استعرض Cyril ميزات Spring للعمل مع الملفات الشخصية ، Mock & Spy Beans ، بالإضافة إلى إعداد تكوينات السياق. بالنسبة لي ، يعد Spring إطارًا ثقيلًا إلى حد ما لمثل هذه المهام ، ولن يتمكن سوى المستخدمون المتمرسون فقط من عدم التدخل عند تطوير اختبارات الوحدة.
15. نحن ضخ autotests المحمول - Ekaterina Bateeva.
في التقرير ، فحص المؤلف أداة XCTest لأتمتة تطبيقات iOS. كان تكرار هذه الأداة في مشاريع أخرى غير مريح.

وهي تم تحديد العيوب التالية:
- من الصعب قراءة إعدادات بدء التشغيل ؛
- من الصعب تكوين الجمعيات.
- يصعب الاندماج مع مختلف الخدمات ؛
- غير مريح لإدارة لقطات ؛
- غير مريح لتكوين إعادة تشغيل الاختبار.
بعد ذلك ، تحدثت كاثرين عن إطار
Fastlane مفتوح المصدر ، والذي حل مشكلاتهم.
ملخص
بشكل عام ، أحببت المؤتمر. تلقى تهمة من العواطف والأجوبة على الأسئلة ذات الاهتمام. في جلسة BoF ، خلع معظم المشاركين "أقنعةهم" وأجروا مناقشات ساخنة في إطار مواضيع BoF. استراحات القهوة والعشاء كانت مثالية ، كان هناك دائماً شيء للأكل. أريد أيضًا أن أشير إلى تنظيم الحدث - فريق JUG.RU في كل مرة يجعل Heisenbug أفضل وأفضل. أخيرًا - اذهب إلى المؤتمرات وشارك المعرفة المكتسبة وحسّن مهاراتك!
ملاحظة: أعرب عن امتناني لأليكسي روميانتسيف لمشاركته في إعداد المقال ولأرتيم إروشينكو لمواد الفيديو.