الانتقال إلى المحتوى
Mohamed TRIKI
العودة إلى التدريبات والمشاريع
استمارة إنشاء وصفة طبية في e-Santé.net

e-Santé.net — منصة صحة إلكترونية للصيدليات وأتمتة الاختبارات

  • التاريخ : 2026
  • هندسة البرمجيات
  • مكتمل

تطوير تطبيق ويب للصحة الإلكترونية للصيدليات (ASP.NET Core و Blazor)، ثم ضمان جودته: اختبارات واجهة بـ Selenium و Pytest، واختبارات API وأمان بـ xUnit، وتحليل SonarQube — 67 حالة اختبار.

نظرة عامة

e-Santé.net تطبيق ويب للصحة الإلكترونية موجّه للصيدليات، أنجزناه ضمن ثنائي في المعهد الدولي للتكنولوجيا بصفاقس. يجمع في مكان واحد المرضى والأطباء والصيادلة والصيدليات والأدوية والمخزون والوصفات، وهي معلومات كثيرًا ما تكون متفرّقة داخل الصيدلية.

تعتمد المنصة على بنية متعدّدة الطبقات: واجهة Blazor Server، وواجهة REST بـ ASP.NET Core مؤمّنة برمز دخول، وطبقة أعمال، ومستودعات Entity Framework Core على SQL Server. وتعرض لوحة قيادة للصيدلي، أُنجزت بـ Radzen.Blazor، النشاط والوصفات وحالة المخزون.

وفي مادة اختبار البرمجيات وجودتها، اختبرنا التطبيق نفسه من البداية إلى النهاية: أتمتة الواجهة، واختبارات تكامل الـ API، واختبارات الأمان والأداء، والتحليل الساكن، ضمن أربع دورات Scrum.

أرقام رئيسية

حالة اختبار قابلة للتتبّع
67
حالة اختبار قابلة للتتبّع
وحدات وظيفية مغطّاة
9
وحدات وظيفية مغطّاة
موارد API مختبَرة
7
موارد API مختبَرة
عيوب مُصلَحة
5
عيوب مُصلَحة

التقنيات

المشكلة

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

الحل

منصة ويب بتسجيل دخول آمن وصلاحيات حسب الدور، وصفحات إدارة (CRUD) لكل كيان، ووصفات يُتحقّق منها مقارنةً بمخزون كل صيدلية، ولوحة قيادة؛ ثم تمّ التحقق من جودتها باختبارات آلية للواجهة والـ API والأمان واختبارات ساكنة.

مساهمتي

ضمن ثنائي: تطوير المنصة (صفحات Blazor وواجهة REST والمستودعات وقواعد المخزون)، ثم كامل عمل الاختبار — إطار أتمتة الواجهة، ومجموعة اختبارات الـ API، واختبارات الأمان والأداء بـ xUnit، وتحليل SonarQube وتوثيق الاختبارات.

النتائج

67 حالة اختبار قابلة للتتبّع تغطّي 9 وحدات وظيفية و7 موارد API. كشفت اختبارات الأمان عن أخطاء 500 غير معالَجة عند الطلبات غير المصادَق عليها أو الخبيثة، وتمّ إصلاح 5 عيوب.

الميزات

  • تسجيل الدخول والتسجيل مع مصادقة برمز دخول وصلاحيات حسب الدور (مسؤول، صيدلي)
  • إدارة المرضى والأطباء والصيادلة والصيدليات والأدوية والمخزون
  • وصفات بأسطر أدوية وكمية وجرعة، يُتحقّق منها مقارنةً بمخزون الصيدلية (خطأ 400 واضح عند غياب المخزون أو عدم كفايته)
  • لوحة قيادة للصيدلي برسوم بيانية ومؤشرات Radzen.Blazor
  • إطار أتمتة لاختبار الواجهة بـ Selenium و Pytest (نمط Page Object Model) مع سجلّات ومؤشرات أولوية ولقطات شاشة عند الفشل
  • اختبارات تكامل لواجهة REST بـ Pytest ضمن جلسة مصادَق عليها بـ JWT
  • اختبارات أمان وأداء بـ C# و xUnit (التحكم في الوصول، حقن SQL، XSS، زمن الاستجابة)
  • تحليل ساكن بـ SonarQube تلته إعادة هيكلة موجّهة للشيفرة

لقطات الشاشة

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

لوحة قيادة الصيدلي المنجزة بـ Radzen.Blazor: الأرقام الرئيسية والوصفات والمخزون في لمحة واحدة.

تفاصيل الوصفة: التاريخ والمريض والطبيب والصيدلي والأدوية المصروفة.

إدارة المرضى: تُستعمل صفحات القائمة والإنشاء والتعديل والتفاصيل نفسها لكل كيان.

صفحة تسجيل الدخول: الوصول إلى التطبيق محميّ بمصادقة برمز دخول.

اختبارات واجهة آلية (Selenium و Pytest بنمط Page Object Model): نتائج وحدة المرضى، إحدى الوحدات التسع المغطّاة.

توثيق Swagger لواجهة REST، المرجع المعتمد لاختبارات التكامل بـ Pytest.

اختبار أمان بـ xUnit: طلب مجهول نحو نقطة نهاية محميّة أعاد خطأ 500 بدل 401/403، وهو عيب كشفته الاختبارات.

تحليل ساكن بـ SonarQube: مشكلات عالية الخطورة مثل التعقيد المعرفي المفرط، تمّت إعادة هيكلتها لاحقًا.