ما يجب أن يعرفه اختبار الواجهة الخلفية



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

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

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

المعرفة الضرورية


سأدلي بملاحظة فورًا: تعتمد المعرفة والمهارات اللازمة على تفاصيل الوظيفة الشاغرة. إذا كان الشاغر يتعلق باختبار واجهة برمجة التطبيقات حيث يتم استخدام HTTP ، فأنت بحاجة إلى معرفة HTTP جيدًا ولا تحتاج إلى معرفة الفروق الدقيقة في نظام التشغيل. إذا كنت تعمل مع Windows ، فأنت لست بحاجة إلى معرفة bash.

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

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

نظرية الاختبار


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

ما هو متوقع من أي مرشح


معرفة المصطلحات الأساسية وتقنيات تصميم الاختبار والقدرة على كتابة تقرير خطأ الجودة.

مما يوحي بأن المرشح يعرف الموضوع جيدًا


رسميا ، هذه شهادات ISTQB.

ماذا تقرأ عن الموضوع


هناك مقال جيد عن حبري مع جميع المعلومات الضرورية. إذا كنت ترغب في فهم نظرية الاختبار بمزيد من التفاصيل ، فيمكنك قراءة مواد ISTQB .

الصدف


اعتمادًا على نظام التشغيل ، تحتاج إلى معرفة إما باش (sh ، zsh ، وما إلى ذلك ، ولكن من غير المحتمل أن تلعب الفروق الدقيقة دورًا مهمًا) ، أو CMD و PowerShell.

ما هو متوقع من أي مرشح


معرفة الأوامر الأساسية.

مما يوحي بأن المرشح يعرف الموضوع جيدًا


المرشح يعرف العديد من الأوامر، مختلف الخيارات بالنسبة لهم، ومزاياها وعيوبها، وطرق مختلفة لاستخدامها، فضلا عن أدوات لتصحيح المشاكل، على سبيل المثال، strace ، تشبدومب ، جدب وغيرها.

ماذا تقرأ عن الموضوع


يمكنك أن تقرأ عن الأوامر الرئيسية في Linux في إحدى مقالاتي السابقة ، وهناك أيضًا مستودع رائع جدًا مع مجموعة من الأمثلة على GitHub . من الكتب ، أنصح "نظام تشغيل UNIX" من قبل Robachevsky و Nemnyugin و Stesik - لا يقتصر الأمر على الفرق فحسب ، بل على النظام ككل.
يمكنك أن تقرأ عن أوامر CMD هنا ، لكن PowerShell لديه بعض الوثائق الجيدة .

HTTP (أو البروتوكولات المحددة في الوصف الوظيفي)


في كثير من الأحيان ، يتم اختيار HTTP كبروتوكول رئيسي لبنية خادم العميل ، لذلك غالبًا ما يسألون عن هذا البروتوكول. ومع ذلك ، قد تحتاج إلى معرفة IMAP أو POP3 أو SMTP (إذا كنت ستختبر البريد) أو Protobuf أو MessagePack أو البروتوكولات الأخرى. 

ما هو متوقع من أي مرشح


كل هذا يتوقف على مدى انتشار البروتوكول. من غير المحتمل أن يمنحك تفريغًا ثنائيًا لحركة المرور ويطلب إلغاء تسلسله على قطعة من الورق من Protobuf ، ولكن إذا كنا نتحدث عن HTTP ، فأنت بحاجة إلى معرفته بمستوى جيد: بنية الطلب والاستجابة ، والعناوين الرئيسية ، والأساليب ، ورموز الاستجابة ، HTTPS.

مما يوحي بأن المرشح يعرف الموضوع جيدًا


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

ماذا تقرأ عن الموضوع


حول HTTP ، كل المعلومات الضرورية موجودة على ويكيبيديا . بالنسبة للبروتوكولات الأخرى ، أنصحك بقراءة وثائقها ومواصفاتها. لا تنس أيضًا HTTPS . حسنًا ، بالطبع ، يجب أن يكون لديك دائمًا في متناول يدك روابط إلى RFC 2616 و RFC 7540 (ولكن هناك مواصفات أخرى ).

بروتوكولات شبكة الطبقة الدنيا


العديد من المرشحين ليس لديهم فكرة عما هو تحت HTTP. أعتقد أن هذا لا يميزهم بشكل جيد للغاية ، لأن المختبر يجب أن يكون لديه عقل متسائل وفضول معتدل ، لذلك أحتاج بالتأكيد إلى معرفة بشكل عام عن نموذج شبكة OSI.

ما هو متوقع من أي مرشح


يجب أن يعرف المرشح أن هناك بروتوكولات TCP و UDP و IP وأن يفهم جوهرها.

مما يوحي بأن المرشح يعرف الموضوع جيدًا


من خلال فهم آلية تشغيل بروتوكول TCP (المصافحة ثلاثية الاتجاهات ، وبعض الحقول من الرأس ، والأعلام ، والنافذة المنزلقة) ، يمكن للمرشح تسمية عيوب ومزايا TCP و UDP ، ومجالات تطبيقها ، والمعرفة العامة بالملكية الفكرية. سيكون الأمر رائعًا إذا أخبر المرشح باختصار عن البروتوكولات الأخرى (على سبيل المثال ، ARP ، ICMP ، ICMPv6).

ماذا تقرأ عن الموضوع


يمكن الحصول على المعرفة الأساسية من مقالات ويكيبيديا: OSI ، TCP ، UDP ، IP ، IPv6 ، ICMP ، ARP ، نموذج شبكة ICMPv6 . إذا كنت ترغب في الانغماس في هذا الموضوع ، فيمكنك قراءة "شبكات الكمبيوتر" بواسطة Tanenbaum.

قاعدة البيانات


ما هو متوقع من أي مرشح


استعلامات SQL الأساسية (JOIN المفضلة للجميع).

مما يوحي بأن المرشح يعرف الموضوع جيدًا


المعرفة العامة ل DBMSs المختلفة ، النسخ المتماثل ، التقسيم ، الهيكل الداخلي لنظام DBMS ، المعرفة العامة بقواعد البيانات غير العلائقية.

ماذا تقرأ عن الموضوع


بشكل عام ، حول قواعد البيانات يمكن العثور عليها في وثائق DBMS معينة. إذا كنت ترغب في التعامل مع قواعد البيانات بالتفصيل ، فإنني أوصي بالفصول المقابلة لـ Kleppman's "Highly Loaded Applications" .

عذرًا


ما هو متوقع من أي مرشح


معرفة المبادئ الأساسية لل OOP.

مما يوحي بأن المرشح يعرف الموضوع جيدًا


سيكون الأمر رائعًا إذا كان المرشح يعرف بعض الأنماط.

ماذا تقرأ عن الموضوع


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

أنظمة التشغيل


ما هو متوقع من أي مرشح


بالنسبة لمعظم الوظائف الشاغرة للمختبرين ، فإن معرفة الفروق الدقيقة في أنظمة التشغيل ليست ذات صلة.

مما يوحي بأن المرشح يعرف الموضوع جيدًا


سيكون الأمر رائعًا إذا كان المرشح يعرف عن إدارة الذاكرة والنواة والمكدس وإنشاء عمليات جديدة وإفراغها وأنظمة الملفات والمزيد.

ماذا تقرأ عن الموضوع


باختصار ، يمكنك أن تقرأ في كتاب "UNIX Operating System" المذكور من قبل Robachevsky و Nemnyugin و Stesik. إذا كان الموضوع محل اهتمام ، فيمكنك الخوض فيه باستخدام ، على سبيل المثال ، "أنظمة التشغيل الحديثة" Tanenbaum. بشكل عام ، يمكنك التعرف على الموضوع باستخدام ويكيبيديا: هناك مقالات حول نواة لينكس ، والذاكرة الافتراضية ، وتبديل السياق ، وغيرها.

هندسة الكمبيوتر


ما هو متوقع من أي مرشح


بالنسبة لمعظم الوظائف الشاغرة للمختبرين ، فإن معرفة الفروق الدقيقة في المعالجات والذاكرة والأجهزة الطرفية ليست ذات صلة.

مما يوحي بأن المرشح يعرف الموضوع جيدًا


سيكون من الرائع أن يعرف المرشح بشكل عام عن المعالج ، والتسجيلات ، وذاكرة التخزين المؤقت ، والذاكرة والقرص ، وما إلى ذلك.

ماذا تقرأ عن الموضوع


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

الخوارزميات وهياكل البيانات


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

آخر


  1. كثير حيث يتم استخدام Docker .
  2. (« »).
  3. REST SOAP.
  4. JSON XML.
  5. Protocol Buffers, MessagePack BSON.
  6. TLS.
  7. Git ( VCS).
  8. Nginx Apache.
  9. .
  10. TeamCity Jenkins ( CI-).



, google.com Enter?


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

اختبار نموذج بزر


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

اختبار الخدمة


شكل مختلف للمهمة السابقة: على سبيل المثال ، هناك خدمة تستمع على المنفذ وتستقبل JSON كمدخلات ، وتستجيب بنفس التنسيق. كل شيء مشابه ، فقط لا يوجد قصدير ، لذلك لا داعي للخوف منه. نقوم بالاتصال بالمنفذ باستخدام telnet ، ثم كل شيء هو نفسه.

اختبار نقطة نهاية REST API


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

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

ملحوظة: أنا أوصي بقراءة مقال زميلي "صورة المختبر الحديث. ما تحتاج إلى معرفته والقدرة على "، فإنه يحدد اتجاهات التطوير المختلفة للمختبرين.

All Articles