المحتويات
Mnemonics هي كلمة أو عبارة تساعدنا على تذكر شيء ما. أشهر فن الإستذكار هو "كل صياد يريد أن يعرف أين يجلس الدراج". كل من تسأل ، الجميع يعرفها.
ولكن في المجال المهني ، كل شيء حزين قليلاً. اسأل رفاقك إذا كانوا يعرفون ما هو SPDFOT أو RCRCRC. بعيدًا عن الحقيقة ... لكن فن الإستذكار يساعدنا في إجراء الاختبارات ، ولا ننسى التحقق من الأهم. انهارت قائمة المراجعة في عبارة واحدة!
زملاء الاختبار الناطقين باللغة الإنجليزية يستخدمون بنشاط فن الإستذكار. يقول صديق يقرأ المدونات الأجنبية ، إن الأمريكيين يأتون بهم في كل عطس تقريبًا.
وأعتقد أن هذا رائع. قد لا تكون وسائل الاستذكار الأجنبية مناسبة بشكل خاص لنظامك أو لعملياتك. وسيذكرك عزيزي "لا تنتظر للتحقق من هذا وذاك" وتحد من عدد الأخطاء في الإنتاج.
اليوم أريد أن أشارككم مع فناني BMW في دراسة قيم الحدود. يمكن أن يكون:
- إعطاء صغار للتطوير العام في تصميم الاختبار ؛
- استخدامها في المقابلة - عادة ما يحل المرشح مهمة "العثور على الحدود في رقم" ، ولكن هل سيجد الحدود في السطر أم سيقوم بتنزيل الملف؟
BMW Mnemonics
ب - كبير
م - صغير
ب - الحق فقط

من السهل التذكر. فقط تذكر هذه السيارة الرائعة وفك التشفير جاهز! لكن ماذا يعني وكيف سيساعد في المقابلات؟
الحق فقط

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

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

الماوس الصغير هو البحث عن القيم القريبة من الصفر. أصغر قيمة موجبة.
ماذا عن اختبار "0.00000001"؟ تم التحقق من الصفر ، ولكن لا تنسى الحفر جنبًا إلى جنب.
وماذا هناك؟
يبدو أن أقول أشياء واضحة. يبدو أن الجميع يعرف ذلك بالفعل. ما عليك سوى إجراء مقابلة حول مهمة رقمية ، نفس المثلث (
مهمة من Myers ) ، وأنت تدرك أن الأمر ليس كذلك ... سيذهب عدد قليل جدًا من الأشخاص للبحث عن حدود تكنولوجية أو يحاولون إدخال قيمة كسرية بالقرب من الصفر. الحد الأقصى صفر وسوف يعرض للتحقق.
وإذا كنت تقترح عدم اختبار رقم ، فهذا يعد ذهولًا أكبر. مع الرقم ، حسنًا ، تحققنا من الصفر والحدود وفقًا لبيان العمل ، فهذا ليس سيئًا بالفعل. وفي السطر ما لاختبار؟ وفي الملف؟
أريد أن أتحدث عن هذا في المقالة. كيف يمكنك استخدام فن الإستذكار في الحياة الواقعية وفي الوقت نفسه صيد الحشرات. لنبدأ بأمثلة شائعة - موجودة في كل مشروع. والتي يمكن أن تعطى في المقابلة في شكل مهمة صغيرة.
ثم سأخبر أمثلة من عملي. نعم ، إنها محددة. نعم ، هم حول تقنيات معينة. اذن ماذا؟ لكنهم يظهرون كيف يمكنك تطبيق فن الإستذكار في أماكن أكثر تعقيدًا.
المعنى هو نفسه: الحدود موجودة في كل مكان تقريبًا. فقط اعثر على الرقم وجربه. ولا تنسى فن الإستذكار من BMW ، لأنه في B و M نواجه الأخطاء.
أمثلة شائعة
أمثلة في أي مشروع: حقل رقمي ، سلسلة ، تاريخ ... سننظر في هذا الترتيب:
رقم
- 10
- 0.00000001
- 999999999999999999999999 ....
قُل صندوقًا يحتوي على عدد الكتب أو الفساتين أو عبوات العصير. كاختبار إيجابي ، نختار بعض الكمية المناسبة: 3 ، 5 ، 10.
كقيمة صغيرة ، حدد أقرب ما يمكن من الصفر. تذكر أن الماوس يجب أن يكون صغيرًا جدًا. هذه ليست مجرد وحدة ، ولكن المكان العشري Nth. فجأة ستدور إلى الصفر وفي مكان ما في الصيغ ستنهار؟ علاوة على ذلك ، على الرقم "1" سيعمل كل شيء بشكل جيد.
حسنًا ، يتم تحقيق الحد الأقصى من خلال إدخال 10 ملايين تسع. قم بإنشاء مثل هذه السلسلة باستخدام أدوات مثل Perlclip ، والمضي قدمًا ، واختبر كثيرًا!
انظر أيضًا:فئات التكافؤ لسلسلة تشير إلى رقم - حتى المزيد من الأفكار لاختبارات السلسلة الرقمية
كيفية إنشاء سلسلة كبيرة ، والأدوات - المساعدين في توليد قيمة كبيرة
التاريخ
- 05/26/2017
- 01/01/1900
- 12/21/003
التاريخ الإيجابي هو إما "اليوم" إذا قمنا بشحن التقرير في موعد ما. أو تاريخ ميلادك ، إذا كنا نتحدث عن DR ، أو تاريخ آخر يناسب عملية عملك.
كتاريخ صغير ، نأخذ التاريخ السحري "01/01/1900" ، والذي غالبًا ما تنهار فيه التطبيقات. من هذا التاريخ ، يبدأ الوقت في Excel. كما يتسلل إلى التطبيقات. تكشف هذا الرقم السحري - وينهار التقرير ، حتى لو كانت هناك حماية ضد الأحمق للأصفار. لذلك أوصي به بشدة للتحقق.
إذا تحدثنا عن ماوس صغير جدًا ، فلا يزال بإمكانك التحقق من "00.00.0000". سيكون هذا فحصًا صفرًا ، وهو أمر مهم أيضًا. لكن المطورين غالباً ما يكونون محميين من مثل هذا الأحمق من 01/01/1900.
يمكن أن تكون لعبة Far Ahead مختلفة أيضًا. يمكنك الدخول إلى سلبي والتحقق من تاريخ أو شهر غير موجود بالفعل: 05/40/2018. أو ابحث في الحدود التكنولوجية باستخدام التاريخ 99.99.9999. ويمكنك أن تأخذ قيمة حقيقية أكثر قليلاً ، والتي لن تأتي قريبًا: 2400 أو 3000.
انظر أيضًا:فئات التكافؤ لسلسلة تشير إلى تاريخ - حتى المزيد من الأفكار لاختبار التاريخ

