Webdriverio: مدونة التغطية

تم إنشاؤها على ٤ يناير ٢٠١٦  ·  3تعليقات  ·  مصدر: webdriverio/webdriverio

هل هناك أي خطط لتضمين تغطية الكود؟ لقد وجدت https://github.com/gotwarlost/istanbul/issues/132 ولكن لا يبدو أن هناك طريقة جيدة للقيام بذلك. (أنا مهتم تحديدًا بالخيار)

التعليق الأكثر فائدة

لأنك باستخدام WebdriverIO تكتب اختبارات e2e التي يجب أن تختبر حالات العمل من البداية إلى النهاية (كما يوضح الاسم). لذلك فأنت لا تختبر الكود ولكنك تقوم باختبار تدفق مستخدم معين. تحاول تغطية جميع جوانب العمل في تطبيقك. على الرغم من أنه يمكنك تقنيًا التقاط مقدار الكود الذي تم تنفيذه في الواجهة الأمامية ، إلا أنه لا معنى له لأنه ليس مثيرًا للاهتمام على الإطلاق لحالات عملك.

من خلال اختبارات الوحدة ، تقوم بالفعل باختبار الكود ومن ثم فإن تغطية الكود أمر مهم لمعرفة مدى نجاحك في الاختبار. في هذه الحالة لها قيمة.

لا تتردد في التقاط تقرير التغطية في اختبار وظيفي ولكنك ستنتهي بمحاولة جعل هذا التقرير يبدو جيدًا عن طريق كتابة المزيد من اختبارات e2e بدلاً من اختبارات الوحدة أو اختبارات التكامل. الأمر كله يتعلق بما تحاول اختباره والأدوات التي تستخدمها من أجله.

ال 3 كومينتر

بادئ ذي بدء ، لا أعتقد أن تغطية الكود يجب أن تكون جزءًا من اختبارات التكامل الخاصة بك. يجب عليك كتابة اختبارات الوحدة أولاً والتأكد من أن لديك تغطية كود مناسبة هناك. يجب أن يغطي السيلينيوم / WebdriverIO بعد ذلك التكامل الكامل للمكدس الخاص بك.

ومع ذلك ، يمكنك أن تفعل الشيء نفسه كما هو موضح في مؤشر ترابط المشكلة باستخدام WebdriverIO. بدلاً من استخدام بناء جملة selenium-webdriver ، ما عليك سوى استخدام أوامر WebdriverIOs:

    client.execute("return window.__coverage__;").then(function (obj) {
        var str = JSON.stringify(obj);
        var options = {
            port: 8888,
            host: "localhost",
            path: "/coverage/client",
            method: "POST",
            headers: {
                "Content-Type": "application/json",
            }
        };
        var req = http.request(options, function (res) {
            console.log("\nFinished sending coverage data.");
            done();
        });
        req.write(str);
        req.end();
    });

ولكن مرة أخرى ، لا يجب تضمين تغطية التعليمات البرمجية في اختبارات التكامل الخاصة بك.

@ كريستيان برومان

أتساءل لماذا تعتقد أن تقارير التغطية لا ينبغي أن تكون جزءًا من الاختبارات الوظيفية

لأنك باستخدام WebdriverIO تكتب اختبارات e2e التي يجب أن تختبر حالات العمل من البداية إلى النهاية (كما يوضح الاسم). لذلك فأنت لا تختبر الكود ولكنك تقوم باختبار تدفق مستخدم معين. تحاول تغطية جميع جوانب العمل في تطبيقك. على الرغم من أنه يمكنك تقنيًا التقاط مقدار الكود الذي تم تنفيذه في الواجهة الأمامية ، إلا أنه لا معنى له لأنه ليس مثيرًا للاهتمام على الإطلاق لحالات عملك.

من خلال اختبارات الوحدة ، تقوم بالفعل باختبار الكود ومن ثم فإن تغطية الكود أمر مهم لمعرفة مدى نجاحك في الاختبار. في هذه الحالة لها قيمة.

لا تتردد في التقاط تقرير التغطية في اختبار وظيفي ولكنك ستنتهي بمحاولة جعل هذا التقرير يبدو جيدًا عن طريق كتابة المزيد من اختبارات e2e بدلاً من اختبارات الوحدة أو اختبارات التكامل. الأمر كله يتعلق بما تحاول اختباره والأدوات التي تستخدمها من أجله.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات