Full transcript
4:05مرحباً ، كيف حالكم ؟
4:07كيف الأمور ؟ هل
4:11تسمعونني ؟
4:13>> مرحباً ، مساء الخير يا
4:14أستاذ .
4:15>> أهلاً يا أستاذ .
4:16>> مساء الخير .
4:18>> كيف الحال ؟ كيف تسير
4:19الأمور ؟ يوم سعيد .
4:22إنها المرة الأولى
4:24التي ،
4:26>> لا أعرف لماذا . لا أعلم
4:28لماذا هناك درس يا
4:30شباب . أقولها لكم هكذا .
4:37حسناً ، جيد . إم اليوم
4:46سنبدأ بالتعرف على
4:48مرحلة عملية التصميم
4:49وعملية تنفيذ
4:51الاختبارات . حسناً .
4:55وبعد ذلك بمجرد
4:56الانتهاء من هذا ،
4:57سأشرح لكم المهمة
4:59الثانية . لكي تقوموا
5:05بها وترسلوها لي مثل
5:06المهمة الأولى ، وإذا
5:08كان هناك شيء خاطئ
5:10فسأخبركم به . على أي
5:16حال ، لنبدأ الآن
5:17بالمرحلة الأولى . إذن ،
5:24سنلقي نظرة سريعة على
5:25مرحلة التصميم . حسناً ،
5:30هنا سيكون هناك دور
5:31لمصمم الاختبار الذي
5:33سيقوم بإنشاء حالات
5:35الاختبار مع بيانات
5:36الاختبار . حسناً ،
5:43الكثير من هذا .
5:46انتظروني ثانية ، هناك
5:48المزيد من الأشخاص
5:50قادمون . الكثير من إم
5:56لقد تحدثنا عن
5:57الاختبار ، وقلت لكم
5:59مرات عديدة عن المراحل
6:01المبكرة . حسناً ، لكن
6:03مشكلة الاختبار في
6:05المراحل المبكرة هي
6:06أنه أحياناً تكون هناك
6:08مكونات غير جاهزة
6:10لأنها لم تُطور بعد ،
6:12أي أننا نريد البدء
6:13بالاختبار في أقرب وقت
6:15ممكن . حسناً . حسناً ،
6:18لكن المطور لم يطور
6:20بعض الأشياء بعد .
6:23لنفترض أننا نحتاج إلى
6:25اختبار حذف عميل ، لكن
6:27لم يتم تطوير إضافة
6:29ذلك العميل بعد . إذن ،
6:32ماذا نفعل ؟ حسناً ،
6:36نلجأ إلى القيام
6:37بعمليات معينة أو
6:39إدخالات وهمية ، في
6:41قاعدة البيانات أو في
6:43أي مكان ، تسمح لنا
6:45بإضافة عميل قد لا
6:46يكون موجوداً . إذن ،
6:50مفهوما المشغل ( driver )
6:52والمحاكي ( stub ) سيسمحان
6:54لنا بالقيام بكل هذا .
6:56أي أنها وحدات تحكم
6:57تحاكي المدخلات
6:59والمخرجات . المشغلات
7:02هي وحدات تحكم ستحاكي
7:04بيانات الإدخال . حسناً
7:06. والمحاكيات هي وحدات
7:12تحكم ستحاكي مكوناً
7:14يستقبل البيانات التي
7:16نولدها ، لكنه
7:17يستقبلها بشكل وهمي .
7:23أي أنه كأنه يأخذها
7:25ويرميها في القمامة
7:27ولا يفعل شيئاً بها .
7:31لنفترض أننا نستخدم
7:33تطبيقاً من تطبيقات
7:35طلب الطعام ، ونقوم
7:36باختبار وظيفة طلب
7:38الطعام . حسناً ، نطلب
7:41الطعام ، ونضغط على
7:43تأكيد الطلب . هنا
7:45يأخذه المحاكي ، يأخذه
7:47ويرميه . لنفترض أنه
7:49يقوم بالطلب . بالفعل .
7:52حسناً . يتم تمريره إلى
7:55مكون آخر . حسناً . يفعل ،
7:58أي كما لو كان يقول : "
8:00حسناً ، لقد تم قبول
8:02هذا الطلب . " نعم ،
8:03لنواصل المضي قدماً .
8:06إذاً ، " مشغل " ( driver ) هذه
8:08العناصر هو مكونات
8:10وهمية تحاكي مكونات
8:12أخرى غير موجودة . ولكن
8:15، لماذا أحتاج إلى
8:16القدرة على اختبار هذا
8:18النظام في مرحلة مبكرة
8:20جداً ؟ حسناً ، بعد قول
8:22هذا الذي كررته لكم
8:24مرات عديدة ، أي كلما
8:26اختبرنا بشكل أبكر كان
8:28ذلك أفضل . إذاً ، دعونا
8:30ننتقل للحديث عما يتم
8:32القيام به خلال مرحلة
8:34التصميم . حسناً ، وفي
8:37مرحلة التحليل قلنا
8:38إننا ركزنا على ما يجب
8:40علينا اختباره في
8:42مرحلة التصميم . حسناً ،
8:44ما يجب أن نفكر فيه هو
8:46كيف سنختبر ما قلنا
8:48إننا سنختبره . إذاً ،
8:50في كثير من الأحيان
8:52خلال هذه المرحلة نفكر
8:54في ، لا أدري ، أنواع
8:56الاختبارات التي
8:58سنقوم بها ،
8:59والمستويات التي
9:00سنعمل عليها ، حسناً ،
9:02إيه ، أو ما إذا كنا
9:07سنقوم بالأتمتة . حسناً
9:09، سنقوم أيضاً بتفصيل
9:11تلك الأفكار ،
9:12وسيناريوهات الاختبار
9:14تلك ، لتحويلها إلى
9:15الحالات الضرورية في
9:17حالات الاختبار . سنهتم
9:20بكيفية التحكم في
9:21تغييرات الإعدادات ،
9:23وهي أمور تتعلق
9:24بالانضباط الذي يسمى
9:26إدارة تهيئة
9:27البرمجيات . لكن أساساً
9:30ما نفعله هو التفكير
9:32في كيفية اختبار ما
9:34قلنا إننا سنختبره
9:35وعلاقته بما رأيناه
9:37بالفعل . حسناً ، سنفصل
9:40أفكار الاختبارات في
9:42حالات الاختبار ،
9:44لأنني أقول ما رأيناه
9:46بوضوح ، أليس كذلك ؟
9:48لأننا رأيناها في
9:49الدروس السابقة أو
9:51للتو ، حسناً ، كنت أقول
9:52إنه يجب علينا التفكير
9:54في كيفية اختبار ذلك ،
9:56حسناً ؟ أي أننا سنساهم
9:58في استراتيجية
9:59الاختبارات ، لكننا لم
10:01نرَ ذلك بعد . حسناً ،
10:03سنرى ذلك لاحقاً . بشكل
10:06عام ، الشخص الذي سيعمل
10:12أو سينفذ هذه المرحلة
10:14هو المسؤول ، وسيكون
10:16شخصاً يسمى مصمم
10:18الاختبارات . حسناً ،
10:22ربما يمكنكم إطلاق هذا
10:24الاسم عليه . لاحقاً
10:26سأخبركم بالتفصيل
10:27عندما أتحدث كثيراً
10:29بصيغة الاحتمال ، وهذا
10:31المصمم للاختبارات
10:33سيساعد جزئياً مسؤولي
10:34الاختبارات ، حسناً ؟
10:38أي استراتيجية
10:39الاختبارات التي
10:41يراها أكثر ملاءمة
10:42لهذا المشروع تحديداً
10:44أو لهذه الوظائف ،
10:45وغالباً ما يساهمون
10:47أيضاً في اختيار
10:48الأدوات وسيكونون هم
10:50من ينتقلون إلى مستوى
10:52التفاصيل . كيف سنختبر
10:56ما قلنا إننا سنختبره ؟
11:01حسناً ، يجب أن يكون
11:02الشخص استراتيجياً
11:04أيضاً ، وأن يمتلك
11:06تفكيراً استراتيجياً
11:08وتفكيراً تحليلياً ،
11:09يحلل كل شيء جيداً
11:11ويفكر في الطريقة
11:13الأمثل للحل . أحد
11:21تحديات مواجهة هذه
11:22الاختبارات هو ضرورة
11:24امتلاك الخبرة ومعرفة
11:26الأداة ؛ فتكليف مبتدئ
11:28بتصميم حالات
11:29الاختبار لن يكون
11:30استراتيجية جيدة إذا
11:32كنتم أنتم القادة .
11:42الأداة التي يتم
11:43إنشاؤها كجزء من هذا
11:45النشاط هي " حالات
11:46الاختبار " ، والتي أجرؤ
11:48على القول إنها نجمة
11:50الاختبار ، أليس كذلك ؟
11:52لأنكم بالتأكيد قد
11:53سمعتم عن حالات
11:54الاختبار فهي الأكثر
11:56شهرة . حسناً ، وهي
11:58قديمة نوعاً ما . حسناً
12:00، ما هي حالة الاختبار
12:02؟ هي مجموعة من مدخلات
12:11الاختبار ، وشروط
12:12التنفيذ ، والنتائج
12:14المتوقعة ، طُوِّرت
12:16لهدف محدد ، مثل تجربة
12:18مسار معين في برنامج
12:21أو التحقق مما إذا كان
12:23يلبي قصة مستخدم محددة
12:25، كما يقول النص . هذا
12:37في البداية ذكرت ربما
12:38بعض السمات ، سمات حالة
12:40الاختبار التي سنراها
12:42جيداً في شرائح لاحقة .
12:47بعد ذلك يقول إنها
12:48مصممة لهدف معين . يضرب
12:51مثالاً بأن هذا الهدف
12:53قد يكون التحقق من
12:54نظام ما ، لضمان تلبيته
12:56للمتطلبات ، وفي هذه
12:58الحالة ، لقصص
13:00المستخدمين . هي إحدى
13:01الطرق التي لدينا
13:03لتوثيق الاختبارات
13:04التي سنقوم بها ،
13:06وبالطبع النتائج التي
13:08نحصل عليها عند إجراء
13:09تلك الاختبارات . هناك "
13:14سيتك " ، وهو مختبر
13:16معروف جداً ، ومن
13:17الجانب الأكثر شاعرية
13:19يقول إن حالة الاختبار
13:21هي سؤال يوجه للنظام
13:23للحصول على معلومات .
13:26على سبيل المثال ، ما
13:28إذا كان هذا المسار
13:30ينجح أم يفشل . انتبهوا
13:32، ليس دائماً ما يُنظر
13:34إلى هذا الاكتمال كشيء
13:36إيجابي . إذا كنتم
13:37تتذكرون البيان
13:38الرشيق ( Agile Manifesto ) الذي
13:40كان يفضل البرمجيات
13:42العاملة على التوثيق
13:43الشامل . أحياناً يكون
13:45من الأفضل الاكتفاء
13:47بفكرة الاختبار أو
13:48السيناريو ، وأحياناً
13:49أخرى يكون من الأفضل
13:51الانتقال إلى حالات
13:52الاختبار . لقد تحدثت
13:54معكم كثيراً عن مزايا
13:56وعيوب كل منهما .
13:59أحياناً يكون من الجيد
14:00إعداد حالات الاختبار
14:02لامتلاك دليل خطوة
14:03بخطوة ، لأنه ليس
14:05دائماً الشخص الذي
14:06يصمم الاختبار هو نفسه
14:08من سينفذه . لذا يجب على
14:10الطرف الآخر معرفة
14:11الخطوات الواجب
14:12تنفيذها في ذلك
14:13السيناريو . ومن ناحية
14:15أخرى ، وهو أمر متقدم
14:17قليلاً ، عندما يتولى
14:19مختبر الأتمتة المهمة
14:21، لن يعرف الخطوات
14:22المطلوبة للوصول إلى
14:24النتيجة المتوقعة .
14:26حسناً . كما أنها تعمل
14:29كمادة تدريبية عند
14:31انضمام شخص جديد إلى
14:33المشروع . حسناً . ثم يجب
14:36الأخذ في الاعتبار
14:38حالات الاختبار
14:39الإيجابية وحالات
14:40الاختبار السلبية .
14:44حسناً ، حالات
14:45الاختبار الإيجابية
14:47تظهر الوظائف ، بينما
14:48تختبر حالات الاختبار
14:50السلبية المواقف التي
14:52تتضمن معالجة الأخطاء .
14:56حسناً ، على سبيل
14:58المثال ، لنقل أن لدي
15:00شرطاً ينص على أن سعر
15:02المنتج يجب أن يكون
15:03أكبر من صفر . حالات
15:07الاختبار الإيجابية :
15:09السعر يساوي 0 ، السعر
15:11يساوي 10 ، السعر يساوي
15:1315 . حسناً ، حالة
15:15الاختبار السلبية :
15:17السعر يساوي -5 . حسناً ،
15:20في هذه الحالة يجب أن
15:21يكون النظام قادراً
15:23على تحديد أنه موقف
15:25خطأ وإرسال رسالة خطأ
15:26إلى التطبيق . حسناً ،
15:28يمكن إجراء عدة حالات
15:30اختبار لتحديد ما إذا
15:31كان المطلب مستوفياً ،
15:33ولكن يجب أن تكون هناك
15:35حالة اختبار واحدة على
15:37الأقل لكل مطلب . هذا
15:39مثال كلاسيكي جداً
15:41لحالة اختبار . حسناً ،
15:43سيكون لها معرف ( ID ) وهو
15:45المعرف الفريد لحالة
15:47الاختبار I001 . كما
15:49تلاحظون هنا ، هذه
15:51الحالة الاختبارية من
15:53الواضح أنها تم
15:54إعدادها باستخدام
15:55برنامج Excel . حسناً ،
15:57لاحقاً سنرى كيف يتم
15:59ذلك بشكل جيد في نظام
16:01Jira . أحياناً ، الشركات
16:04لا تملك أداة لإدارة
16:06حالات الاختبار . إذن ،
16:07ماذا سيستخدمون ؟
16:09يستخدمون ملف Excel .
16:11حسناً ، شيئاً بسيطاً
16:12للغاية . ذكرت موضوع
16:14الأدوات . هناك أدوات
16:18تسمح بالإدارة ، كما
16:20ذكرت ، الأكثر شهرة هي
16:22Azure ، TestLink ، وأيضاً Jira
16:24كما قلت للتو ، لكنها
16:27مدفوعة ومكلفة ،
16:28وأحياناً تجد الشركات
16:31الاستشارية صعوبة في
16:33دفع تكاليفها . لكن
16:37بالعودة إلى موضوع
16:39حالات الاختبار ، فهي
16:40تحتوي أيضاً على عنوان
16:42عام ، وهو يمثل فكرة
16:44الاختبار أو
16:45السيناريو . حسناً . ثم
16:51لديهم وصف قصير وموجز
16:53عما يدور حوله
16:55الاختبار ، وما الذي
16:57يريدون اختباره . حسناً
17:02، حظر المستخدم بعد
17:04محاولتي دخول فاشلتين .
17:07ثم تأتي الشروط
17:08المسبقة ، وهنا يواجه
17:10فريقي أكبر المشاكل
17:12لأنني لا أعرف لماذا
17:13يجدون صعوبة كبيرة في
17:15فهم ما هي الشروط
17:17المسبقة . المتطلبات
17:20المسبقة هي أمور يجب
17:22أن تحدث قبل أن نتمكن
17:23من إجراء هذا الاختبار
17:25. وفي الواقع ، ليست
17:27شيئاً موجوداً في جميع
17:28حالات الاختبار . قد
17:30توجد حالة اختبار بدون
17:32متطلبات مسبقة . يتم
17:34وضع المتطلبات
17:35المسبقة فقط إذا لزم
17:36الأمر عند حدوث حدث ما
17:38قبل تنفيذ حالة
17:40الاختبار هذه . على
17:42سبيل المثال ، إذا كنت
17:44سأقوم بإضافة مستخدم ،
17:46فليس لدي شرط مسبق سوى
17:48الدخول إلى النظام ،
17:50ولكن بما أن الدخول
17:52إلى النظام هو شيء يجب
17:54أن أفعله دائماً ، فلا
17:56يوجد شرط مسبق . في هذه
18:01الحالة يوجد شرط مسبق ،
18:03لأنني إذا كنت أختبر
18:05شيئاً يفشل بعد
18:06محاولتين فاشلتين في
18:08المحاولة الثالثة ،
18:10فيجب أن أكون قد حفظت
18:12مسبقاً طريقة الفشل
18:14مرتين ، لأنها ليست
18:16شيئاً أمتلكه كشرط
18:17مسبق في كل الحالات .
18:22هذا مهم بالفعل . ومن
18:25ناحية أخرى ، من المهم
18:26عدم إجبارها على
18:28الظهور . حسناً . بمعنى ،
18:30إذا كان هناك شيء
18:32أحتاج لاختباره ،
18:33سأقوم بوضعه . إذا لم
18:35يكن كذلك ، فبيانات
18:36الاختبار ليست ضرورية
18:38بعد ذلك . أي ، ما الذي
18:40سأقوم باختباره ، وما
18:42هي البيانات التي
18:43سأستخدمها لتنفيذ هذه
18:45الاختبارات بشكل جيد .
18:49إيه ، أحياناً يكون غير
18:54ضروري ، وأحياناً يكون
18:56تكراراً . حسناً ، على
18:57سبيل المثال ، إذا قيل
18:58لي : " يجب عليك تسجيل
19:00الدخول كمسؤول " ، فمن
19:01الجيد أن يكون لديك
19:02ذلك كبيانات اختبار .
19:04الأمر نفسه ينطبق
19:05دائماً على بيانات
19:07الاختبار ، فالخطوات ،
19:08الخطوات مهمة جداً ،
19:10أليس كذلك ؟ لأنها هي
19:12التي ستخبرني كيف يجب
19:13أن أنفذ حالة الاختبار
19:15: الدخول إلى التطبيق ،
19:17إدخال بيانات تسجيل
19:19الدخول ، الضغط على
19:20موافق ، والتحقق من
19:22سلوك النظام . لاحظوا
19:23أنني أعبر عنها هنا
19:25بصيغة المصدر فقط ،
19:26أليس كذلك ؟ بشكل عام ،
19:28ليس من الممارسات
19:30الجيدة التعبير عنها
19:31بصيغة المصدر . حسناً ،
19:33القيام بهذا الشيء ،
19:35القيام بذلك الشيء
19:36الآخر ، أليس كذلك ؟
19:38وحسناً ، خطوة بخطوة .
19:41يجب أن تدركوا في حالة
19:43الاختبار هذه أنكم لن
19:45تكونوا أنتم من ينفذ
19:46هذا الاختبار . حسناً ،
19:49إذاً ، هل يتعين على
19:50شخص آخر فهم هذه
19:52الخطوة ؟ الخطوة التي
19:54ستنشئونها إذا كنتم
19:55تستطيعون الدخول إلى
19:57التطبيق ، إدخال
19:58بيانات تسجيل الدخول ،
20:00والتحقق من سلوك
20:01النظام . حسناً ، ستكون
20:03الخطوة الأخيرة هناك
20:04هي التحقق من هذا
20:06الشيء أو ذاك ، لأننا
20:08نستطيع القيام بهذه
20:09السلسلة من الخطوات
20:11للتحقق من شيء ما . إذاً
20:13، بشكل عام ، تكون تلك
20:15الخطوة الأخيرة هي
20:17التحقق من شيء آخر . إيه
20:21، ربما يمكن أن تحتوي
20:25حالات الاختبار على
20:26شرط مسبق يتمثل في
20:28تنفيذ حالة اختبار
20:29أخرى من قبل . لا تكرروا
20:32الأمر كثيراً ، لقد
20:33أخبرتكم بالخطوات
20:35بالفعل ، هذا هو مفهوم
20:37النمطية ، ليس من
20:39المفترض أن تقوم كل
20:41حالة اختبار بشيء محدد
20:43. حسناً . آه ، نعم ، يجب
20:48أن أرى ماريو . سؤال يا
20:54أستاذ . آه ، حالات
20:56الاستخدام متشابهة
20:57جداً ، يعني ،
20:59>> دائماً ستكون هناك شرط
21:01مسبق والنتيجة .
21:02>> نعم ، حالات الاستخدام
21:04هي في الواقع حالات
21:05استخدام . حالات
21:07الاختبار هي للاختبار .
21:08حالة الاستخدام هي
21:10لفهم ما يريد العمل
21:11القيام به . هنا ، في
21:13حالة الاستخدام ، لن
21:15يكون لديك الخطوات ،
21:16والنتيجة المحققة ،
21:18وبيانات الاختبار .
21:20>> واضح ، واضح . لكن إذا
21:22اتبعوا بشكل أو بآخر 1.1
21:24، 1.2 ، مثل
21:25السيناريوهات البديلة
21:28، فهي متشابهة جداً
21:30ولهذا السبب ،
21:31>> أي أن النتائج تشبه
21:33إلى حد كبير الشرط
21:34اللاحق
21:35>> لما يجب أن يحدث . ولهذا
21:37السبب قلنا ذلك .
21:39>> حسناً ، ربما نعم . إذا
21:41كنت تراها هكذا ، فنعم ،
21:42لكن انتبه لأنها ليست
21:43هي نفسها ،
21:44>> أليس كذلك ؟ لا ،
21:46>> يعني ، هي أشياء مختلفة
21:47، أليس كذلك ؟ أي أن
21:49شيئاً هو حالة
21:49الاستخدام . حالة
21:51الاستخدام هنا ستكون
21:52قصة المستخدم . أنت
21:56تقوم هنا بسيناريوهات
21:57الاختبار لقصة
21:59المستخدم .
22:01>> حسناً ،
22:02>> ممتاز .
22:03>> تسميتها حالة استخدام .
22:05حسناً ، نعم ، كان ذلك
22:07في السابق ، لكن الآن
22:09يتم التركيز كثيراً ،
22:11ولهذا أقول لكم يا
22:13شباب ، على قصة
22:14المستخدم . حسناً ،
22:16>> شكراً . آه ، مثال حالة
22:21الاختبار هذا ، ما
22:23يقوله هو أن النظام
22:25يحظر المستخدم ، أليس
22:27كذلك ؟ لنرى ، هذا ليس
22:30شيئاً يستدعي القلق .
22:32حسناً ، كل شخص لديه
22:34طريقته . أرى أن هذا
22:36صحيح ، ولكن إذا فعلتم
22:38ذلك بطريقة أخرى ، فلن
22:40يكون ذلك خطأ . ماذا
22:41يحدث ؟ ما الذي يمكن أن
22:44يحدث أيضاً ؟ أن
22:46الكثيرين يضعون في كل
22:47خطوة النتيجة
22:48المتوقعة وفي النهاية
22:50النتيجة النهائية . هذا
22:53ليس سيئاً تماماً .
22:56حسناً ، إذا لم تكن
22:57هناك في الخطوات
22:59السابقة تحققات أخرى
23:01أقوم بها لحالة
23:02الاختبار نفسها . لماذا
23:05أقول هذا ؟ لأن هدف هذا
23:07الاختبار هو التحقق من
23:09الأشياء الوسيطة .
23:11حسناً ، أي أن الأشياء
23:13الوسيطة يجب أن يكون
23:15لها اختباراتها
23:16الخاصة لأن كل حالة
23:18اختبار يجب أن تكون
23:20مستقلة . حسناً ، بهذا
23:23المعنى لاختبار شيء
23:25معين ، إذا كانت كل
23:26حالات الاختبار تختبر
23:28شيئاً واحداً فقط .
23:30لاحظوا أنه يقول هنا
23:32إن النظام يجب أن يحظر
23:34المستخدم ويرسل
23:35تنبيهاً للمسؤول ،
23:36لأنه في هذه الخطوة
23:38الرابعة تحديداً تحدث
23:40أمور . إذن ، حسناً ،
23:44لنجرب هذين الأمرين ،
23:46لكنه ليس طلباً جديداً
23:48أقوم به في تطبيق
23:50للطلبات . سأتحقق من
23:52قبول البطاقة ، وأن
23:54العنوان قد حُفظ بشكل
23:56صحيح ، وأن بإمكاني
23:57اختيار عنوان مختلف عن
23:59ذلك الذي أدخلته عند
24:01تسجيل دخولي . لا أعرف
24:03لماذا . فقط لأقول لكم
24:05شيئاً ما . حسناً . أي أن
24:07كل اختبار يهدف إلى
24:09شيء محدد . حسناً ، قد
24:11تحتوي الخطوات
24:12السابقة على عمليات
24:14تحقق ونتائج متوقعة
24:16مسبقة ، نعم ، لكن ما
24:18يهم في هذا الاختبار
24:20هو ما سيحدث في الخطوة
24:22الرابعة . حسناً ، هذه
24:25الخطوة تحديداً لها
24:27حالة تكون عادةً "
24:29معلقة " ، حسناً ، عندما
24:31لا يتم تنفيذها بعد ،
24:33وعندما يتم تنفيذها ،
24:35حالة حالة الاختبار
24:37هذه ستكون ، سنرى ذلك
24:39لاحقاً عندما نطلع على
24:42دورة حياة الأخطاء ( Bugs )
24:46. حسناً ، وبعد ذلك
24:49عندما نرى حالة اختبار
24:51كاملة ، سأعطيكم في
24:53الفيديوهات ، في اليوم
24:55الذي أرسل لكم فيه
24:57جميع الفيديوهات ،
24:59ستتمكنون من رؤية
25:00كيفية القيام بذلك
25:02خطوة بخطوة . بالانتقال
25:07إلى التالي ، ما هي
25:09الحقول التي تتضمنها
25:10عادةً حالات الاختبار
25:12؟ حسناً ، هناك الكثير
25:14منها . حسناً ، كما قلت
25:17لكم ، هذا يعتمد أيضاً
25:19على الأداة التي
25:20ستستخدمونها . حسناً ،
25:23لكن على سبيل المثال ،
25:25المعرف ( ID ) ، العنوان ،
25:26الوصف ، نوع الاختبار ،
25:28حسناً ، ما نوع
25:29الاختبار الذي سنقوم
25:31به ؟ الشروط المسبقة
25:33التي كنت أتحدث عنها
25:35للتو ، بيانات الإدخال
25:37، ما هي البيانات التي
25:38ستحتاجونها ، الخطوات ،
25:40خطوة بخطوة ، كيف ستكون
25:42الخطوات بالكامل ،
25:44حسناً ، لتنفيذ كل واحد
25:46من هذه الاختبارات ، و
25:49الشروط اللاحقة ،
25:50والمرفقات . لماذا ؟
25:52لأنه سيكون لدينا
25:53أيضاً مرفقات ، وسيكون
25:55هناك مصمم للاختبار
25:56تلقائياً إذا كان
25:57لديكم برنامج خاص ، على
25:59سبيل المثال سيتم
26:00تصميمها بواسطة الشخص
26:02الموكل إليه " المُسند
26:03إليه " . ماذا يعني "
26:05المُسند إليه " ؟
26:06المُسند إليه ، على
26:08سبيل المثال ، قد يكون
26:09مطوراً ، يقوم المطور
26:11بتصحيحها ثم يعيدها
26:13إلينا . الأولوية التي
26:14سنمنحها ، النتيجة
26:16المتوقعة ، تاريخ
26:17الإنشاء ، هذا يتم
26:18تلقائياً ، التعليقات
26:20في الأسفل التي قد
26:21تحتوي على متطلبات
26:22مرتبطة ، خطة الاختبار
26:24المرتبطة ، والتي يتم
26:26ربطها أحياناً ، سنرى
26:27ذلك لاحقاً في
26:28الفيديوهات . مجموعة
26:30الاختبار ، ما هي
26:31الإصدارات ؟ ما هي
26:32الكلمات الخاصة وما هي
26:34التبعيات التي ستكون
26:36موجودة ؟ إذن ، كل هذا
26:39سيشكل جميع الحقول
26:41التي قد يحتوي عليها
26:43حالة الاختبار . حسناً ،
26:46إنها كثيرة ، ولكننا
26:48سنراها لاحقاً بشكل
26:50أكثر تفصيلاً . لذا ،
26:54تمرين جيد يمكنكم
26:56التفكير فيه خطوة
26:58بخطوة ، وهو أمر قد
26:59يكون صعباً لمن بدأوا
27:01للتو في عالم الاختبار
27:03، هو أخذ أشياء يومية
27:05كما أخبرتكم ، على سبيل
27:07المثال ، المهمة
27:09الأولى ، ماذا ستفعلون
27:11لتحضير كوب من الشاي ؟
27:13وانتبهوا ، لا توجد
27:14طريقة واحدة فقط
27:15لتحضير الشاي . لماذا ؟
27:17لأن كل شخص يمكنه
27:19اتباع خطواته الخاصة ،
27:21لا أدري ، تحضيره في
27:23غلاية كهربائية ، أو في
27:25إبريق ، أو ربما في
27:26الميكروويف ، لذا قد
27:28يختلف الأمر . حسناً ،
27:30كيف سنقوم بذلك ؟ حسناً
27:34، يبدأ المرء بطرح كل
27:36هذه الأسئلة التي يجب
27:38تحديدها مسبقاً ،
27:40وبمجرد تحديدها ، أي
27:42بعد أن تتوفر لدينا
27:44الإجابات ، يمكننا
27:45البدء في تلك الخطوات ؛
27:47وهنا أدعوكم للقيام
27:49بخطوات عملية للأشياء
27:51التي تكتشفونها أثناء
27:53المضي قدماً . لنقل ، ما
27:57هي الخطوات المتبعة
27:59لاستقلال الحافلة ؟ ما
28:00هي الخطوات المتبعة
28:02للاستحمام ؟ ما هي
28:03الخطوات المتبعة
28:04لتعبئة الوقود ؟ لذا ،
28:08بالتفكير قليلاً في
28:09خطوات تحضير الشاي ، ما
28:11هي تصميمات الاختبار
28:13التي تخطر ببالكم هنا ؟
28:18دعوني أسألكم ، ما هي
28:20تصميمات حالات
28:21الاختبار التي يمكنكم
28:23إعدادها ؟ أن يكون
28:28الماء ساخناً .
28:31>> ماذا أيضاً ؟
28:40>> آه ، وجود حد لتحديد ما
28:42إذا كان الكوب ممتلئاً
28:43أم فارغاً حتى لا نملأ
28:45كوباً ممتلئاً بالفعل .
28:49>> ماذا أيضاً ؟ أن يحتوي
28:56إبريق الشاي على الماء
28:58.
28:59>> حسناً ، إذن هناك
29:02الكثير . حسناً ، هذا ما
29:04يسمى بالتفكير
29:06التحليلي . يجب عليكم
29:07النزول للميدان بهذا
29:09التفكير ، إضافة السكر
29:11، إخراج كيس الشاي ،
29:12التقليب . قد تكون هذه
29:14إحدى الخيارات ، وقد
29:15تكون هناك خيارات
29:16متعددة . قد يكونون
29:17وضعوا السكر ، أو ربما
29:19وضعوا التحلية ، أو
29:20أشياء أخرى . إذن ، هناك
29:22الكثير من الأمور .
29:24حسناً ، مثال آخر .
29:27حسناً ، مثال الضوء .
29:29حسناً . أي ، ما الذي قد
29:31يخطر ببالكم ؟ على
29:33الرغم من أننا تحدثنا
29:34عن هذا من قبل ، لكن
29:35ماذا قد يخطر ببالكم
29:37أنتم ؟
29:38>> أولاً ، وجود الكهرباء .
29:40>> حسناً .
29:41>> أن يعمل مفتاح التشغيل
29:43.
29:43>> أن يعمل المفتاح .
29:45>> أن يكون هناك مصباح . أن
29:48يعمل المصباح .
29:50>> حسناً ، هذا ما أحتاج
29:52إلى تحقيقه منكم .
29:54حسناً ، أن تبدأوا في
29:56التفكير في ذلك . حسناً
29:58، أي أنه في اليوم الذي
30:00أعرض فيه عليكم قصة ،
30:02إذا كنتم تعملون في
30:03اختبار الجودة ،
30:04فلتذهبوا وتقولوا : "
30:06مهلاً ، هذا موجود ،
30:07يمكنني القيام به " .
30:09حسناً . إذن ، إليكم
30:13تمريناً آخر ، ذلك الذي
30:16رأيناه عن المثلثات ،
30:18حسناً ؟ حسناً ، لا أعرف
30:21، تخيلوا أن لديكم
30:23حالة اختبار ، حسناً ، X
30:26، لأن المعرف ( ID ) عادة
30:28ما يوضع تلقائياً كـ X
30:30كما أخبرتكم . حسناً ،
30:32لا أعرف ، العنوان ،
30:34سأعطيكم إياه أنا .
30:35التحقق من مثلث متساوي
30:37الأضلاع . حسناً ، ما هي
30:39الشرط المسبق ؟ الشرط
30:40المسبق لهذا ، لا يوجد .
30:42ليس لدي شرط مسبق لهذه
30:44الحالة يا شباب . ما هي
30:46بيانات الاختبار التي
30:47ستكون ؟ حسناً ، يمكنني
30:48الحصول على الضلع
30:50الأول ، لا أعرف ، الضلع
30:51الثاني يساوي الضلع
30:52الثالث . يمكنني جعل
30:54هذا مساوياً لثلاثة
30:56وجعل الضلع الأول
30:57مساوياً للضلع الثالث
30:59وببساطة أقول أن
31:00الثلاثة متساوية .
31:02حسناً . ما هي الخطوات
31:04التفصيلية ؟ حسناً ، لا
31:06أعرف ، الدخول إلى
31:07التطبيق ، إكمال الضلع
31:08الأول ، إكمال الضلع
31:10الثاني ، إكمال الضلع
31:11الثالث . إذا كانت
31:12القيم موجودة مسبقاً
31:14في حالة الاختبار ،
31:15فسيكفي النقر على زر
31:17التحقق ، حسناً ؟ وأن
31:18يخبرني ما هي النتيجة ،
31:20أي نوع من المثلثات هو .
31:22حسناً ، هذا سيكون بشكل
31:25عام . حسناً ، هذه ستكون
31:26حالة النجاح من
31:28البداية إلى النهاية .
31:30حسناً ، إذن يمكننا
31:32التحدث عما هي
31:33الممارسات الجيدة
31:35لتصميم حالات
31:36الاختبار . العديد من
31:38الشركات لديها بعض
31:39الاتفاقيات لإجراء
31:40حالات الاختبار . حسناً
31:42، ولكن كيف نضع لها
31:43عنواناً ؟ حسناً ، نضع
31:45رقم قصة المستخدم ،
31:46شرطة ، الوظيفة ، شرطة ،
31:48التحقق الذي يجب أن
31:49نقوم به . كل شركة لديها
31:51اتفاقياتها الخاصة .
31:53حسناً . إذن ، افترض أنك
31:56لست المتلقي ، وهذا ما
31:58كنت أقوله عندما كنت
32:00أخبركم للتو ، حسناً ،
32:02يجب أن نكون واضحين في
32:04الخطوات التي نضيفها
32:06لأنه ليس دائماً نحن
32:08من سيقوم بتنفيذها .
32:11أحياناً نعم ،
32:12وأحياناً لا . حسناً ،
32:16إذن النقطة الثالثة
32:17التي تقول توثيق ما تم
32:20اختباره ، ولكن ليس
32:21الموصوف . ما الذي يحدث
32:24عندما أكون مع
32:25المواصفات في قصة
32:26مستخدم ؟ أبدأ في
32:28التفكير في أفكار
32:29الاختبار التي عملنا
32:30عليها بالفعل . تخطر
32:32ببالي بعض الأفكار ،
32:33ولكن عندما تظهر في
32:35التطبيق تتغير الأمور
32:36، وحينها يجب أن نبدأ
32:38في إعادة الصياغة .
32:40حسناً ، ليس الأمر أننا
32:41مختبرو برمجيات سيئون .
32:43حسناً ، هذا ليس صحيحاً
32:45. حسناً ، من الطبيعي
32:47جداً أن يحدث ذلك يا
32:48شباب . حسناً ، ستدركون
32:50أن الأمر يعتمد قليلاً
32:52على خيال كل فرد ،
32:53وقدرته على التجريد ،
32:54ومدى تعقيد النظام ،
32:56فهناك الكثير من
32:57الأمور . حسناً ، إذاً
33:01وثقوا الحالات التي
33:02حدثت للاختبار خلال
33:04تلك المرحلة مع النظام
33:06. احتفظوا بأدلة حالات
33:10الاختبار ، تلك التي
33:12تكون شاملة من البداية
33:14إلى النهاية ، يجب حفظ
33:16الأدلة . النقطة
33:17الرابعة ، تحديث حالات
33:19الاختبار . تتغير
33:21المواصفات ، وتتغير
33:23المتطلبات . إذاً ، يجب
33:26تحديث حالة الاختبار ،
33:28لأنه عند إجراء اختبار
33:30تراجع لاحقاً ، إذا
33:32كانت الحالة قديمة ،
33:34فلن نعرف النتيجة
33:36المتوقعة الصحيحة أو
33:37الخطوات الصحيحة
33:39لأنها أصبحت غير محدثة
33:41. هذا له تأثير كبير
33:44جداً ، بل هائل ، عندما
33:46تكون حالة الاختبار
33:48مؤتمتة ، فقد تظهر
33:49نتائج ناجحة وهي في
33:51الواقع ليست كذلك .
33:53حسناً ، لذا يجب توخي
33:55الحذر الشديد . حسناً ،
34:00عندما تكون حالة
34:01الاختبار مؤتمتة
34:03وتتغير ، مثلاً تمت
34:05إضافة خطوة جديدة ، يجب
34:07تعديل الاختبار
34:08المؤتمت وإلا فسيكون
34:10خاطئاً . حسناً . إيه ،
34:17حسناً ، رأينا هذا في
34:19الدرس الماضي . حسناً ،
34:21إذاً هنا ستختبرون
34:22الكثير من الأشياء .
34:24حسناً ، في الدرس
34:26الماضي أخبرتموني ،
34:27حسناً ، اختبر هذا ،
34:29واختبر ذاك . سابقاً
34:31كان هناك عملي لهذا ،
34:33لكن لاحقاً توقفت عن
34:36استخدامه ، قمت
34:37بتحديثه في العملي ، في
34:39التمرين الثاني الذي
34:41سأعطيكم إياه الآن .
34:44إيه ، لكننا رأينا هذا
34:46بشكل أو بآخر . إذاً ،
34:49لإنهاء الحديث قليلاً
34:51عن بيانات الاختبار ،
34:53غالباً عند تنفيذ
34:55اختبار نحتاج إلى
34:56بيانات معينة لنتمكن
34:58من تنفيذه . حسناً ،
35:01افترضوا أنني يجب أن
35:02أسجل الدخول بملف
35:04تعريف مدير ؛ إذاً
35:06بياناتي ستكون
35:07المستخدم الذي لديه
35:09هذا الدور . وإذا كنت
35:11أختبر نظاماً لا يسمح
35:12لي بإدخال نفس
35:13المستخدم مرتين ، يجب
35:15أن أعرف المستخدمين
35:17الموجودين في قاعدة
35:19البيانات لأتمكن من
35:20إنشاء مستخدم جديد .
35:23إذاً ، في هذا السياق ،
35:24غالباً ما يجب تحديد
35:26بيانات الاختبار ، وفي
35:28أحيان أخرى يجب
35:30إنشاؤها . على سبيل
35:32المثال ، إذا كنا نختبر
35:34نظام تقارير ، فمن
35:35الضروري أن أكون على
35:37دراية جيدة بالبيانات
35:39، وإلا فسأكون في مأزق
35:41كبير . ولماذا من المهم
35:42الحديث عن بيانات
35:44الاختبار ؟ لأننا
35:45ركزنا حتى الآن على
35:47جودة البرمجيات ، لكن
35:48هذا البرنامج يعتمد
35:50على البيانات ، وإذا لم
35:51تكن تلك البيانات ذات
35:53جودة جيدة ، فمن
35:54المحتمل أن نرتكب
35:56أخطاء في الاختبارات
35:57ونعمل بشكل خاطئ . لذا ،
36:00مثلما من المهم الحصول
36:02على بيانات اختبار
36:03جيدة ، من المهم أيضاً
36:05التحكم في بيانات
36:07الاختبار تلك . حسناً ،
36:09هذا أمر في غاية
36:10الأهمية . حسناً ، لأنه
36:12بخلاف ذلك ستكون
36:13الاختبارات بلا أي
36:15فائدة . إذن ، لماذا من
36:17المهم وجود تحكم ؟
36:18حسناً ، لكي أعرف ما
36:20إذا كانت النتائج التي
36:22أحصل عليها صحيحة أم
36:23لا . إذن ، بيانات
36:24الاختبار مهمة للغاية
36:26، حتى لو لم نمنحها
36:28دائماً الأهمية التي
36:29تستحقها . حسناً ،
36:36لننتقل إلى مرحلة
36:37التنفيذ في
36:38الاختبارات ، وهذه
36:39المرحلة بشكل عام تبدو
36:41منطقية أكثر عند إجراء
36:42الاختبارات المؤتمتة .
36:44الحقيقة هي أنه عند
36:46إجراء اختبارات يدوية
36:47، لا تولي العديد من
36:49الجهات اهتماماً
36:50كافياً لهذه المرحلة .
36:51سنرى أنها تُنفذ أيضاً
36:53، لكن في الحقيقة لا
36:55تستحق هذه المرحلة
36:56تحديداً مخططاً
36:58بيانياً للحديث عن هذا
36:59النوع من الأنشطة
37:01اليدوية . حسناً ، ماذا
37:03يعني هذا ؟ يعني أنها
37:05تُنفذ . حسناً ، هذا
37:07يعني إنشاء نص برمجي
37:09خطوة بخطوة . هذه
37:10الاختبارات اليدوية
37:12نقوم بها خطوة بخطوة
37:13لكتابة حقول حالات
37:15الاختبار . بمعنى أنها
37:17ليست ذات أهمية كبيرة .
37:19حسناً ، لكن عندما يكون
37:20الاختبار مؤتمتاً ،
37:22فإنه يتطلب مجموعة
37:23أخرى من الاعتبارات .
37:25حسناً ، على سبيل
37:26المثال ، عند الأتمتة ،
37:28غالباً ما يكون من
37:30المفيد التفكير في
37:31تسلسل هرمي لمكونات
37:33النصوص البرمجية
37:34لمعرفة ما إذا كان
37:36بإمكاننا إعادة
37:37استخدام شيء ما ، وبناء
37:39إطار العمل الخاص بنا ،
37:41وأتمتة الاختبارات ،
37:42أي برمجتها لتوليد ذلك
37:44النص ، ذلك الكود . لذا ،
37:46في هذه المرحلة ، ما
37:47يجب القيام به أيضاً
37:49هو تحديد كيفية
37:50التقسيم إلى وحدات ،
37:51وكيفية ترتيب
37:52المكونات هرمياً ،
37:53والأنماط التي سيتم
37:55تطبيقها ، وما إلى ذلك .
37:56لذا ، بمجرد التفكير في
37:58كل هذا ، ما سأقوم به هو
38:00كتابة الكود أو ذلك
38:02النص البرمجي على
38:03الأقل ، لكي أتمكن من
38:05إنشائه . كيف يتم
38:07إنشاؤه ؟ حسناً ،
38:09اعتماداً على
38:10التقنيات المستخدمة
38:11والأدوات الموظفة ،
38:13هناك بشكل عام ثلاث
38:14طرق لإنشائه . إحداها
38:16هي البرمجة من الصفر .
38:18أستخدم إطار العمل
38:19الخاص بي ، وسنرى ذلك
38:20لاحقاً في الأتمتة ،
38:22وأبدأ في برمجة جميع
38:23اختباراتي . حسناً ،
38:25يمكنني القيام بذلك ،
38:26على سبيل المثال ،
38:27باستخدام Selenium Web Driver .
38:29حسناً ، هناك تطبيقات
38:30أخرى تعتمد على
38:32التسجيل والتشغيل ( Record
38:33and Play ) لا تعجبني
38:35شخصياً . حسناً ، أنا
38:36أقوم بالتسجيل وهي
38:38تقوم بما تفعل . حسناً ،
38:41لذا أنا لست من محبي
38:43ذلك يا رفاق . أنا
38:46شخصياً لا تعجبني
38:47تطبيقات التسجيل
38:48والتشغيل . لماذا
38:49التسجيل والتشغيل ؟
38:51سنرى ذلك لاحقاً في
38:52الأتمتة . أقوم بالنقر
38:54هنا وهناك وهي تسجل لي
38:55كل الخطوات . أضغط على "
38:57تشغيل " فتقوم بإعادة
38:58تنفيذها . المشكلة هي
39:00أنه إذا تمت إضافة حقل
39:01جديد يجب النقر عليه ،
39:03فلن يعود التسجيل
39:04مفيداً وعلينا إعادته
39:05بالكامل . إذاً ، هي لا
39:07تنفع . حسناً ، سنرى ذلك
39:11لاحقاً في جزء الأتمتة
39:13. حسناً . إمم ، هناك
39:18أدوات أيضاً مثل
39:20كاتالون ( Catalon ) ، حسناً ،
39:22كاتالون ستوديو ( Catalon
39:24Studio ) ، وهي أداة تسمح
39:25لنا بالتسجيل
39:27والتشغيل كما أخبرتكم .
39:29إذاً ، دعونا ننتقل
39:30للحديث عن المرحلة
39:31الأخيرة من تنفيذ
39:33الاختبارات حيث يتدخل
39:34موظف ضمان الجودة ( QA ) .
39:36حسناً . وإذا كانت
39:38الاختبارات مؤتمتة ،
39:40فمن الواضح أنها تُنفذ
39:42تلقائياً . حسناً ، قبل
39:44الحديث عن مرحلة تنفيذ
39:46الاختبارات بحد ذاتها
39:47، أول شيء يجب علينا
39:49فعله هو التحقق من
39:50استقرار الإصدار ( Build ) ،
39:52حسناً ؟ أي التحقق مما
39:54سنختبره عندما نشير
39:56إلى الإصدار ( Build ) . لنقل
39:58إنه نسخة البرنامج
40:00التي سنقوم باختبارها .
40:02لذا ، قبل البدء في
40:03إجراء الاختبارات على
40:05هذا البرنامج ، يجب
40:07علينا التحقق من
40:08استقراره . هذا لا يعني
40:10إجراء اختبار سطحي ، بل
40:12التأكد من أن كل شيء
40:13يعمل بشكل مقبول نوعاً
40:15ما ، وأنه عند الضغط
40:17على زر لا ينهار كل شيء
40:19، أي ألا توجد أخطاء
40:20فادحة . حسناً . لماذا ؟
40:23لأنه إذا لم نفعل ذلك ،
40:25فإن أي اختبار نجريه
40:27لاحقاً لن يكون
40:29موثوقاً ؛ لأننا لن
40:30نعرف ما إذا كان يفشل
40:32بسبب خلل فعلي ، أي
40:34لأننا وجدنا عيباً ،
40:36أليس كذلك ؟ لذا ، يجب
40:38التحقق . إذا نجحت هذه
40:40الاختبارات الأساسية ،
40:41فماذا سنفعل بعد ذلك ؟
40:43حسناً ، هو تنفيذ
40:45الاختبارات الفعلية .
40:47حسناً . وهنا الدور
40:49المسؤول عن هذا هو
40:51موظف ضمان الجودة ( QA ) .
40:54حسناً ، هو من يتولى
40:55هذا الدور وهو دور
40:57تنفيذ الاختبارات .
41:00إذاً ، هذه ستكون
41:02مسؤوليته ، والحقيقة
41:04أنه في هذا الصدد يجب
41:05أن يتمتع موظف ضمان
41:07الجودة ببعض الاهتمام
41:09بالتفاصيل ، وقدرة
41:11معينة على متابعة تلك
41:13الخطوات ، وذلك الفهم
41:15والتحليل وما إلى ذلك .
41:17لكن الأمر ليس مبهراً
41:18لدرجة التساؤل : كم من
41:20المهارات يحتاجها
41:21موظف ضمان الجودة ؟
41:22حسناً ، في هذا
41:23السيناريو ، سنتحدث
41:25لاحقاً قليلاً عن
41:26الأدوار في هذا الأمر .
41:29إذن ، بالعودة قليلاً
41:35إلى حالات الاختبار
41:37التي رأيناها خلال
41:38مرحلة التصميم ، حسناً
41:40، هل سنتبع هذه
41:43الخطوات ؟ سنضع شرطاً
41:46مسبقاً أو نتأكد من
41:47استيفاء الشروط
41:49المسبقة لمتابعة هذه
41:50الخطوات . ويخبرنا
41:53النظام ، حالة
41:54الاختبار ، يخبرنا أن
41:56هذه هي النتيجة
41:57المتوقعة . حسناً ، لنرَ
41:59ما هي النتائج التي تم
42:01الحصول عليها ، وفي تلك
42:03اللحظة نقوم بتحديث
42:04حالة حالة الاختبار
42:06تلك . حسناً . إيه ، إذن
42:11النتيجة تطابق
42:12النتيجة التي تم
42:13الحصول عليها . نعم .
42:15حسناً ، إذن لنضع ما
42:17حدث . النتيجة المتوقعة
42:18، إيه ، تطابق النتيجة ،
42:20عفواً ، النتيجة
42:21المتوقعة تطابق
42:22النتيجة التي تم
42:23الحصول عليها . لا ، لقد
42:24أعطتني شيئاً مختلفاً .
42:26حسناً ، إذن لنضع أنها
42:28فشلت . حسناً ، لنفترض
42:30أنها فشلت . إذن ،
42:31بالإضافة إلى وضع أنها
42:33فشلت ، يجب علينا فتح
42:35تذكرة . حسناً ، تلك
42:37التذكرة ستكون الخلل
42:38أو الخطأ . حسناً ،
42:40سنتحدث عن هذا لاحقاً .
42:42كنت أخبركم ما هي
42:43الحقول التي كانت
42:44تحتوي عليها حالة
42:45الاختبار . الآن ، ماذا
42:47يحدث عند تنفيذ حالة
42:49الاختبار ؟ حسناً ،
42:50بشكل عام نقوم بملء
42:52حقول إضافية ، على سبيل
42:53المثال ، البيانات
42:55التي نفذناها بها ،
42:56والتي ربما تختلف عما
42:58كانت تقوله حالة
42:59الاختبار ، اضطررنا
43:01لتغييرها ، لأنها ليست
43:02هي نفسها . حدث شيء ما .
43:05تظهر الخطوات هناك لأن
43:07بعض الأنظمة أكثر
43:09تطوراً . يمكن للمرء أن
43:11يحدد ما حدث ، إذا لم
43:13ينجح ، أو إذا فشل . لذا ،
43:15يجب علينا تحديث ذلك
43:16الجزء . تسمح لنا
43:18النتائج التي تم
43:19الحصول عليها بكتابة
43:20تعليق حول النتائج
43:22التي توصلنا إليها .
43:23يمكننا إرفاق أدلة ،
43:25سواء نجحت أو فشلت ،
43:26ويتم تسجيل من قام
43:28بتنفيذها ومتى قام
43:30بتنفيذها تلقائياً .
43:31حسناً ، إذا فشلت هذه ،
43:33متى فشلت ، لهذا السبب
43:35لدينا ما يسمى بمتعقب
43:36المشكلات ( issue tracker ) .
43:38يمكن ربط متعقب
43:39المشكلات ذلك بما يسمى
43:41" جيرا " ( Jira ) . حسناً ، إذن
43:44إيه حسناً ، إذن ، فهو
43:54يسمح لنا أيضاً بربط
43:56رمز الخلل . حسناً ، من
43:58الجيد أن يكون هناك
44:00تتبع في حالة الاختبار
44:02هذه والخلل لكي يبقيا
44:03مرتبطين . حسناً ، حالة
44:05حالة الاختبار تلك ،
44:07والخطوات ، وحالات
44:09الفشل تظل معطلة وتظل
44:11معلقة التنفيذ . حسناً ،
44:13يجب كتابة تعليق هناك
44:15حول سبب فشلها . حسناً ،
44:17لكننا سنرى هذا بشكل
44:19أكثر تفصيلاً عندما
44:20نقوم برفع خطأ . وبهذا
44:22يظل السجل بالكامل
44:24مسجلاً . حسناً ، حسناً .
44:28هل لديكم أي أسئلة حتى
44:29الآن يا شباب ؟ لدينا
44:43إذًا نوعان من الجداول
44:44، لنقل جدول الإدخال
44:46الذي يخبرنا بالمعرّف
44:48وكل ما يخص حالة
44:51الاختبار ، وتذكرة
44:52مخرجات لمعرفة ما إذا
44:54كانت ناجحة أم فشلت ،
44:56أليس كذلك ؟ إنهما
45:00شيئان مختلفان . لاحقًا
45:02سنرى مسألة الخطأ .
45:05حسنًا .
45:06>> آه ، لكن إذا نجح الأمر
45:07، هل يجب أيضًا إصدار
45:09تذكرة ؟
45:10>> إذا نجح الأمر فلا
45:11داعي لإصدار تذكرة .
45:12إذا نجح الأمر ، نضع
45:14علامة " موافق " وينتهي
45:15الأمر .
45:16>> حسنًا . لاحقًا ، ولهذا
45:21السبب في الفيديوهات ،
45:23عندما ننتهي ، سأريكم
45:25كيف يتم ذلك . حسنًا .
45:29هناك ستتعلمون كل
45:30النظرية التي أخبركم
45:32بها . للأسبوع المقبل ،
45:35يمكنني أن أريكم حالة
45:37اختبار وخطأ عام نوعًا
45:39ما حتى تأخذوا فكرة عن
45:41كيف يبدو الأمر . حسنًا
45:44، هما شيئان : الأول هو
45:46حالة الاختبار ،
45:47والثاني يتم كإصدار
45:49تذكرة . حسنًا ،
45:56>> جيد ، إليونورا .
46:00>> نعم . بالعودة قليلًا
46:02إلى الوراء ، بخصوص
46:04حالات الاختبار ، لدي
46:06شك مثلًا بشأن مسألة
46:07المثلث متساوي
46:09الأضلاع أو تقديم
46:10الشاي . على سبيل
46:12المثال ، بالنسبة
46:14للمثلث متساوي
46:15الأضلاع ، هل نفترض
46:16مسبقًا أنه مثلث أم
46:17يمكننا السؤال عما إذا
46:19كان مثلثًا أو شكلًا
46:21آخر ؟ كسؤال أول ،
46:24>> انظري ، السيناريو
46:26تضعينه أنتِ . على سبيل
46:28المثال ، ما هي
46:30السيناريوهات
46:31المثالية ؟ مثلًا ، قد
46:33يكون مثلثًا متساوي
46:34الأضلاع ، أو مختلف
46:36الأضلاع ، أو متساوي
46:38الساقين . تلك ستكون
46:40حالات الاختبار
46:41الثلاث الأساسية التي
46:42يجب القيام بها . لماذا
46:44؟ من أجل اختبار
46:45التطبيق .
46:46>> نعم . بعد ذلك ، إذا
46:47انتقلتِ إلى ذلك ،
46:49ستكون تلك هي الحالات
46:50الإيجابية .
46:51>> بالطبع ، الحالات
46:53المثالية ، لنقل .
46:54>> بالضبط ، تسمى حالات
46:55إيجابية وتسمى أيضًا
46:57الحالات السعيدة .
46:58>> هذا صحيح ،
47:00>> لكن هل يمكنني أيضًا
47:01وضع حالات أخرى لا
47:02تكون مثلثًا ؟
47:04>> يجب عليكِ القيام
47:05بحالات أخرى . هل
47:08يمكنني وضع ... لا ، أنتِ
47:10المسؤولة عن جودة
47:12تطبيق المثلث هذا .
47:15>> كل الاحتمالات التي
47:17تخطر ببالي ، حتى لو
47:19كانت غير منطقية ، يجب
47:21أن أدونها .
47:22>> نعم . نعم ، لأنكِ
47:24تتحملين مسؤولية هذا
47:26النظام ، هل تفهمين ؟
47:30حسنًا .
47:30>> يعني أنتِ المسؤولة
47:32التي ستقولين : " انظر ،
47:34هذا يظهر هكذا ، يظهر
47:36بشكل خاطئ ، يظهر بشكل
47:38صحيح " .
47:40>> حسنًا ، حسنًا ، شكرًا
47:43لك .
47:44>> لكن نعم ، أنتم
47:45المسؤولون وعليكم
47:47القيام بذلك . حسنًا ،
47:49يعني ، إذا سألتني يا
47:51ليونورا ، نعم ، عليكِ
47:53القيام بذلك ، إنه
47:54إلزامي لأنه ، على سبيل
47:56المثال ، يمكنني إدخال
47:58ناقص واحد وقد يظهر
48:00خطأ . حسنًا .
48:01>> نعم ، شكرًا .
48:03>> حسنًا ، جيد . حسنًا يا
48:05رفاق ، لننتقل إلى
48:07العملي رقم اثنين ، لأن
48:09الأمور بدأت تصبح
48:10مثيرة للاهتمام . هل
48:12ترونه هناك أم أضعه في
48:14ورقة صغيرة ؟ في ورقة
48:17صغيرة . حسنًا . إذًا ،
48:21ماذا يعني العمل رقم
48:22اثنين ؟ العمل رقم
48:25اثنين لديهم هنا قصة
48:27مستخدم . حسنًا ، تخيلوا
48:30أن لديكم قصة المستخدم
48:32هذه . دفع الفواتير ،
48:34يجب القيام بدفع
48:35الفاتورة يدويًا وأن
48:37نحصل على علامة
48:38التأكيد في النهاية .
48:40وأنا أقول لكم ، "
48:42انظروا ، تظاهروا
48:43بأنني مالك المنتج " .
48:47يجب أن يكون يدويًا .
48:49يجب البحث عن الشركة
48:50باستخدام لوحة مفاتيح
48:52الهاتف . الخدمة هي
48:53التحصيل بدون فاتورة .
48:55إدخال رقم العميل .
48:57أقول لكم هذا حتى أقول
48:59، " حسنًا ، يجب أن يعطي
49:01إيصال الدفع " . " وهنا
49:04أضع لكم الصور " . حسنًا .
49:07أقول لكم ، " انظروا ،
49:08عليكم المجيء إلى هنا " .
49:10" أقول لكم دفع
49:11الفاتورة " . عليكم وضع
49:12الاسم ، وعليكم المجيء
49:14إلى هنا . وعليكم
49:17الإكمال . هنا أعطيكم
49:20بعض الصور وهنا يعطيكم
49:22هذا . حسنًا ؟ بهذه
49:25البساطة . إذًا ، هل
49:28لديكم أي شكوك حول هذا
49:30؟
49:33>> هل لديكم أسئلة لمالك
49:35المنتج ؟
49:39>> وماذا عن المسار
49:40السعيد وماذا يحدث إذا
49:42لم تعمل إحدى الشاشات ؟
49:46بالضبط . حسنًا ، إذًا
49:52هنا ، يعني ، من الأسئلة
49:54كما أرى ، هناك اجتماع
49:56يتم فيه العرض وعليكم
49:58تخيل سيناريوهات
49:59الاختبار . لكن يا رفاق
50:05، كونوا صادقين ، إذا
50:07كنت أسألكم ، هل لديكم
50:09شكوك هنا حول شاشة
50:11الدفع ؟ هل تعرفون
50:13كيفية اختبار هذا ؟
50:16علينا التحقق مما إذا
50:18كان بإمكاننا إدخال
50:19أرقام أو أشياء مختلفة
50:21.
50:22>> حسنًا ، هذا ما أحتاجه
50:24منكم . لأنكم إذا قلتم
50:26لي هنا " كل شيء على ما
50:28يرام " ثم اضطررتم لعمل
50:29السيناريوهات وكانت
50:31لديكم أسئلة . لا يوجد
50:33وقت يا رفاق لإعادة
50:34الاجتماع ، هل تفهمون ؟
50:35يعني ، الوقت قد فات .
50:37مالك المنتج رحل ولديه
50:39أشياء أخرى ليقوم بها .
50:41إذًا ، ماذا أحتاج ؟ هنا
50:43لديكم هذه القصة . الذي
50:45يخص دفع الفاتورة ،
50:46وهنا واحدة لإعادة شحن
50:48رصيد " في " . وبنفس
50:49الطريقة ، يجب أن يكون
50:51الدفع لإعادة الشحن ،
50:52ويجب أن يحتوي على
50:53الزر . حسناً ، سأشرح
50:55لكم هذا وأقول : " يا
50:57شباب ، انظروا ، يجب
50:59عليكم المجيء إلى هنا ،
51:01إدخال رقم العميل ،
51:02والمبلغ ، وأنتم
51:04تتساءلون : حسناً ، ماذا
51:06يحدث هنا ؟ " يعني ، هل
51:08يمكنني إدخال أي أرقام
51:10؟ هذه أزرار . إيه ، ما
51:14الأمر ؟ هل سأتحقق من
51:16صلاحية بطاقة " سوبي " ؟
51:18هل هي غير صالحة ؟
51:20حسناً ، ما الذي أحتاجه
51:22؟ سأرسل لكم الآن عبر
51:24البريد الإلكتروني
51:26هذا الذي أعرضه عليكم .
51:28إذاً ، لدي قصتان .
51:31حسناً ، من هاتين
51:33القصتين أحتاج منكم 10
51:35أسئلة تطرحونها على
51:37مالك المنتج ( PO ) حول
51:39هذا . حسناً . و 10 أسئلة
51:44لما يخص دفع الفاتورة
51:46و 10 أسئلة لإعادة شحن "
51:48في " . هل هذا مفهوم حتى
51:51الآن ؟
51:52>> نعم ، مفهوم .
51:54>> حسناً . وبالإضافة لذلك
51:58، أحتاج منكم صياغة 10
52:00سيناريوهات اختبار
52:01لدفع الفاتورة وإعادة
52:06شحن " سوبي " . حسناً .
52:10سيناريوهات اختبار ،
52:11ما الذي ستختبرونه
52:13بناءً على هذا ؟ حسناً ،
52:1610 سيناريوهات اختبار .
52:19حسناً . يعني ، ماذا
52:20سيكون لديكم ؟ لقد قلت
52:22لكم للتو ، على سبيل
52:24المثال هنا ، يا شباب ،
52:25أمامكم عالم كامل
52:27لتسألوا عنه . رقم
52:28البطاقة ، كيف أتحقق
52:30منه ؟ رمز الأمان ، ما
52:32الذي ... يعني ، عليكم
52:34القيام بـ 10
52:35سيناريوهات اختبار .
52:37حسناً . هل فُهم ما هي ؟
52:42إنها 20 ، لنسمّها 10 و 10 .
52:46في الواقع هي 10 أسئلة
52:48لمالك المنتج عن دفع
52:50الفاتورة و 10 أسئلة
52:52لمالك المنتج عن إعادة
52:54شحن " سوبي " . وبالإضافة
52:58لذلك أحتاج منكم
52:59القيام بـ 10
53:00سيناريوهات أو أفكار
53:02اختبار لهذه القصة .
53:05حسناً ، ما يعادل
53:07إجمالي 20 . هل فُهم ذلك ؟
53:11>> نعم . نعم .
53:12>> 40 تمريناً ، لنقل .
53:15بالضبط ، تماما . حسناً ،
53:21>> حسناً يا أستاذ . عذراً
53:25، لدي سؤال . ربما قلته
53:31من قبل وفاتني ، لكن هل
53:33هناك قالب أو عرض
53:35تقديمي أو تنسيق معين
53:37لتسليم هذه
53:38السيناريوهات ، أم
53:39يمكننا إعدادها
53:41كقائمة في ملف وورد
53:43وترسلوها لي ؟ حسناً ،
53:51>> حسناً .
53:52>> حسناً ، سأرسل البريد
53:54الإلكتروني الآن . يا
53:55شباب ،
53:57>> ابدأوا بالعمل على هذا
53:59وأرسلوه لي . حسناً . يوم
54:03الأربعاء لا توجد
54:05لدينا حصة . حسب ما فهمت
54:08، لديكم
54:09>> اختبار جزئي في
54:10الاتصالات .
54:11>> حسناً ، جاهز . لقد
54:13أرسلتها لكم للتو .
54:15أستاذ ، لدي استفسار .
54:17لعمل حالات الاختبار ،
54:19يحتوي القفل على عدة
54:21سمات وحقول ، سنأخذ
54:23الأكثر أهمية منها ،
54:25أليس كذلك ؟ لنقل
54:30السيناريوهات
54:31الأساسية . جيد ، أي
54:33قوموا بعمل
54:34سيناريوهات نموذجية .
54:37حسناً ،
54:39>> لهذا ، ابدأوا في إعمال
54:41عقولكم يا شباب . الأمر
54:45هكذا . حسناً ، عليكم أن
54:47تبدأوا بالتفكير
54:49جيداً في كل هذا .
54:51>> لا أريد أن أقول لكم
54:52المزيد ، لكن عليكم أن
54:54تبدأوا بالتفكير .
54:55حسناً .
54:56>> ممتاز . أستاذ ، لدي
54:58استفسار . لدينا امتحان
55:00الأسبوع القادم .
55:02>> نعم .
55:02>> سيكون يوم الأربعاء ،
55:04أليس كذلك ؟
55:05>> نعم .
55:06>> هل تذكرنا بكل ما
55:07درسناه وسيدخل في
55:09الامتحان ؟ نعم ،
55:10سنتحدث عن ذلك يوم
55:12الاثنين .
55:13>> آه ، فهمت .
55:14>> أي أن الامتحان يشمل
55:16ما أخذناه حتى اليوم .
55:17اليوم سيكون آخر ما
55:19يدخل في الامتحان ، حتى
55:21ما شرحناه للتو .
55:23>> الأسبوع السابع .
55:25>> بالضبط .
55:26>> علينا تطويره .
55:28>> كيف
55:29>> علينا تطويره ؟ حسناً ،
55:31بالتأكيد علينا
55:32القيام بما نحن على
55:33وشك فعله الآن . سنتحدث
55:35في
55:37>> جيد .
55:38>> حسناً .
55:39>> هذا العمل يمكننا
55:40تسليمه حتى
55:41>> أرسلوه عبر البريد
55:42الإلكتروني . إذا
55:43أنجزتموه ، أرسلوه عبر
55:44البريد . لماذا ؟ لأن
55:45هذا سيساعدكم في
55:46الجانب العملي
55:47للاختبار الجزئي .
55:49>> لدينا وقت حتى يوم
55:50الاثنين .
55:51>> وأنا أنصحكم بإرساله
55:53هذا الأسبوع إن أمكن .
55:56>> حسناً .
55:56>> هذا العمل يستغرق
55:58وقتاً أطول من الأول .
55:59جيد . وإذا كان علي
56:01إخباركم بشيء ، سأرد
56:03عليكم عبر البريد .
56:06>> حسناً .
56:06>> حسناً يا شباب ،
56:08سأترككم الآن . أتمنى
56:10لكم بقية يوم سعيدة .
56:12يوم سعيد . أي شيء ،
56:15أرسلوه لي وسأقوم
56:17بمراجعته . الاثنين
56:20القادم سنتابع موضوع
56:22سنقوم بمراجعة ليوم
56:23الأربعاء ونتحدث عن
56:25الاختبار الجزئي .
56:26>> ممتاز يا أستاذ . شكراً .
56:28>> شكراً جزيلاً . شكراً .
56:30>> حسناً ، شكراً .