سلسلة
- فاسيا
- (مسافة واحدة)
- (كان هناك الكثير من النص)
دعنا نقول عند التسجيل هناك حقل بالاسم. الاختبار الإيجابي هو الاسم الشائع: أولغا ، فاسيا ، بيتر ...
عند البحث عن ماوس صغير ، نأخذ سطرًا فارغًا أو اختراقًا للحياة: مسافة واحدة أو مسافتين. في هذه الحالة ، يبقى السطر فارغًا (لا توجد أحرف هناك) ، ولكن يبدو أنه مملوء.
ما هو التركيز عند البحث عن فأر كبير؟ عندما نختبر سلسلة كبيرة ، نحتاج إلى اختبار سلسلة كبيرة! تذكر أن الماوس يجب أن يكون كبيرًا. لأنني عادة أشرح للطلاب كيف يعمل كل هذا ، وكيفية البحث عن الحدود التكنولوجية ، وما إلى ذلك. ثم أعطوني DZ وكتبوا "لقد تحققت من 1000 حرف - لا يوجد حد تكنولوجي".
21 القرن في الفناء ، ما هي 1000 حرف؟ نأخذ أي أداة تسمح لنا بتوليد 10 ملايين ، وإدراج 10 ملايين. الآن سيكون هذا البحث عن حدود تكنولوجية. وهناك بالفعل أخطاء في هذا ، على هذا النظام قد ينقطع. لكن 1000 حرف؟ لا.
انظر أيضًا:كيفية إنشاء سلسلة كبيرة ، والأدوات - المساعدين في توليد قيمة كبيرة
لكن حسنًا ، كل شيء واضح هنا أيضًا. وماذا سيحدث إذا اختبرنا الملف؟
ملف
أين يمكنني العثور على رقم في ملف؟
أولاً ، حجم الملف:
- 5 ميجابايت
- 1 كيلو بايت
- 10 جيجابايت
عند اختبار ملف كبير ، عادة ما يجربون شيئًا مثل 30 ميجا بايت ، ويهدئون من ذلك. ثم تقوم بتحميل 1 جيجا بايت - وهذا كل شيء ، يتجمد الخادم.
بالطبع ، إذا كنت مبتدئًا وتختبر بعض المواقع الحقيقية للتجربة ، فلا يجب عليك تحميلها دون علم المالك. ولكن عند الاختبار في العمل ، تأكد من فحص الماوس الكبير.
ثانيًا ، الملف له اسم → وهذا هو طول السطر الذي ناقشناه للتو.
لكن الملف يحتوي أيضًا على محتوياته! هناك عدد من الأعمدة (الأعمدة) والصفوف. اختبارات الخط:
- 5 خطوط
- صف واحد
- 1،000،000،000 صف
وهنا يبدأ المرح. لأنه حتى في نفس Excel في الإصدارات المختلفة ، هناك قيود مختلفة على عدد الأسطر التي يدعمها:
- التفوق أدناه 97-16384
- Excel 97-2003-65 536
- Excel 2007 - 1،048،576
ولكن لا تزال الأرقام كبيرة جدًا ، فهي ليست مثيرة للاهتمام. لكن الإكسل القديم لم يفتح أكثر من 256 في الأعمدة ، وهذا قيد خطير:
- Excel 2003 - 256
- Excel 2007 - 16،385
شقيقه الحر ، LibreOffice ، لا يمكنه فتح أكثر من 1024 عمود.

