אינטרנט ישראל
  • ראשי
  • אודות רן בר-זיק ואינטרנט ישראל
  • ערוץ טלגרם
  • מסטודון
  • התחברו אלי בטוויטר
  • התחברו אלי בלינקדאין
  • ספר ג'אווהסקריפט
  • ראשי
  • אודות רן בר-זיק ואינטרנט ישראל
  • ערוץ טלגרם
  • מסטודון
  • התחברו אלי בטוויטר
  • התחברו אלי בלינקדאין
  • ספר ג'אווהסקריפט
ראשי » מדריכים » Express » code coverage עם mocha באפליקציות express

code coverage עם mocha באפליקציות express

רן בר-זיק יולי 31, 2016 7:07 am אין תגובות

שימוש במודול istanbul על מנת להוציא דו"ח הבודק את איכות הבדיקות האוטומטיות שלי.

המאמר הקודם בסדרת המדריכים על expresעבודה מתקדמת עם supertest לבדיקת express
המאמר הבא בסדרת המדריכים ל-expressהתקנת express עם yeoman
כדאי תמיד להשאר מעודכנים! אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂 אם אתם רוצים ללמוד תכנות באופן מקיף ומסודר, הצטרפו לאלפי הלומדים בפרויקט "ללמוד ג'אווהסקריפט בעברית" שמלמד לתכנת בג'אווהסקריפט, ב-Node.js ובריאקט וגם מלמד על תרומה לקוד פתוח. גם ספרים דיגיטליים וגם ספרים מודפסים. בשיתוף הקריה האקדמית אונו ובתמיכת חברות מובילות כגון Wix, Outbrain, Elementor, Iron Source, Chegg, Really Good ועוד.

במאמר הקודם דיברנו על כתיבת בדיקות יותר מתקדמות על מנת לבצע בדיקות אוטומטיות. נשאלת השאלה – איך בדיוק אני יכול למדוד את יעילות הבדיקות שלי? איך אני יכול לדעת אם לא פספסתי משהו חשוב? התשובה היא כמובן code coverage report – דו"ח מסודר שמראה לי את הקוד שלי, אפילו ברמת השורה, ומנתח כמה שורות מתוכו נבדקו וכמה מהענפים בקוד שלי נבדקו (תחשבו על תנאי if else, צריך לבדוק אותו פעם אחת אם הוא מתממש ופעם שניה אם לא).

דו"ח code coverage הוא לא חזות הכל ויש עוד הרבה קריטריונים לאיכות קוד, אבל הוא כלי עזר חשוב למתכנת שמסייע לו לדעת אם הבדיקות האוטומטיות שהוא כתב הן מספיק רלוונטיות ואין חורים שהוא פספס. עבור מנהלי הפיתוח הדו"ח הזה מהווה קריטריון מדיד (למרות שלא מחייב) לאיכות תוכנה.

ישנם מספר כלים שיעבדו עם mocha, שעליה דיברנו במאמרים הקודמים, כדי לראות כמה קוד היא מכסה. הכלי המוביל היום נקרא istanbul והוא עובד עם מספר כלי בדיקות (כן, גם עם karma) מה שגורם לו להיות פתרון מצוין כי אם יש בפרויקט שלכם כמה פריימוורקים (כמו למשל angular או react) אז istanbul יעבוד מצוין גם עבורם.

על מנת לעבוד עם istanbul, אנחנו צריכים להתקין אותו גלובלית:


npm install -g istanbul

בניגוד ל-mocha, לא מקובל להגדיר אותו מקומית, אלא אם כן הרצה שלו היא קריטית ל-build (כלומר יש לכם משהו שבודק אחוז כיסוי ואם הוא נמוך מדי אז ה-build נופל). על מנת להריץ אותו, כדאי וצריך לוודא ש-mocha רץ אצלכם בלי בעיות. הטיפ שלי הוא לוודא ש-mocha מותקן גם מקומית באמצעות:


npm install mocha --save-dev

אם אתם מגיעים למצב שהקלדה של mocha בקונסולה מריצה את הבדיקות האוטומטיות שלכם, אפשר להריץ את istanbul:


istanbul cover _mocha -- -R spec

משתמשי חלונות – כדאי מאוד להריץ את הקוד הבא במקום:


istanbul cover node_modules/mocha/bin/_mocha -- -R spec

אם הכל תקין, אתם תראו משהו בסגנון הזה:

successful istanbul and mocha running


$ istanbul cover node_modules/mocha/bin/_mocha -- -R spec


Example app listening on port 3000!
  help router
    √ GET about-me should return 200


  1 passing (34ms)

=============================================================================
Writing coverage object [C:\Users\barzik\express_sample\coverage\coverage.json]
Writing coverage reports at [C:\Users\barzik\express_sample\coverage]
=============================================================================

=============================== Coverage summary ===============================
Statements   : 84.21% ( 16/19 )
Branches     : 100% ( 0/0 )
Functions    : 50% ( 2/4 )
Lines        : 84.21% ( 16/19 )
================================================================================

מה קורה פה בעצם? ראשית istanbul מריצה את mocha ורק אז היא מדפיסה דו"ח. הדו"ח המאוד כללי מודפס בקונסולה, כאן אפשר לראות שיש לי אחוז כיסוי של 84.21% של שורות (יאי!). בנוסף, באופן דיפולטיבי מודפס דו"ח יפה בפורמט HTML ובפורמט JSON בתיקית coverage. למען הנוחות, istanbul מציין באופן מפורש איפה הוא הדפיס את הדו"חות. אם אני אפתח את file:///C:/Users/barzik/express_sample/coverage/lcov-report/index.html, אני אראה דו"ח כזה:

code coverage report

הוא אינטראקטיבי, כלומר אני יכול ללחוץ על תיקיות ולבחון קבצים על מנת לראות מה מכוסה ומה לא מכוסה. למשל, אם אני אכנס ל-app.js, אני אראה שהשורות שאחראיות על 404 ועל תקלת 500 לא מכוסות:

code coverage report - lines not covered

כדי להגדיל את אחוז הכיסוי, אני צריך לכתוב בדיקה שתבדוק את שגיאות ה-400, שגיאת ה-500 תהיה קצת יותר טריקית לבדיקה (אבל גם את זה אפשר לעשות).

במאמר הבא, שיהיה המאמר האחרון במדריך, אנחנו נדבר על שילוב של express עם grunt.

כדאי תמיד להשאר מעודכנים! אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂 אם אתם רוצים ללמוד תכנות באופן מקיף ומסודר, הצטרפו לאלפי הלומדים בפרויקט "ללמוד ג'אווהסקריפט בעברית" שמלמד לתכנת בג'אווהסקריפט, ב-Node.js ובריאקט וגם מלמד על תרומה לקוד פתוח. גם ספרים דיגיטליים וגם ספרים מודפסים. בשיתוף הקריה האקדמית אונו ובתמיכת חברות מובילות כגון Wix, Outbrain, Elementor, Iron Source, Chegg, Really Good ועוד.
לכל המאמרים בסדרת המדריכים על express
express.js

השארת תגובה

ביטול

ללמוד ג'אווהסקריפט בעברית

ללמוד לתכנת ג'אווהסקריפט בעברית שגייס יותר משלוש מאות אלף שקל ולמעלה מ-2000 תומכים - בואו ללמוד עכשיו איך לתכנת.

רשימת הנושאים
  • מדריכים
    • ריאקט
    • טייפסקריפט
    • ECMAScript 6
    • ES20XX
    • Node.js
    • Express
    • רספברי פיי
    • Babel
    • docker
    • MongoDB
    • Git
    • לימוד MySQL
    • SASS
    • jQuery
    • CSS3
    • HTML 5
    • SVN
    • LESS
  • פיתוח אינטרנט
    • פתרונות ומאמרים על פיתוח אינטרנט
    • jQuery Scripts
    • jQuery למתקדמים
    • יסודות בתכנות
    • נגישות אינטרנט
  • חדשות אינטרנט
  • מידע כללי על אינטרנט
    • רשת האינטרנט
    • בניית אתרי אינטרנט
  • rss logo

    לכל המאמרים

    לכל המאמרים שפורסמו באינטרנט ישראל משנת 2008 ועד עכשיו.
  • rss logo

    RSS Feed

    משתמשים בקורא RSS? אם כן, עקבו אחרי אינטרנט ישראל באמצעות פיד ה-RSS!
    מה זה RSS?
  • Twitter logo

    עקבו אחרי בטוויטר

    בחשבון הטוויטר שלי אני מפרסם עדכונים מהירים על חדשות בתחום התכנות והיזמות, התרעות על מצבי חירום ורכילות בוערת על תחום הווב.
    מה זה טוויטר?
  • facebook like image

    ערוץ הטלגרם של אינטרנט ישראל

    בערוץ הטלגרם של אינטרנט ישראל אני מפרסם את הפוסטים של באתר וכן עדכונים טכנולוגיים נוספים.
    מה זה טלגרם?
  • github logo

    הפרויקטים שלי בגיטהאב

    הפרויקטים שאני כותב ושוחררו לציבור ברישיון קוד פתוח נמצאים ברובם בגיטהאב.
חיפוש

כל הזכויות שמורות לרן בר-זיק ולאינטרנט ישראל | מדיניות הפרטיות של אתר אינטרנט ישראל | אתר אינטרנט ישראל נגיש לפי תקן WCAG 2.0 AA | הצהרת הנגישות של האתר | אבטחת מידע ודיווח על בעיית אבטחת מידע

גלילה לראש העמוד