اختبار التطبيقات ونشرها - هندسة البرمجيات - ثالث ثانوي
1. هندسة البرمجيات
2. النمذجة الأولية
3. تطوير التطبيقات باستخدام مخترع التطبيقات
4. قابلية الوصول إلى البرمجيات والتضمين الرقمي
184 .4 . قابلية الوصول إلى البرمجيات والتضمين الرّقمي سيتعرف الطالب في هذه الوحدة على عملية اختبار التطبيقات، وسيختبر التطبيق الذي أنشأه في الوحدة السابقة وينشره، وسيتعرف أيضًا على مفهوم الفجوة الرقمية وكيف يمكن استخدام التضمين الرقمي لحلها. وفي الختام سيُطور ميزات قابلية الوصول لتطبيق الهاتف المحمول الذي أنشأه لجعله أكثر شمولا وقابلية لوصول المستخدمين ذوي الاحتياجات الخاصة. أهداف التعلم بنهاية هذه الوحدة سيكون الطالب قادرا على أن : يُميز المراحل والمنهجيات المختلفة لاختبار البرمجيات. > يختبر تطبيقات الهاتف المحمول في مخترع التطبيقات MIT وينشرها. يُحدد المشاكل الناتجة عن الفجوة الرقمية > يتعرَّف على الحلول المتاحة لتعزيز التضمين الرقمي. يُحلِّل ميزات قابليّة الوصول المختلفة للأجهزة وكذلك للبرمجيات. يُعزّز تطبيقات الهاتف المحمول بإضافة ميزات قابلية الوصول. الأدوات > مخترع التطبيقات MIT App Inventor IT ) > بنسل بروجكت (Pencil Project) وزارة التعليم Ministry of Education 2024-1446
الدرس الأول اختبار التطبيقات ونشرها رابط الدرس الرقمي www.ien.edu.sa أهمية اختبار التطبيق The Importance of Application Testing في من الطبيعي أن يشعر المبرمج أو المطوّر عند الانتهاء من تطوير أحد التطبيقات بالثقة التامة بأن تطبيقه يعمل بشكل صحيح. الواقع، قد تحدث كثير من الأخطاء لعدة أسباب، وقد لا تُحقق النسخة الأولى من التطبيق النتائج المرجوة منها. ولذلك يجب عليك التحقق من عمله بشكل صحيح، والعثور على الأخطاء إن وجدت، واكتشاف الأخطاء الأخرى غير المكتشفة سابقًا، والتي تتعلق باستخدام التطبيق بشكل غير صحيح. ما جودة البرمجيات ؟ What is Software Quality جودة البرمجيات هي دراسة التطبيق أو المنتج البرمجي بشكل عام للتحقق مما إذا كان يفي بمواصفات المستخدم، وما إذا كان يعمل بشكل صحيح من كافة النواحي. تهتم جودة البرمجيات بالتحقق من الأخطاء مهما كبرت أو كان عددها قليلًا، وتولي اهتمامًا خاصًا بإمكانيات الصيانة والتحسين للمُنتَج. يوضّح الجدول التالي سمات الجودة الرئيسة للمنتج البرمجي: جدول 4.1 السمات الرئيسة لجودة البرمجيات السمة آداء الوظائف (Functionality) الوصف يعمل المنتج البرمجي بشكل يفي بمتطلبات المستخدم النهائي، ويمكنه إنجاز جميع المهام المحددة. يُمكن تصنيف المنتج البرمجي على أنه موثوق به ويعتمد عليه عندما يخلو من الأخطاء الموثوقية (Reliability) ويؤدي المهام المتوقعة بموارد محدودة. قابلية الاستخدام يكون المنتج البرمجي أكثر قابلية للاستخدام إذا تمكّن المستخدمون باختلاف (Usability) قدراتهم من استخدامه والوصول بسهولة إلى إمكانياته. يكون المنتج البرمجي ذو كفاءة عند عمله بشكل سليم دون أن يهدر موارد الجهاز الكفاءة (Efficiency) الذي يعمل عليه مثل طاقة المعالج أو الذاكرة أو الشبكة. قابلية الصيانة (Maintainability ) قابلية النقل (Portability) يكون المنتج البرمجي قابلا للصيانة إذا كان بالإمكان إصلاح الأخطاء وتنفيذ الميزات الجديدة فيه بسهولة. يكون المنتج البرمجي قابلا للنقل إذا كان بإمكانه العمل على أنظمة تشغيل أخرى على أجهزة مختلفة ومع برامج أخرى. 185 وزارة التعليم Ministry of Education 2024-1446
الفرق بين تصحيح أخطاء التطبيق والاختبار Difference between Application Debugging and Testing التصحيح (Debugging) هو عملية إزالة الأخطاء والأعطال من البرمجيات التي يتم اكتشافها عادةً لا يضمن الاختبار بعد الاختبار، في حين أنّ الاختبار ( Testing) هو عملية التحقق من صحة البرمجيات. على سبيل صحة البرنامج المثال، قد يحدث أثناء الاختبار ألّا يعرضَ مُكوِّن محدَّد في واجهة المستخدم (UI) لتطبيق المعلومات بشكل كامل، أو بنسبة الصحيحة للمُستخدم. ستجد خلال عملية التصحيح أن هناك عملية حسابية خاطئة في منطق البرنامج 100%، ولكنه يكشف ( Program Logic ) هي المتسببة في الخطأ السابق أثناء عرضه، وبذلك سيتم تصحيح تلك العملية عن الأخطاء المحتملة. فقط وليس مُكوِّن واجهة المستخدم. يجب إجراء الاختبار المناسب للوصول إلى مرحلة التصحيح. 186 مَن ينفّذ الاختبارات؟ Who Performs Tests Я غالبًا ما يقوم المبرمج أو المطوّر باختبار البرنامج الذي يُنشئه ، ولكن اختبار المبرمج لبرنامجه لا يُعدُّ الخيار الأفضل من حيث ضمان الجودة؛ نظرًا لأنه يصعب عليه أحيانًا ملاحظة أخطائه، ولذلك سيكون في حاجة إلى تكليف شخص آخر بإجراء الاختبار، والذي يُطلق عليه لقب المختبر. يقوم المختبر بإجراء الاختبارات على البرنامج مع التركيز على وظائفه، حيث يتم اختبار النتائج باستخدام مجموعات بيانات الإدخال المختلفة. وهكذا فإنَّ المبرمجين يقومون بإجراء الاختبارات الأولية، ولكن المختبر هو المخوّل بالحكم على جودة البرمجيات وعملها كما هو متوقع. تتضمَّن بعض شركات تطوير البرمجيات قسمًا خاصًا للاختبار مهمته التحقق من صحة عمل البرامج، ويُطلق عليه عادةً اسم قسم ضمان الجودة Quality Assurance Department). اختيار بيانات الاختبار Choosing Test Data إن أفضل طريقة لاختبار البرنامج هي حساب مُخرجاته المتوقعة يدويًا قبل تشغيله، ثم معرفة ما إذا كانت نتائج تنفيذه تتطابق مع ما تم حسابه أم لا، وبمعنى آخر ، عليك كتابة المخرجات المتوقعة من البرنامج قبل تشغيله ومقارنتها مع المخرجات الحقيقية له، ويجب أن يعمل البرنامج بشكل صحيح بغض النظر عن البيانات التي يُدخلها المستخدم. ولكن في حالة إدخال بيانات غير صالحة، يجب تنبيه المستخدم إلى أن البيانات غير مقبولة ويُطلب منه إعادة الإدخال، ويحتاج المطوّر أن يأخذ بالاعتبار جميع القيم الممكنة للبيانات المدخلة ، ولاختبار البرنامج بشكل صحيح، تحتاج إلى اختيار بيانات الاختبار التي تُمثَّل جميع احتمالات مُدخلات المستخدم. تنقسم بيانات الاختبار إلى الفئات التالية: بيانات عادية (Normal Data) تُستخدم البيانات العادية عند تعامل المستخدم مع البرنامج بشكلٍ طبيعي، وتتضمَّن مجموعات من القيم من نفس نوع البيانات المتوقعة. على سبيل المثال، إذا كان عليك إدخال قيمة الشهر كعدد صحيح من 1 إلى 12 ، فإن البيانات العادية هي عدد صحيح من 1 إلى 12. لک • بيانات حدودية Boundary Data): هي البيانات الموجودة على القيم المتطرفة (Outliers) لنطاق القيم المتوقعة. على سبيل المثال، إذا كنت تتوقع إدخال قيمة العام بين 1900 و 2020 ، فإن القيم المتطرفة هي 1900 و 2020 ، لذا فأنت تختبر البرنامج عند إدخال 1900 أو 2020 كأرقام في البرنامج لمعرفة ما إذا كانت هناك أية أخطاء. • بيانات خاطئة (Erroneous Data هي البيانات الواقعة خارج نطاق القيم المتوقعة، بالإضافة إلى أي نوع آخر غير صحيح من البيانات. في المثال السابق، إذا أدخل المستخدم قيمة الشهر بالرقم 0 أو 13، أو أدخل كلمة يناير بدلًا من العدد الصحيح ،1، فسيكون هناك خطأ. الاختبار المؤتمت Automated Testing تصبح كثير من البرمجيات أكثر تعقيدًا بعد إصدارها التجريبي ، وبشكل خاص عند خضوعها للتحسينات والتعديلات التي قد تُغيّر وظائفها أو تضيف عليها مزيدًا من الوظائف. في هذه الحالة، يجب تنفيذ الاختبارات السابقة نفسها، وعمل بعض وزارة التعليم Ministry of Education 2024-1446
187 الاختبارات الجديدة للتحقق من عمل البرمجيات بشكل صحيح. يحتاج العدد الكبير من الاختبارات إلى المزيد من الوقت والجهد عند تنفيذها بشكل يدوي ، لذلك يلجأ المختبرون إلى إنشاء الاختبارات المؤتمتة التي يتم تحديثها كل مرة يتم فيها تغيير البرنامج يكتب المختبر المقطع البرمجي الخاص بالاختبار باستخدام عدة أدوات لأتمتة هذه العملية، ومن أمثلة أُطر الاختبارات الأكثر شيوعًا لنظام الأندرويد (Android) : أبيوم (Appium) ، واسبريسو (Espresso) ، ويو آي أوتوميتور (UI Automator). استراتيجيات الاختبارات Testing Strategies تنقسم الاختبارات إلى عدة فئات اعتمادًا على درجة تعقيد البرنامج أو التطبيق قيد الاختبار. يستخدم المطورون والمسؤولون عن الاختبارات العديد من استراتيجيات الاختبار، ويُعدُّ اختبار الوظائف البرمجية، واختبار البرنامج الرئيس هما الأكثر استهلاكًا للوقت والجهد ، والجدول التالي يوضّح استراتيجيات الاختبارات الأكثر شيوعًا: جدول 4.2 : استراتيجيات الاختبارات الشائعة الاسم الوصف اختبارات التشغيل التجريبي يُمكنك من خلال هذه الطريقة تتبع تسلسل منطق البرنامج أثناء تنفيذ الحاسب لكل عبارة برمجية في المقطع البرمجي، مع تسجيل قيمة كل متغيّر في جدول التتبع. (Dry Run Testing ) اختبارات قابلية الاستخدام يتم إجراء اختباري قابليّة الاستخدام أو تجربة المستخدم (UX) للتأكد من أن البرمجيات سهلة الاستخدام وواضحة للمُستخدم النهائي. (Usability Testing) اختبارات الصندوق الأسود (Black-Box Testing) يتم خلالها التعامل مع أجزاء البرنامج التي يتم اختبارها كصندوق مغلق، وذلك بتجاهل طبيعة المقطع البرمجي والتعامل فقط مع بيانات الإدخال والإخراج لمعرفة ما إذا كان المختبر يحصل على النتائج المتوقعة عند إدخال البيانات أم لا. يُمكن للمختبر في اختبار الصندوق الأبيض أن يطّلع على المقطع البرمجي، ولذلك اختبارات الصندوق الأبيض تُركّز عملية الاختبار على التحقق من صحة تنفيذ البرنامج. يتضمن ذلك اختبار منطق (White-Box Testing) اختبارات الوحدة (Unit Testing) الاختبارات التكاملية (Integration Testing) اختبارات الأداء (Performance Testing) اختبارات القبول (Acceptance Testing) اختبارات الاختراق (Penetration Testing) اختبارات الضغط البرمجة، وهياكل البيانات، والخوارزميات، ومعالجة الأخطاء ، والشروط الحدودية. هي اختبار وظيفة كل برنامج بمفرده للتأكد من أداء كل عملية على حدة، قبل التحقق من عمل البرنامج بأكمله. تتحقق الاختبارات التكاملية من سلوك أجزاء البرنامج المختلفة عندما تعمل معا كنظام متكامل. تتحقق اختبارات الأداء من أداء البرنامج أو النظام عند حدوث زيادة كبيرة في عدد المستخدمين أو البيانات التي تتم معالجتها. تسلط اختبارات الأداء الأضواء على المشاكل التي تحتاج إلى إصلاح لضمان قابليّة التوسع للبرنامج أو النظام. تتعلق اختبارات القبول بالتحقق من تلبية البرنامج أو النظام لجميع متطلّبات المستخدمين باحتياجاتهم المختلفة، وعادة ما يتم عمل هذا النوع من الاختبارات عند إنشاء البرمجيات الكبيرة متعددة المستخدمين. ز اختبارات الاختراق على أمان البرنامج أو النظام، وتتحقق من كيفية حماية البرنامج من الهجمات والاختراق. هو أسلوب اختباري يُركّز على تقييم أداء النظام البرمجي في ظل ظروف قاسية. يهدف اختبار الضغط إلى تحديد نقطة انهيار النظام البرمجي وتحديد كيفية تصرفه عندما وزارة التعليم Ministry of Education 2024-1446 يكون تحت أقصى ضغط. (Stress Testing)
تخطيط الاختبار Test Planning إن خطة الاختبار (Test plan ) أو جدولة الاختبار (Test) Schedule) هي قائمة تحتوي على الاختبارات المخطّط إجراؤها للتحقق من دقة عمل البرنامج، وتسجيل نتائج كل اختبار. يتضمن الجدول بيانات الاختبار ، والغرض منه، والنتائج المتوقعة والفعلية لتشغيل البرنامج، ويُطلق على كل صف في جدول الاختبار حالة اختبار (Test Case). • يتحقق سيناريو الاختبار من صحة جزء محدد من وظائف البرنامج ، وقد يحتوي على واحدة أو مجموعة من حالات الاختبار. يتم وضع معايير قبول محددة بدقة في كل سيناريو اختبار. يجب أن تختلف حالة الاختبار (Test Case عن حالة الاستخدام Use Case ، فكما رأيت سابقا تُحدد حالة الاستخدام كيفية استخدام البرنامج أو النظام لأداء مُهمَّة محدَّدة، وعادةً ما تكون على شكل مُخطَّط يوضّح تسلسل الإجراءات التي سيتبعها المستخدم عند تفاعله مع البرنامج على النقيض، يهدف الاختبار إلى إنشاء حالات خاطئة بشكل متعمد وذلك باستخدام بيانات صالحة وغير صالحة. غالبًا ما يتم التخطيط لسيناريوهات الاختبار وحالاته قبل إتمام البرمجة الفعلية. توثيق الاختبار Test Documentation تحتاج عملية الاختبار إلى توثيق دقيق لتحقيق الاستفادة المرجوة منها في اختبارات الإصدارات التالية للبرنامج، وتتضمن عملية توثيق الاختبار ما يلي: سياسة الاختبار Testing Policy : تحتوي على وصف مبادئ الاختبار وأساليبه وأهدافه. • خطة الاختبار Test plan تحتوي على وصف البرمجيات ووظائفها والأجزاء المطلوب اختبارها ونطاق الاختبارات. مواصفات الاختبار (Test pecifications تحتوي على تفاصيل كل سيناريو من سيناريوهات الاختبار ومعايير التقييم الخاصة به. : وصف الاختبار ( Test Description يحتوي على بيانات الاختبار والإجراءات لكل حالة اختبار. تقرير تحليل الاختبار (Test Analysis Report يحتوي على نتائج كل سيناريو اختبار. تقرير : الخطأ (Report : يحتوي على تقرير عن أي خلل أو خطأ أو مشكلة في البرمجيات. • تقرير ملخص الاختبار (Test Summary Report : يحتوي على التقرير النهائي الذي يلخص عملية الاختبار بكاملها. اختبار التطبيق السياحي لزيارة السعودية Testing Visit Saudi Tourism Application بعد إنشائك التطبيق الخاص بك، عليك توزيعه ليتم اختباره. من المهم أن يمتلك المختبرون خلفيات متعددة ومختلفة، حيث يمنح ذلك المطوّر مزيدًا من المعلومات حول ما يجب تصحيحه في التطبيق، والميزات التي يجب إضافتها. على سبيل المثال، سيواجه مُستخدمو تطبيقك الذين يعانون من صعوبة الرؤية أو ضعف السمع، صعوبات في الحصول على المعلومات الصحيحة في درس لاحق، ستقوم بتنفيذ ميزات إمكانية الوصول لهذا التطبيق. حَزْم التطبيق وتوزيعه Packaging and Distributing an Application الانتهاء من تطوير تطبيقك واختباره، ستحتاج إلى حزمه (Package ) في تنسيق ملف قابل للتنزيل والتثبيت على الأجهزة المحمولة بنظام الأندرويد . يمكنك توزيع التطبيق بإحدى هاتين الطريقتين: النشر في متجر التطبيقات ( Publishing to a Store Application : تحميل الحزمة إلى متجر التطبيقات حتى يتمكن المستخدمون من العثور عليها من أي مكان. • تنزيل الحزمة على هاتفك ( Downloading a Package on your Phone: تنزيل الحزمة من حاسبك أو من رابط موقع ويب وتثبيت التطبيق مباشرة على هاتفك المحمول الفعلي. وزارة التعليم Ministry of Education 2024-1446 188
189 تعيين إصدار التطبيق Application Versioning بِغَضّ النظر عن الطريقة التي تعتمدها في توزيع تطبيقك ، فإن الخطوة الأولى في حَزْم تطبيقك هي تعيين الإصدار (Versioning) . تحتاج التطبيقات إلى تنفيذ الإصلاحات والتحديثات بشكل مستمر، ولا يُمكن لأي تطبيق أن يستمر بالعمل دون التطوير المستمر. من المعتاد أن يحتفظ التطبيق بالاسم نفسه ، ولكن قد يتم خلال عملية التحديث إجراء تغييرات في واجهة المستخدم أو في بعض وظائف ذلك التطبيق، لذلك يجب أن تكون هناك طريقة للتمييز بين هذه التطبيقات. تعيين الإصدار (Versioning ) هو استخدام رمز المعرف (Identifier Code) ليشير إلى إصدار التطبيق الذي يقوم المستخدم بتثبيته حاليًا ، ويُعدُّ بمثابة الطريقة الأفضل للتمييز بين الإصدارات المختلفة له في التطبيقات المخصصة لنظام الأندرويد، يتم تحديد تعيين الإصدار بالخصائص التالية: . رمز الإصدار (VersionCode): رقم مُعرِّف افتراضي الأول في كل مرة تقوم فيها بإجراء تحديث رئيس للتطبيق، يبدأ بـ 1، وتتم زيادته في كل مرة يتم تحميل إصدار وزيادة الرقم الثاني في كل مرة تقوم فيها بإجراء تحديث جديد إلى متجر التطبيقات. بسيط للتطبيق. على سبيل المثال، التطبيق الذي يبدأ . اسم الإصدار (VersionName): سلسلة يُمكن تعيينها باسم الإصدار 1.0 " ويخضع لتحديث طفيف يصبح على أي قيمة ، ويتم ضبطها افتراضيًا على الرقم "1.0"، اسم الإصدار 1.1 ، وعند تنفيذ تحديث رئيس على ووفقًا للمعايير المعتمدة دوليًا، حيث يجب زيادة الرقم هذا التطبيق يصبح اسم "الإصدار 2.0. عند العمل باستخدام مخترع التطبيقات MIT App Inventor) MIT ) ، يتاح للمطور تعديل العديد من خصائص التطبيق العامة بما في ذلك إصدارات التطبيق من قسم properties (الخصائص) من Screen1 شاشة (1) ، وهذا هو سبب عدم إمكانية حذف Screen1 (شاشة (1) من التطبيق. مظهر التطبيق Application Appearance يجب تقديم بعض المعلومات للمُستخدم الذي يرغب بتنزيل تطبيقك من المتجر، وهي: • اسم التطبيق Application: Name وهو الذي يظهر في المتجر وعلى هاتفك في قائمة تطبيقاتك. وصف التطبيق (Application Description): النص الذي يعطي لمحة موجزة عن التطبيق. • شعار التطبيق Application logo): أيقونة الشعار التي تظهر في المتجر وعلى هاتفك. VersionCode 1 VersionName 1.0 يتم تحديد هذه المعلومات في قسم properties ( الخصائص ) من Screen1 (شاشة 1) ، ويجب تحديد الخصائص التالية: AppName Visit SA App AboutScreen Icon None... حزم التطبيق Application Packaging لتثبيت تطبيقك على هاتف محمول، عليك تحويل البرنامج الذي أنشأته في مخترع التطبيقات (App Inventor) إلى ملف يُمكن تثبيته بواسطة أجهزة الأندرويد . يوجد نوعان من الحِزَم لتطبيقات الأجهزة المحمولة بنظام الأندرويد: تنسيق حزمة الأندرويد القياسية (Standard Android package ، وهو التنسيق الذي تم استخدامه منذ إنشاء نظام تشغيل أندرويد ، ويُعدُّ هذا التنسيق أبسط طريقة لتوزيع تطبيقات أندرويد. يُمكن للمستخدم تنزيل ملفات أي بي كي (APK) مباشرة من رابط موقع الويب أو تحميلها من متجر قوقل بلاي Google Play). .apk .aab حِزَم تطبيقات الأندرويد (Android App Bundles - AABS ، وهي نوع جديد من تنسيق الملفات يتم استخدامها لحَزّم تطبيقات الأندرويد . تحتوي الحزمة على ملف أي بي كي (APK) ، إضافة إلى بيانات وصفية تسمح للتطبيق بالعمل بسلاسة على مجموعة واسعة من الأجهزة. لا يمكن توزيع هذه الحزم أو تنزيلها إلا من متجر قوقل بلاي. وزارة التعليم Ministry of Education 2024-1446
وزارة التعليم Ministry of Education 2024-1446 تمرينات صف الفرق بين اختبار تطبيق برمجي وتصحيح أخطائه. 1 2 صنف أبرز أنواع استراتيجيات الاختبارات. 190
191 وزارة التعليم Ministry of Education 2024-1446 3 اذكر المكوِّنات الرئيسة لعملية توثيق الاختبار. اذكر طريقتين لتوزيع تطبيق لهواتف تعمل بنظام الأندرويد. صف الاختلافات بين النوعين الرئيسين من حزم نظام الأندرويد. 4 5