قصة حياة
نكتب بعض الاختبارات التلقائية بتنسيق CSV. عند مدخل الطاولة ، عند إخراج الطاولة. افتح وتحرير في LibreOffice لترى أين العمود. كل شيء رائع ، كل شيء يعمل. في حين أن عدد الأعمدة لا يخرج لـ 1024.
هنا يبدأ ألم الحياة. لن يتم فتح اختبار LibreOffice بعد الآن ، في تنسيق CSV غير مريح ، لأنه من الصعب فهم مكان العمود 555. يمكنك فتح الاختبار في Excel ، وتحريره ، وحفظه ، وتشغيله ... يقع في 10 أماكن جديدة: أصبح TIN تالفًا. إنها طويلة ، على سبيل المثال ، 7710152113. يقوم Excel بترجمتها إلى تنسيق 1.2E + 5.
يتم فقدان أرقام طويلة أخرى أيضًا.
إذا كانت القيمة بين علامتي اقتباس ، يتم تغليفها بعلامات اقتباس إضافية لا يتوقعها الاختبار.
وقمت بتصحيح هذه الأشياء الصغيرة بالفعل بتنسيق CSV ، وتهويل Excel عقليًا إلى نفسك ... لذلك هناك قيود ، يجب تذكرها! على الرغم من أنه لا يظهر على النظام نفسه ، إلا أنه يمكن أن يعقد ببساطة حياة المختبر.
جدول في Oracle (قاعدة بيانات)
وبما أننا نتحدث عن 1024 عمودًا ، فسوف نتذكر Oracle (قاعدة بيانات شائعة). هناك نفس التقييد: في جدول واحد يمكن أن يكون هناك 1024 عمودًا كحد أقصى.
من الأفضل أن تتذكر ذلك مسبقًا! كان لدينا جدول به حوالي 1000 عمود ، ولكن تم حجز نصفه للمستقبل: "يومًا ما سيكون مفيدًا ، وهذا سيكون كافياً بالنسبة لنا لفترة طويلة". كفى ولكن ليس لوقت طويل
لا مكان لتوسيع الجدول - واجهت قيود. لذا إما أن تقسم الجدول إلى قسمين ، أو تحزم المحتويات في BLOB: هذا شيء يحتوي على أرشيف مضغوط يحتوي على بيانات يشغل عمودًا واحدًا ، ولكن داخله يحتوي على العدد الذي تريده.
ولكن على أي حال ، هذا هو ترحيل البيانات. وترحيل البيانات هو دائما ألم. في قاعدة كبيرة ، يستغرق الأمر وقتًا طويلاً ، ويجلب مشاكل جديدة لا يمكن تصويرها إلا في ستة أشهر ... Brrr! إذا كان بإمكانك الاستغناء عن الترحيل ، فمن الأفضل القيام بذلك.
إذا كان لديك جدول به الكثير من البيانات ، فكر في المستقبل. هل ستلائم دائمًا 1024 عمودًا؟ هل ستضطر إلى الهجرة لاحقًا؟ بعد كل شيء ، كلما طال عمر النظام ، كلما كان النقل أكثر صعوبة. و "يكفي لمدة 5 سنوات" يعني أنه يجب ترحيل الحجم لمدة خمس سنوات.
كيفية اختباره؟ نعم ، حسب الكود ، قم بتقييم جداول البيانات الخاصة بك ، وألق نظرة على مكانها. انتبه للماوس الكبير: تلك الجداول التي تحتوي بالفعل على الكثير من الأعمدة. هل ستكون هناك مشاكل معهم في المستقبل؟
تقرير في النظام
ولكن لماذا نقوم بتحميل الملفات إلى النظام أو ضخ البيانات من Oracle؟ على الأرجح من أجل بناء نوع من التقرير. وهنا يمكنك أيضًا تطبيق فن الإستذكار.
يمكن أن تكون البيانات عند الإدخال (كثير ، قليل ، حق فقط) ، وعند الإخراج! وهذا مهم أيضًا ، لأن هذه فئات معادلة مختلفة.
نتيجة لذلك ، نختبر الكمية:
- أعمدة التقرير
- خطوط
- بيانات الإدخال ؛
- بيانات الإخراج (في التقرير نفسه).
الهيكل (الأعمدة والصفوف)هل يمكننا التأثير على عدد الصفوف أو الأعمدة؟ في بعض الأحيان نعم ، نستطيع. في العمل الثاني ، قمت باختبار مصمم التقرير: على اليسار لديك مكعبات بأسماء المعلمات التي يمكنك رميها أفقيًا أو رأسيًا في التقرير نفسه. أي أنك تقرر عدد الصفوف وعدد الأعمدة.
تطبيق فن الإستذكار. بعد تقرير قياسي (اختبار إيجابي ، الماوس "الصحيح فقط") نحاول القيام بالقليل:
- عمود واحد ، 0 صف ؛
- 0 أعمدة ، صف واحد ؛
- عمود واحد ، صف واحد.
ثم الكثير:
- الأعمدة القصوى ، صف واحد (يتم إلقاء جميع المكعبات في الأعمدة) ؛
- الصفوف القصوى ، عمود واحد ؛
- إذا كان يمكن تكرار المكعبات ، فهناك وهناك إلى أقصى حد ، ولكن هذا أمر مشكوك فيه ؛
- أقصى مستويات متداخلة (هذا عندما يكون اثنان آخران داخل عمود مجمع واحد).
بعد ذلك ، نختبر بيانات الإدخال والإخراج. يمكننا التأثير عليهم في أي تقرير ، حتى لو لم يكن هناك مُنشئ وكان عدد الصفوف والأعمدة هو نفسه دائمًا.
بيانات الإدخالاكتشفنا كيف يتم تشكيل التقرير. لنفترض أن كل يوم يتم تعبئة بعض البيانات ، على سبيل المثال ، في عدد الفساتين المباعة ، وباس الشمس ، والقمصان. وفي التقرير نرى مجموعة من البيانات حسب الفئات والألوان والأحجام. كم يباع في اليوم / الشهر / الساعة.
نبني تقريرًا ونؤثر نحن أنفسنا على بيانات الإدخال:
- الرقم المعتاد (5 فساتين في اليوم ، على الرغم من أن هذا الرقم في الأماكن الضخمة يمكن أن يكون 2000 أو أكثر ، تحتاج إلى توضيح ما سيكون أكثر إيجابية لنظامك).
- فارغ ، لم يتم بيع / بيع عنصر واحد في الشهر.
- الحجم كبير بشكل غير واقعي ، بحد أقصى لكل منتج ، كل لون ، كل حجم. نضع الحد الأقصى "للأكاذيب في المستودع" ونبيع كل شيء: في غضون شهر أو حتى يوم واحد. ماذا سيقول التقرير؟
بيانات الإخراجمن الناحية النظرية ، ترتبط بيانات الإخراج ببيانات الإدخال. عند المدخل قليلاً عند المخرج سيكون هناك القليل. عند المدخل هناك الكثير - عند المخرج هناك الكثير.
لكن هذا لا يعمل دائما. في بعض الأحيان يمكن التخلص من بيانات الإدخال ، أو على العكس ، تضاعف. وبعد ذلك يمكننا اللعب بطريقة أو بأخرى.
على سبيل المثال ، نظام
دادات . يمكنك تحميل ملف بعمود واحد بالاسم الكامل ، وعند الإخراج تحصل على عدة ملفات دفعة واحدة:
- الاسم الأصلي ، ما كان في الملف ؛
- اسم مفكك (إذا كان بإمكانك الخروج) ؛
- رود قضية
- دات قضية
- إنشاء. قضية
- اللقب
- الاسم الأول ؛
- الاسم الأوسط ؛
- حالة التحليل - اعتراف واثق من آلية أو التحقق من شخص ؛

