مرحبا أريد أن أخبركم كيف
يعمل الاختبار في مشروع
Autotech ، خدمة فحص السيارات بواسطة VIN. تحت الأحدث - حول الأدوات التي نستخدمها لاختبار المتطلبات ، والتخطيط السريع ، وكيف تعمل عملية الاختبار في مشروعنا.

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

ميزة هذا النهج هو التمثيل المرئي لجميع التبعيات الممكنة بأسلوب هرمي ، وكذلك الكعك إضافية في شكل الرموز ، واختيار النص والفروع متعددة الألوان. يتمتع الفريق بأكمله بإمكانية الوصول إلى MindMap ، والذي يسمح لك بتحديث الخريطة. أنا نشر الفراغ من مثل هذه البطاقة ، والتي يمكن اعتبارها معلما ، وهنا -
البطيخ . (سأبدي تحفظًا على الفور بأن هذا مجرد دليل ، ومن المشكوك فيه جدًا استخدام هذه البطاقة لمهامك دون الانتهاء من المشروع.)
تحليل ليني والشفرة الثابتة من أجل Go
في مشروعنا ، وهو عدد كبير إلى حد ما من كود golang ، ومن أجل أن يفي نمط الكود بمعايير معينة ، تقرر تطبيق تحليل الكود الثابت. حول ما هو عليه ، هناك
مقال ممتاز عن حبري.
أردنا دمج المحلل في عملية CI ، بحيث يبدأ المحلل في كل بنية للمشروع ، واعتمادًا على نتائج التحقق ، استمر الإنشاء أو تعطل مع وجود أخطاء. بشكل عام ، سيكون استخدام gometalinter كخطوة إنشاء منفصلة في Teamcity حلاً جيدًا ، ولكن عرض الأخطاء في سجلات البناء ليس مناسبًا للغاية.
واصلنا البحث والعثور على Linty Bot ، التي تم تطويرها كجزء من hackathon
Avito بواسطة Artemy
Flaker Ryabinkov.

هذا هو الروبوت الذي يراقب رمز المشروع في نظامنا للتحكم في الإصدار ويطلق محلل كود الفرق مع كل طلب سحب. في حالة حدوث خطأ أثناء التحليل ، يرسل الروبوت تعليقًا إلى PR هذا إلى سطر الشفرة المطلوب. تتمثل ميزاته في سرعة الاتصال بالمشروع ، وسرعة العمل ، والتعليقات على طلبات السحب ، واستخدام لينت Gometalinter الأكثر شهرة ، والذي يحتوي افتراضيًا على جميع الفحوصات اللازمة بالفعل.
MockServer وكيفية الحصول على الخدمات لتقديم ما يحتاجون إليه

القسم التالي يدور حول اختبار الاستقرار. تعتمد وكالة بيع السيارات اعتمادًا كبيرًا على مصادر البيانات (التي تأتي من التجار والخدمات الحكومية ومحطات الخدمة وشركات التأمين والشركاء الآخرين) ، ولكن لا يمكن أن يكون عدم تشغيلها أساسًا لرفض إجراء الاختبارات.
يجب أن نتحقق من تجميع التقارير في مصادر العمل وفي عدم قابليتها للتشغيل. حتى وقت قريب ، استخدمنا مصادر بيانات حقيقية في بيئة التطوير ، وبالتالي ، اعتمدنا على حالتها. اتضح أننا فحصنا هذه المصادر بشكل غير مباشر في اختبارات واجهة المستخدم. نتيجة لذلك ، فقد أجروا اختبارات غير مستقرة سقطت مع المصادر وانتظار استطلاع لمصادر البيانات ، مما لم يسهم في سرعة اجتياز الاختبارات التلقائية.
كان لدي فكرة لكتابة وهمية بلدي وبالتالي استبدال مصادر Autotech. ولكن في النهاية ، تم العثور على حل أبسط - تطوير
MockServer الجاهزة ، مفتوح المصدر في Java.
مبدأ عملها:
- خلق التوقعات
- تطابق الطلبات الواردة ،
- إذا تم العثور على تطابق - إرسال استجابة.
مثال على إنشاء انتظار باستخدام برنامج java client:
new MockServerClient("localhost", 1080) .when( request() .withMethod("POST") .withPath("/login") .withBody("{username: 'foo', password: 'bar'}") ) .respond( response() .withStatusCode(302) .withCookie( "sessionId", "2By8LOhBmaW5nZXJwcmludCIlMDAzMW" ) .withHeader( "Location", "https://www.mock-server.com" ) );
كما ترون من المثال ، نحن نصف الطلب الذي سنرسله والرد الذي نريد استلامه. يتلقى MockServer الطلب ، ويحاول مقارنته بالطلبات التي تم إنشاؤها ، وإذا كانت هناك تطابقات ، فإنها تُرجع استجابة. إذا فشل الطلب ، فسنحصل على 404.
بالنسبة إلى MockServer ، يوجد عملاء لجافا و JavaScript ، ووثائق ممتازة وأمثلة للاستخدام. هناك إمكانية لمطابقة طلبات RegExp وتسجيل تفصيلي على الخادم ومجموعة من جميع أنواع الرقائق. لتلبية احتياجاتنا ، كان المرشح المثالي. يتم وصف عملية الإطلاق بالتفصيل على الموقع ، لذلك فإن إعادة سردها هنا لا تهم النقطة. في اللحظة الأخيرة ، تم تسريب أحدث إصدار من الذاكرة ، لذلك نستخدم الإصدار 5.2.3. كن حذرا. ناقص آخر هو أن Mockserver لا يحتوي على دعم SOAP خارج المربع.
في الوقت الحالي ، يعمل MockServer معنا لمدة ثلاثة أشهر تقريبًا. نتيجة لذلك ، ازدادت ثبات الاختبارات وسرعة تنفيذها والقدرة على تلقي أي بيانات عن بيئة التطوير. وفقا لذلك ، هناك المزيد من الفرص للاختبار.
خاتمة
هذه التقنيات هي الأشياء الرئيسية التي أود التحدث عنها في هذا المقال. بالنسبة للباقي ، نستخدم أدوات الاختبار المعتادة: اختبارات API مع حزمة Kotlin + JUnit + RestAssured ، Postman لتوفير الوصول إلى واجهة برمجة التطبيقات. في مقالة المراجعة هذه ، لم أتحدث عن مقاربتنا لاختبارات واجهة المستخدم. نحن نستخدم MBT و
graphwalker . نحن نخطط لإعداد منشور مع الزملاء حول هذا الموضوع.
إذا كان لديك أي أسئلة ، اسأل في التعليقات ، سأحاول الإجابة. آمل أن يكون هذا المقال مفيدًا لفرق التطوير. (بالمناسبة ، بينما كانت تستعد للنشر ، ظهرت وظيفة
مطور ضمان الجودة في فريقنا ، وأظهر أولئك الذين قد يهتمون بها).