Ali Habib نشر 21 أبريل 2021 أرسل تقرير نشر 21 أبريل 2021 أنا جالس أتعلم على laravel , وعندي سؤال ماهو أنواع test اللي مفروض الشخص يستخدمها للتأكد من جودة التطبيق, وكل نوع من test كيفية عمله ؟ وشكرا اقتباس
0 يوسف احمد9 نشر 21 أبريل 2021 أرسل تقرير نشر 21 أبريل 2021 هناك نوعين من التست في لارافيل إما unit test او integration test ال unit test نقوم بإختبار كل فنكشن على حده وبطريقه منفصله للتأكد هل تعمل بشكل صحيح أم لا أما بالنسبه لل integration test فأنت تقوم يعمل استورى كامله للتست مثال : اليوزر قام بعمل تسجيل دخول ثم ذهب إلي صفحه البروفايل وعدل بياناته تلك الطريقه تسمي integration test وهذا بيتم عن طريق Browser tests في لارافيل اقتباس
0 Sam Ahw نشر 21 أبريل 2021 أرسل تقرير نشر 21 أبريل 2021 توفر لارافل العديد من الوسائل التي تمكنك من اختبار مشروعك والتي تم تحسينها في النسخ الحديثة من لارافل لتشمل جميع جوانب المشروع وهي: HTTP Tests: والتي تمكنك من اختبار ارسال الطلبات إلى الخادم واستقبالها من طرف الزبون ومحاكاة هذه الآلية ضمن مشروعك Console Tests: وهي مشابهة لطلبات http ولكن تمنحك إمكانية إجراء التعليمات بكتابتها بشكل يدوي عبر ال console Browser Tests: الاختبارات على مستوى المتصفح، والتي تم دمجها مع Laravel Dusk، والتي تمكنك من اختبار جميع الخصائص ضمن المتصفح من ملفات تعريف الارتباط، الأزرار، التحقق والتوثيق، استخدام لوحة المفاتيح والفأرة، والعديد من الخصائص.. Database: ويتم فيها تنفيذ الاختبارات على مستوى قواعد البيانات، بما تحويه من معالجة البيانات والعلاقات فيما بينها وعلى مستوى models أيضاً عن طريق استخدام factories دون أن تحتاج لإضافة البيانات إلى الجداول بشكل يدوي وإشغال مساحة دون الحاجة لها. Mocking: والتي تمنح القدرة على اختبار وحدة برمجية بشكل مستقل في حال أردت اختبار عمليات برمجية مرتبطة مع بعضها البعض أو مع أحداث أخرى، بما تحويه من mocking objects ، mocking facades، .... جميع هذه الجوانب تحوي العديد من الطرق والتفاصيل التي يصعب جمعها في مكان واحد، لكن لسهولة البدء يمكنك التوجه إلى التوثيق الرسمي في لارافل واختيار موضوع محدد حسب حاجتك للاختبار والاطلاع على كامل التفاصيل عن هذا النوع الذي اخترته من الاختبار والذي يلبي حاجتك. 1 اقتباس
0 Adnane Kadri نشر 21 أبريل 2021 أرسل تقرير نشر 21 أبريل 2021 كشيء جميل في اللارافل فإنه تم تم بناءه مع وضع الاختبارات في الاعتبار على عكس أطر عمل أخرى (مثال : الcodegniter) , فقد تم تضمين دعم الاختبارات باستخدام الphp Unit و يأتي كل Fresh Laravel Application مع ملف اعداد phpunit.xml و مجلد tests . بحيث يحتوي المجلد tests افتراضيًّا على مجلّدين : Feature (تعبر عن مجموعة اختبارات كل منها هو اختبار جزء من الشيفرة) و Unit (تعبر عن مجموعة اختبارات الوحدة). يتم تشغيل الاختبارات التي قمت بإنشاءها عن طريق طباعة الأمر في التارمنل : phpunit أو : vendor/bin/phpunit أي أن الاختبارات التي يتم عملها ببيئة عمل الphpunit في اللارافل هي أحد الخيارين : اختبار وحدة unit test : و يقصد بها اختبارات مكتوبة من منظور المبرمجين. وهي مصممة للتأكد من أن طريقة معينة (أو وحدة) للclass تؤدي مجموعة من المهام المحددة. اختبار ميزة feature test: و يقصد بها اختبار جزء أكبر من التعليمات البرمجية الخاصة بك ، بما في ذلك كيفية تفاعل العديد من الكائنات مع بعضها البعض أو حتى طلب HTTP إلى نقطة نهاية من الاي بي اي الخاص بك . أما عن الأشياء التي تحتاج إختبارها فلارافل توفر أغلب ذلك , خصوصا و قد تم تحسينها في النسخ الأخيرة . فكما ذكر @Sam Ahwيمكنك إختبار كل جانب من التطبيق : جانب الHTTP : بحيث يوفر اللارافل مجموعة من الmethods لمحاكاة طلب الى الخادم و التحقق من تفاصيله . مثال : <?php class TasksTest extends TestCase { /**@test */ // هكذا يتم تعريف الاختبار public function a_task_can_be_retrieved() { $response = $this->json('GET', '/api/v1/task/12'); // محاكاة الطلب $response->assertStatus(200); // التحقق من ان كود الحالة هو كما متوقع } /** * يمكن تعريفه هكذا ايضا * */ public function test_a_task_can_be_updated() { $response = $this->json('PATCH', '/api/v1/task/12' ,$some_data); // محاكاة الطلب $response->assertStatus(200); // التأكد من كود الحالة } /**@test */ public function a_task_name_is_required() { $response = $this->json('POST', '/api/v1/task' ,$some_data_that_has_not_a_name); // محاكاة الطلب $response->assertStatus(422); // التأكد من كود الحالة } } اختبارات المتصفح . Browser Tests أو كما هو شائع : Laravel Dusk . بحيث يمكنك إختبار كل ما يخص الواجهات . (التفاعل مع الواجهة , ضغط أزرار , نقر على روابط , التعامل مع القوائم المنسدلة , إرفاق الملفات عن طريق مدخلات الملفات .. و غيرها ) غير أن هاته الإختبارات تحتاج تسطيب حزمة laravel/dusk . و ستتلقى عنك عناء اختبار التطبيق بنفسك . مثال من ويكي حسوب : <?php namespace Tests\Browser; use App\User; use Tests\DuskTestCase; use Laravel\Dusk\Chrome; use Illuminate\Foundation\Testing\DatabaseMigrations; class ExampleTest extends DuskTestCase { use DatabaseMigrations; /** * مثال عن اختبار متصفح بسيط. * * @return void */ public function testBasicExample() { $user = factory(User::class)->create([ 'email' => 'taylor@laravel.com', ]); $this->browse(function ($browser) use ($user) { $browser->visit('/login') ->type('email', $user->email) ->type('password', 'secret') ->press('Login') ->assertPathIs('/home'); }); } } 3 . اختبارات قواعد البيانات : عن طريق الmodel factories و الdatabase seeders يمكنك ملئ قواعد البيانات الخاصة بك ببيانات مزيفة عن طريق مكتبة faker و من ثم اختبارها عن طريق مجموعة من التوكيدات . 4 . اختبارات تزييف الأحداث أو الـ Mocking : ويقصد بالأحداث أشياء مثل أحداث إرسال الايميلات App\Mails أو الأحداث داخل App\Events أو الإشعارات داخل App\Notifications أو تزييف الJobs داخل App\Jobs بل و حتى تزييف التخزين و التوكيد على عمله بشكل صحيح . فلارافل يمكنك من محاكاة ذلك و التوكيد على عمله دون عمله فعليا . إنشاء الاختبارات : يكون عن طريق الterminal : php artisan make:test UserTest 2. و من ثم التعديل على ملف الtest المنشئ بإضافة اختبارات بشكل methods معرفة بشكل صحيح (كما تم ذكر ذلك) . <?php class UserTest extends TestCase { /**@test*/ public function a_user_can_be_banned() { } } 3 . و من ثم محاكاة العملية التي تنوي إجراء الإختبار عليها : <?php class UserTest extends TestCase { /**@test*/ public function a_user_can_be_banned() { $response = $this->json('PATCH', '/users/34', ['is_banned' => true]); // } } 4 . و أخيرا استعمال التوكيد الصحيح : <?php class UserTest extends TestCase { /**@test*/ public function a_user_can_be_banned() { $response = $this->json('PATCH', '/users/34', ['is_banned' => true]); $response->assertStatus(200)->assertExactJson(['is_banned' => true,]); } } .. التوغل في كتابة الإختبارات و إختبار كل صغيرة و كبيرة بجوانب موقعك سيأخذ بك و تطبيقاتك إلى مستوى اخر من التطوير و يجعلك تمارس أحد مبادئ التطوير المتقدمة و هو الTDD أو الـ Test Driven Development و لن تضطر للعمل بطرق الإختبار التقليدية و ستكتفي بطباعة أمر واحد في التارمينل لإختبار تطبيقك ككل , في مرة واحدة. 1 اقتباس
السؤال
Ali Habib
أنا جالس أتعلم على laravel , وعندي سؤال ماهو أنواع test اللي مفروض الشخص يستخدمها للتأكد من جودة التطبيق, وكل نوع من test كيفية عمله ؟ وشكرا
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.