حصلنا على 9. من خلية واحدة ، وهذا بالاسم فقط ، ويمكن للنظام أيضًا تحليل العناوين. هناك ، يتم الحصول على ما يقرب من 50 من خلية واحدة: بالإضافة إلى المكونات الحبيبية ، هناك جميع أنواع الرموز KLADR ، FIAS ، OKATO ...
وهذا مثير للاهتمام. اتضح أنه قد يكون لدينا القليل من البيانات عند الإدخال ، ولكن الكثير عند الإخراج. وإذا فحصنا الحد الأقصى في الأعمدة ، فلدينا خياران:
- 500 عمود عند الإخراج (وهو حوالي 10 عناوين عند الإدخال) ؛
- 500 عمود عند المدخل (ومجموعة كاملة عند المخرج).
يعمل المبدأ أيضًا في الاتجاه المعاكس. ماذا لو كان الإدخال عبارة عن مجموعة كاملة من البيانات وكان الإخراج zilch؟ إذا كان هناك نوع من الهراء مثل "op34e8n8pe" بدلاً من الاسم الكامل؟ ثم اتضح أن جميع الأعمدة الإضافية فارغة ، فقط حالة التحليل "أرسلت لي القمامة". لذلك نحصل على الحد الأدنى عند الإخراج (القليل من الماوس) ، وهو أمر يستحق التحقق منه أيضًا.
وإذا كان يمكن استبعاد مكبرات الصوت! من الممكن التحقق من فئة التكافؤ "صفر" عندما يكون الصفر عند الإخراج ، ويكون الملف المصدر غير فارغ. يمكنك التحقق على الأقل عندما تركوا عمودًا واحدًا من مائة.
الشيء الرئيسي هنا هو أن نتذكر أنه بالإضافة إلى بيانات الإدخال ، لدينا بيانات الإخراج. وأحيانًا يمكنك التحقق من الحدود ، والتي لن تعتمد على بيانات الإدخال. ثم يجب القيام بذلك.
تطبيقات الموبايل
التواصل
هناك خيارات اتصال مختلفة:
- عادي
- تين جدا (فأر صغير) ؛
- فائق السرعة (كبير).
علاوة على ذلك ، يمكن أن يكون ضعف الاتصال جزئيًا: إذا كنت في منطقة بها شبكة Wi-Fi عادية وشبكة خلوية ضعيفة. يعمل الإنترنت بشكل جيد ، ولكن الرسائل القصيرة سيئة.
مقدار الذاكرة
من المهم أيضًا مقدار الذاكرة التي يحتوي عليها التطبيق:
- كمية عادية
- قليل جدا ؛
- كثيرًا.
وإذا كان في هذه الحالة يمكن الجمع بين الاختبارين الأول والثالث في هذه الحالة ، فإن الماوس الصغير مثير للاهتمام. وهناك خيارات مختلفة:
- قم بتشغيل التطبيق على الهاتف ، الذي يحتوي بالفعل على القليل من الذاكرة ؛
- تعمل عندما تكون الذاكرة طبيعية ، تنهار ، تنشر شيئًا كبيرًا ، حاول العودة إلى التطبيق الأول.
الآن ، إذا كان التطبيق لا يعرف كيفية الاحتفاظ بالذاكرة بشكل طبيعي ، ففي الحالة الثانية سوف تتعطل ببساطة ، ثم تم الضغط على الذاكرة بالفعل.
قطري الجهاز
- قياسي (نحن ندرس السوق ، وننظر إلى ما هو أكثر شعبية بين مستخدمينا).
- الحد الأدنى (الهاتف).
- الحد الأقصى (قرص كبير).
دقة الشاشة
لا تخلط بين الدقة والقطر ، فهذان شيئان مختلفان. قد يكون لديك جهاز قديم بشاشة كبيرة ، لكن لدي هاتف ذكي عصري جديد ، حيث الدقة أفضل 5 مرات. وما سيحدث خلال 20 عامًا أمر مخيف.
مسارات GPX
مسارات GPX هي ملفات XML بإحداثيات متسلسلة. يمكن تنزيلها على محاكيات الهاتف المحمول حتى يعتقد الهاتف أنه يتحرك في الفضاء بسرعة.
مفيد إذا كان التطبيق يقرأ إحداثيات GPS لبعض أغراضه. لذا فهي نفسها تحدد ما إذا كنت ستذهب أو تركض أو تركب. ولا يمكنك الجري ، فقط قم بإطعام إحداثيات التطبيق ، قم بتعيين معامل مرورهم واختبارهم أثناء الجلوس في المكتب.
ما احتمالات تستحق التحقق؟ كل حسب فن الإستذكار:
- 1 - المعامل الطبيعي ، يحل محل المشي البسيط ؛
- 0،01 - كما لو كنت تسحب meeeeeeeeeeeeeeeeeeeeebally ؛
- 200 - لا تهرب ، بل تطير!
لماذا يجب التحقق من كل هذا؟ ما البق التي يمكن العثور عليها؟
على سبيل المثال ، قد يتعطل التطبيق على متن الطائرة - تم إطلاقه ، لكنه انهار على الفور. لأنه يقرأ الإحداثيات ويحاول تحديد سرعتك. ولكن من يعلم أن السرعة ستكون أعلى من 130؟
بسرعة بطيئة ، قد يتعطل التطبيق. سيضع لنفسه مليون نقطة وسيطة ولن يتمكن من الاحتفاظ بها في ذاكرته. هذا كل ما في الأمر!
انظر أيضًا:ما هي مسارات GPX ولماذا تحتاج إلى اختبار؟ - المزيد عن مسارات gpx ومثال على هذا الملف
ملخص الأمثلة الشائعة
أريد أن أبين هنا أنه يبدو أن "كبير ، صغير" هو حقل رقم وهذا كل شيء!
, , , … . :
( )— 01.01.1900
, . , 0000. 1900 .
—
, . , .
: . , . , . =)
الفأر الكبير (الحد الأعلى)إذا تحدثنا عن الفأر الكبير ، فهناك بشكل عام عدد لا حصر له من الأخطاء:- الحرب والسلام ؛- الكثير من البيانات.- 2 جيجابايت.يمكنك تحميل الحرب والسلام إلى حقل نصي ، وتحميل ملف ضخم على النظام ، والحصول على الكثير من البيانات حول الإدخال أو الإخراج. هذه كلها أخطاء شائعة واجهتها في ممارستي. وليس أنا فقط ، غالبًا ما يتم التحقق من الحد الأعلى لمجرد أنهم يعرفون أنه قد يكون هناك أخطاء. بدلا من ذلك ، ينسون الفأر الصغير.مثال آخر على الفأرة الكبيرة هو اختبار الإجهاد. أوه!
لدي مثل هذه الأمثلة ، لذلك نذهب إلى المتشددين.إذا كنت تعرف السياق ، إذا كنت تعرف كيف يعمل التطبيق الخاص بك في الداخل ، ما هي لغة البرمجة التي يتم كتابتها بها ، وقاعدة البيانات التي يستخدمها ، يمكنك أيضًا استخدام هذه الذاكرة. وأريد أن أعرض هذا بأمثلة ملموسة.أمثلة ممارساتي
فأر كبير
Linux و Lucene و Mmap
يحتوي نظام التشغيل Linux على إعداد للحد الأقصى من واصفات الملفات المفتوحة:- redhat-6 - /etc/security/limits.conf
- redhat-7 - / etc / systemd / system / [name of service] .service.d / limits.conf (لكل خدمة خاصة بها)
يتم فتح واصف ملف لأي إجراء مع الملفات:- إنشاء اتصال قاعدة بيانات ؛
- قراءة الملف ؛
- الكتابة إلى ملف.
- ...
إذا كان نظامك يعمل بنشاط مع الملفات ونفذ العديد من العمليات ، فيجب زيادة الإعداد. خلاف ذلك ، فإن أدنى حمل سيضعك.يستخدم نظامنا فهرس بحث Lucene. هذا عندما نأخذ بعض البيانات من قاعدة البيانات ونحملها على القرص ، حتى نتمكن لاحقًا من البحث عنها بشكل أسرع. وإذا قمنا ببناء الفهرس باستخدام تقنية mmap ، فإنه يبني الكثير من الملفات للكتابة أثناء إنشاء الفهرس.
عادة ما تحتوي قاعدة الاختبار على 100 عميل ، 1000 ، ليس كثيرًا. يتم تشغيل إعادة الإنشاء بدون مشاكل ، حتى إذا لم تقم بتكوين الواصفات.وفي النظام الحقيقي سيكون هناك أكثر من 10 مليون عميل. وإذا لم تقم بتكوين عدد واصفات الملفات هناك ، فعندما تبدأ في إنشاء الفهارس ، فإن كل شيء سوف ينهار.تحتاج إلى معرفة ذلك وكتابة تعليمات على الفور: تكوين نظام التشغيل على الخادم ، وإلا سيكون هناك مثل هذه العواقب. ومن جانبه ، من المهم عدم إجراء الاختبارات الوظيفية فحسب ، بل اختبارات الضغط أيضًا على كمية حقيقية من البيانات.ريدهات 6 ≠ ريدهات 7
عند اختبار ماوس كبير (تحميل) ، لا تنس أنه في تكوينات مختلفة ، سيعمل التطبيق بشكل مختلف. إذا كنت تأخذ التعليمات من الفقرة الأخيرة ، فلا يجب كتابتها فقط ، ولكن أيضًا فحصها. وتحقق في بيئة العميل.لأن أنظمة التشغيل المختلفة تعمل بشكل مختلف. وكان لدينا مثل هذا الموقف بحيث يبدو أن كل شيء قد تم تكوينه ، ولكن تعطل النظام ويقول "ليس لدي ما يكفي من واصفات الملفات المفتوحة". نقول:- تحقق من المعلمة.- تم تكوينه ، كل شيء حسب تعليماتك!كيف ذلك؟ اتضح أن لدينا تعليمات لـ Redhat 6 ، ولديها Redhat 7 ، حيث يكون الإعداد في مكان مختلف تمامًا! ونتيجة لذلك ، فعلوا ذلك وفقًا لتعليمات عدم العمل ، وكأنهم لم يفعلوا ذلك على الإطلاق.لذلك إذا كنت تعمل مع إصدارات مختلفة من توزيعات لينكس ، فأنت بحاجة إلى التحقق منها جميعًا. وليس فقط نشر الخدمات على الجهاز ، ولكن أيضًا إجراء اختبار الحمل مرة واحدة على الأقل: تأكد من أن كل شيء يعمل. بعد كل شيء ، من الأفضل اصطياد خلل في بيئة اختبار بدلاً من فهم الإنتاج لاحقًا.جمع جافا والقمامة
java, … , - (Out of Memory), , ! ?
. Xmx — …

. , — , . , , , . , .
ولكن في الواقع ، لقد مر الحمل ، ذهب الحمل ، وخرج جامع القمامة لتنظيف كل شيء ، بسبب هذا الإفريز. وعلى الرغم من عدم وجود حمل الآن ويعمل مستخدم وحيد ، فهو حزين.لذلك ، مجرد تخصيص الكثير من الذاكرة للتطبيق "ولا يمكنك اختباره" - هذا لا يعمل. تحقق أفضل.Wildfly
لن يسمح خادم تطبيق WildFly java بتنزيل الملفات الكبيرة إذا لم يتم تكوينه وفقًا لذلك.
نستخدم خادم تطبيق Jboss ، المعروف أيضًا باسم Wildfly. وتبين أنه بشكل افتراضي لا يمكنك تحميل ملفات كبيرة إليه. ونتذكر أن الماوس يجب أن يكون كبيرًا. إذا اختبرنا 5 ميغابايت أو 50 ، كل شيء يعمل ، كل شيء على ما يرام.ولكن إذا حاولت تنزيل 2 غيغابايت ، فإن النظام يعطي خطأ 404 ، ولا يمكنك فهم أي شيء من السجلات: سجلات التطبيق فارغة. نظرًا لأن هذا التطبيق لا يمكنه تنزيل ملف ، يقوم Wildfly نفسه بقصه.إذا لم تجرِ الاختبار على جانبك ، فقد يواجه العميل ذلك. وسيكون مزعجًا للغاية ، وسيأتي بسؤال "لماذا لم يتم تحميله؟" ، وبدون المطور لا يمكنك قول أي شيء. لذلك ، من الأفضل عدم نسيان اختبار الحدود ، بما في ذلك الملفات الكبيرة التي سيتم دفعها إلى النظام. على الأقل ستعرف نتيجة هذه الإجراءات.وهنا إما أن نصلحها عن طريق زيادة معلمة ما بعد الحجم الأقصى ، أو نعطي معلومات حول التقييد ونصفها في بيان العمل.تسجيل الدخول
مثال آخر لاختبار الماوس "الكبير". نعم ، تتذكر بعض الأمثلة بطريقة أو بأخرى ... في أغلب الأحيان ، تصطاد الحشرات!لنفترض أننا تحقق من تسجيل الخطأ. كتابة الخطأ إلى تتبع المكدس في السجل. لذا تحققنا ، نحن رائعون: نعم ، كل شيء رائع ، كل شيء مسجل! وفهمت كل شيء من المكدس على نص الخطأ. إذا سقط العميل ، سأفهم على الفور لماذا.
وماذا سيحدث إذا لم يكن لدينا خطأ واحد ، ولكن عدة أخطاء؟ كل شيء على ما يرام أيضًا ، كل شيء مسجل ، كل شيء على ما يرام! لكننا نتذكر أن الماوس يجب أن يكون كبيرًا:
ماذا سيحدث إذا كان لدينا العديد من الأخطاء؟ كان لدينا هذا الوضع للتو. يقوم النظام المصدر بتحميل البيانات إلى جدول المخزن المؤقت في قاعدة البيانات. يأخذ نظامنا هذه البيانات من هناك ويعمل بطريقة أو بأخرى معها., . , 13600 . Java - 13 , , , «, java heap space».
? maxStoredErrors (default 100) — - . .
Task quarz' RunShell, warn ( info). - …
وما الاستنتاج من هذه القصة؟ لا يكفي التحقق من "الحق فقط". هذا اختبار مهم ومفيد ، نعم ، لا أحد يجادل. ننظر ما إذا كان الخطأ قد تم تسجيله من حيث المبدأ ، وفي أي اختبار ، إلخ. ولكن من المهم جدًا التحقق من ماوس BIG. ماذا يحدث إذا كان هناك الكثير من الأخطاء؟وعليك أن تفهم أن "الكثير" - هذا يعني الكثير. إذا قمت بتحميل زيادة قدرها 10 أخطاء وقلت "10 أخطاء طبيعية أيضًا ، يعرض النظام جميع آثار المكدس" ، فعندئذ يبدو أنهم قاموا بالاختبار ، لكنهم لم يكشفوا عن المشكلة. إذا رأينا أن النظام يعرض جميع الرسائل ، فنحن بحاجة إلى التفكير مقدمًا: ماذا سيحدث إذا كان هناك الكثير منها؟ وتحقق.
التحويل الصوتي
- , , ? , , ?
=
=?

, ? , , . :
, «»

Oracle RAC
أوراكل هي قاعدة بيانات شائعة. Oracle RAC هو عندما يكون لديك مثيلات متعددة لقاعدة البيانات. من الضروري ضمان التشغيل السلس للأنظمة الحيوية للأعمال: حتى إذا تم كسر مثيل واحد ، يستمر الباقي في العمل ، فلن يعرف المستخدم عنه حتى.
إذا كنت تستخدم Oracle RAC - فمن الضروري إجراء اختبار الحمل عليه. إذا لم يكن لديك ذلك ، فأنت بحاجة إلى أن تسأل العميل الذي يقف معه لتنفيذ الحمل على جانبه.
هنا قد يطرح السؤال - لماذا إذا لم يكن لديك؟ الأمر بسيط ، عادةً ما تكون أجهزة الاختبار أسوأ دائمًا. وإذا كان النظام يركز فقط على Oracle و RAC يستخدم عميل واحد من أصل عشرين ، فإن شرائه للاختبار سيكون غير مربح ، لأن RAC باهظ الثمن. من السهل التفاوض مع العميل ومساعدته على إجراء الاختبارات.
ماذا يحدث إذا لم يتم اختبار الحمل؟ هنا مثال من الحياة.
توجد في قاعدة البيانات فرصة لإنشاء عمود والقول أنه حقل زيادة تلقائي. هذا يعني أنك لا تملأ الحقل بتاتًا ؛ قاعدة البيانات تنشئه. هناك خط جديد؟ لقد سجلت القيمة "1". خط جديد آخر؟ سيكون لها قيمة "2". وكل قيمة جديدة ستكون أكثر وأكثر.
لذا ، على سبيل المثال ، من السهل جدًا إنشاء معرفات. أنت تعرف دائمًا أن معرفك فريد. ولكل سطر جديد أكثر من الخط السابق. نظريا ...
لدينا معرفان للكيانات في نظامنا:
- معرف - معرف إصدار محدد ، حقل الزيادة التلقائية ؛
- hid هو معرّف تاريخي ؛ بالنسبة إلى كيان واحد فهو دائمًا ثابت ولا يتغير.
ونتيجة لذلك ، يمكنك التحديد وفقًا لإصدار معين ، أو يمكنك التحديد من خلال إخفاء كيان ما ورؤية سجله بالكامل.
عندما يتم إنشاء كيان ، id = hid. ثم ينمو المعرف ، فهو دائمًا أكبر بالنسبة للإصدارات الجديدة من hid. لذلك ، فإن صيغة تحديد الإصدار:
version = (id - hid) + 1لا يمكن أن يكون سالبًا ، لأن المعرّف يتم إنشاؤه بواسطة قاعدة البيانات نفسها.
ولكن هنا يأتون إلينا بسؤال جوهري ويظهرون السجلات من قاعدة البيانات. لا أتذكر ما هو هذا السؤال ، ولا يهم. أنظر إلى السجلات ولا أصدق عيني: هناك نسخة لها قيم سلبية. كيف ذلك ؟؟ هذا مستحيل. اتضح أنه ممكن.
في RAC ، لكل عقدة ذاكرة تخزين مؤقت خاصة بها. وقد يحدث أن العقد ليس لديها الوقت لإبلاغ بعضها البعض ، ولديك نفس الرقم مرتين في الجهاز اللوحي:
- ينشئ كيانًا. يبحث نودا في ذاكرة التخزين المؤقت ، ما هي القيمة الأخيرة لحقل الزيادة التلقائية؟ نعم ، 10. لذلك سأعطي المعرف 11.
- على الفور ، يصل كيان جديد إلى العقدة الثانية (جاءت الطلبات في وقت واحد وألقى الموازن واحدًا على العقدة 1 ، والثاني عند العقدة 2).
- العقدة الثانية تبحث في ذاكرة التخزين المؤقت ، ما هي القيمة الأخيرة للحقل؟ نعم ، 10 (لم تتمكن العقدة الأولى حتى الآن من إبلاغ الثانية بأنها أخذت هذا الرقم). لذلك سأعطي المعرف 11.

الإجمالي لا نتلقى قيمة فريدة لحقل فريد. وبعد كل شيء ، مع وجود حمولة ثقيلة من تقاطعات المعرفات هذه ، لن يكون هناك واحد أو حتى اثنين ... إذا كان لديك كل منطق الأعمال مرتبط بحقيقة أن المعرف فريد دائمًا ويزيد دائمًا ، فسيكون OH.
في حالتنا ، لم يحدث شيء كارثي ، وساعد اختبار الحمل في منصة اختبار العميل. لقد وجدنا المشكلة في وقت مبكر ، كما اتضح ، أن الإصدارات السلبية للنظام لا تتداخل مع الحياة. لكننا أضفنا تسلسل تسلسل إلى نصوص إنشاء قاعدة البيانات ، لمثل هذه الحالات فقط.
إن جوهر هذا الخرافة هو هذا - من المهم جدًا إجراء اختبار الحمل على نفس الجهاز الذي سيكون في PROD. كل شيء يمكن أن يؤثر على النتيجة: إعدادات نظام التشغيل نفسه ، إعدادات قاعدة البيانات ، نعم أي شيء. ما لم تشك فيه.
اختبار مقدما. وتذكر أنه لا يمكن العثور على جميع المشاكل من خلال الاختبارات الوظيفية. في هذا المثال ، لن يعثر اختبار بسيط على أخطاء. في الواقع ، إذا قمت بإنشاء كيانات يدويًا ، أي ببطء ، سيكون لدى جميع عقد قاعدة البيانات الوقت لإخطار العقد المجاورة ، لذلك لن نحصل على تناقض.
الفأر الصغير
إفراغ جسون
إذا كنت تستخدم مكتبة Axis المفتوحة ، فحاول إرسال JSON فارغة إلى التطبيق. قد يعلقها بشكل جيد للغاية.
والأهم من ذلك - لا يمكنك أن تفعل أي شيء حيال ذلك إلى جانبك! هذا خطأ في مكتبة جهة خارجية. لذا هنا إما أن تنتظر تصحيحًا رسميًا ، أو تغيير المكتبة ، الأمر الذي قد يكون صعبًا للغاية.
في الواقع ، تم إصلاح هذا الخطأ بالفعل في الإصدار الجديد من المحور. يبدو أن مجرد ترقية ، وهذا كل شيء! لكن ... نادرًا ما يستخدم النظام مكتبة جهة خارجية. عادة ما يكون هناك العديد منهم ، يتم ربطهم واحدًا فوق الآخر. لتحديثها ، تحتاج إلى تحديث كل شيء دفعة واحدة. من الضروري إجراء إعادة هيكلة ، لأنهم يعملون الآن بشكل مختلف. يجب تخصيص موارد المطور.
بشكل عام ، يستغرق تحديث إصدار المكتبة أحيانًا إصدارًا كاملاً من مطور رائع. لذلك ، على سبيل المثال ، عندما انتقلنا إلى الإصدار الجديد من Lucene ، أمضينا 56 ساعة في المهمة ، وهذا هو 7 أيام عمل ، أسبوعًا للمطور بدوام كامل واختبار زائد. المهمة نفسها تبدو شيء من هذا القبيل ، يقول المهندس المعماري:
لوسين قم بالتبديل إلى استخدام PointValues بدلاً من Long / IntegerField
تحتوي رصيف Lucene Migration 5 -> 6 على بند حول إسقاط الحقل الطويل (عدد صحيح / مزدوج) لصالح PointValues.
عند التبديل إلى Lucene 6.3.1 ، تركت الحقول القديمة (تمت إعادة تسمية جميع الفئات بإضافة البادئة القديمة) ، لأن الترجمة تسحب إلى مهمة منفصلة.
تحتاج إلى التخلي عن الحقول القديمة واستخدام الفئات الطويلة (عدد صحيح / مزدوج) ، والتي تكون أسرع وأقل وزناً في الفهرس عن طريق الاختبارات. يجب إعادة كتابة الكثير من التعليمات البرمجية.
أكيد! يجب أن يكون الانتقال متوافقًا مع الإصدارات السابقة بحيث لا ينقطع البحث (على الأقل الوظائف الرئيسية) عن ترقية الإصدار. يجب أن يعمل على الفهرس القديم (قبل إعادة البناء) ، وبعد إعادة البناء (في وقت مناسب للعميل) ، يجب التقاط حقول جديدة.
وهذا مجرد تحديث للمكتبة! والتخلي عن مكتبة واحدة بسبب خطأ فيها ، من المخيف عمومًا تخيل كم سيستغرق ...
لذا من الممكن أن تعيش مع خطأ لفترة من الوقت. اعرف عنه ، لكن لا تغير أي شيء. في النهاية ، "لا يوجد شيء لإرسال الطلبات السخيفة".
ولكن على أي حال ، يجب أن تعرف على الأقل وجود خلل. لأنه إذا جاء إليك أحد المستخدمين وقال ، "كل شيء قد علق عليك" ، يجب أن تفهم السبب. بالنظر إلى أن السجلات فارغة. لأن هذا ليس تجميد التطبيق الخاص بك ، كل شيء معلق في مرحلة تحويل JSON.
يبدو - طلب فارغ! وهنا يمكن أن يؤدي إلى ... هذا ، حتى إذا كنت لا تعرف أن Axis به مثل هذا الخطأ ، يمكنك ببساطة التحقق من وجود JSON فارغ ، أو طلب SOAP فارغ. في النهاية ، يعد هذا مثالًا رائعًا لاختبار الصفر في سياق طلب JSON.
تذكر أن تختبر الصفر. وأقل قيمة هي الماوس الصغير ، لأنه يجلب أيضًا الخلل ، وأحيانًا مخيف جدًا.
انظر أيضًا:فئة التكافؤ "Zero-not zero" - المزيد حول اختبار الصفر
"موسكو" في مجال العنوان
خدمة
Dadat قادرة على توحيد العناوين -
ضع العنوان في سطر واحد على المكونات الحبيبية + حدد مساحة الشقة ، إذا كانت في الدليل.
أثناء الاختبار ، تم العثور على خطأ مضحك - إذا أدخلت كلمة "موسكو" في العنوان ، فسيحدد النظام مساحة الشقة. على الرغم من أنه يبدو ، أين الشقة في هذا "العنوان"؟

أعتقد أن هذا مثال رائع على "الفأر الصغير". لأن ما يتم فحصه عادة؟ العنوان المعتاد ، عنوان الشارع ، المنزل ... حقل فارغ. أي حرف واحد - يعتبر هذا اختبار وحدة.
ولكن إذا أدخلت حرفًا واحدًا ، فسيحدد النظام الإدخال باعتباره سلة مهملات كاملة ومسح العنوان. يتصرف بشكل صحيح ، ولكن هذه حالة سلبية لكل وحدة. هذا هو التحقق من طول الحقل حصريًا.
وهنا يجدر التفكير أكثر - هل هناك وحدة إيجابية؟ يوجد. كلمة واحدة ، سيحدد مثل هذا النظام. وهنا أيضًا ، هناك فئات معادلة مختلفة: يمكن أن تكون كلمة من بداية العنوان (المدينة) ، أو يمكن أن تكون من الوسط (الشارع). الأمر يستحق المحاولة معًا. ولكن إذا اقتصرت نفسك فقط على "الوحدة في حقل النص = حرف واحد" ، فلن تجد هذا الخطأ أبدًا.
المجموع
ذاكرات الذاكرة هناك الكثير. ويمكن أن يساعدك استخدامها. لأنك تنظر بالفعل إلى طلبك للمرة العاشرة ، المائة ... لقد فقدت عينيك بالفعل ، يمكنك تخطي الخطأ الواضح. وإذا كنت تأخذ أي فن استذكار موجود ، فقم بإلقاء نظرة على التطبيق بطريقة جديدة. ما سيساعد على الكشف عن أخطاء جديدة.
وحتى مثل وسائل الاستذكار البسيطة مثل BMW تساعد كثيرًا. ولكن ، يبدو ... كبير ، صغير ، فكر! قيم حدود بسيطة. ولكن يجب أن يتم تذكرها دائمًا وفحصها دائمًا! يجلب الفاكهة ومجموعة متنوعة من البق.
باستخدام أمثلةي ، أردت أن أوضح أنه يمكنك البحث عن الحدود ليس فقط في حقل نصي أو رقمي. يعمل Mnemonics في كل مكان: في Oracle RAC ، Java ، Wildfly ، في أي مكان! تعلم كيفية النظر إلى الحدود التي تتجاوز الفهم المعتاد "دخول الحرب والسلام في مربع النص".
بالطبع ، ينصب التركيز الرئيسي على "الفأر الكبير" ، فهو يجلب معظم الأخطاء. هذه الحالات بالتحديد هي التي يتم استدعاؤها عندما تعتقد أنك قابلت في مشروعك.
ولكن يجب ألا تنسى "الفأر الصغير". نعم ، لقد تمكنت من تذكر بضعة أمثلة خاصة بعملي. لكن هذا لا يعني أنني لا أجد حشرات على فأرة صغيرة. أجده! تلك الموجودة في قسم الأمثلة العامة: 01.01.1900 التاريخ ، ملف 1 كيلوبايت ، تقرير فارغ عند تعبئة البيانات ...
الحدود مهمة للغاية. تذكر اختبارها. آمل أن تكون أمثلةي مصدر إلهام لك ، وستظهر فن الاستذكار BMW دائمًا في رأسي عند تسليط الضوء على فئات التكافؤ.

أو ربما ستأتي بذكريات خاصة بك. والذي سيكون لك ، لفريقك ، لميزاتك ، لعملياتك. كما أنها رائعة ، كما أنها ناجحة. الشيء الرئيسي هو أنه يساعد!
PS مقتطف من
كتابي للمختبرين المبتدئين. تحدثت أيضًا عن فن الإستذكار في تقرير عن SQA Days ،
فيديو هنا .