LOGIN
התחברות או הרשמה
Avatar
להמשך הרשמה ידנית – לחץ על כפתור ההרשמה, להרשמה/כניסה מהירה בעזרת חשבון רשת חברתית – לחץ על הלוגו בכותרת

אפס סיסמה - שכחתי את שם המשתמש

שם משתמש
סיסמה
זכור אותי

he icon   en icon

בכדי להוסיף פוסט בבלוג יש להרשם או להתחבר - ההרשמה/כניסה מתבצעת מכותרת האתר.

,תכונות הטסט - מהירות

נכתב על ידי 
שני, 21 יולי 2014 13:48
דרגו כתבה זו
(1 הצבעה)

אחד הסיפורים שאני אוהב לחזור עליהם (שוב ושוב) הוא חווית ה TDD הראשונה שלי. לפני שנים רבות, סיימתי לקרוא את הספר המופלא של קנט בק "Test Driven Development by Example". הייתי בטוח ש TDD הוא התשובה לכל מכאוביי.

באותו זמן עבדתי על רכיב תקשורת, ואמרתי לעצמי: למה לא לנסות את הדבר החדש הזה על עצמי?

למען ההגינות אומר שכבר מהתחלה ביצעתי עבירת TDD, כי כבר החלטתי שהרכיב יהיה מבוסס על MSMQ. לא הייתי אמור להחליט על האפיון מראש, אבל לא זה העניין. MSMQ הוא שרות queueing של Windows, תשתית לשליחת וקבלת הודעות בצורה אסינכרונית. הוא גם קצת איטי.

הטסט הראשון שכתבתי, שלח הודעה ובדק שהגיעה.

משהו כזה:

אנחנו מדברים על מהירות. אם טסט כזה רץ כ-3 שניות, כמה זמן ייקח להריץ 100 כאלה?

הייתי כה מאושר שהטסט עבר, שלא שמתי לב לאורך הריצה. רוב האנשים שמתחילים לכתוב בדיקות יחידה לא שמים לב. הם צוברים טסטים שמאטים את הריצות עד שיום אחד הם מגיעים לנקודת שבירה.

ניקח לדוגמא ריצה שלוקחת כ- 15 דקות. ונניח שאני אדם סבלני מאד. נניח.

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

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

עד שאשים לב שאני מבזבז שעתיים בכל יום על תיקון טסטים, שזה בערך 25% מזמני שאני משקיע בטסטים – השקעה שאני לא רואה את התוצאה שלה. בנקודה זו אני מפסיק להריץ את הטסטים. ומיד אחר כך לכתוב נוספים.

אני קורא לזה "The Death Spiral of Doom". רבים וטובים נופלים בה. רבים לא מנסים לטפס שוב.

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

פידבק מהיר הוא חובה!

טסטים חייבים לרוץ מהר. אנחנו מדברים על מאות ואלפים ברמה של שניות. אם לא, אנחנו צריכים לטפל בבעיה.

פידבק מהיר הוא לא רק ערך אג'ילי חשוב. הוא הכרחי להגברת מהירות. אם לא נשקיע בו, רשת הביטחון שבנינו מטסטים תתרסק.

מה אפשר לעשות?

  • ניתוח. אורך הריצה מופיע בכל דוח הרצה. חפשו את הטסטים האיטיים והוציאו להרצה נפרדת.
  • סדר. פצלו הרצות לאיטיות ומהירות. השאירו את האיטיות לתהליך הבנייה האוטומטי, כדי שניתן יהיה לבצע הרצה מהירה על המכונה הלוקאלית.
  • זיוף. שימוש ב mocking עוזר רבות להגברת מהירות . אם יש תלות ברכיב איטי (כמו MSMQ), השתמשו בכלי mocking.
  • עוד קצת סדר. לא כל הטסטים חייבים להיות חלק ממערך הבדיקות לנצח. אם יש קוד שלא נוגעים בו, אבל ריצת הטסטים עליו אורכת 5 דקות, הפסיקו להריץ אותם, או העבירו אותם לריצת לילה.
  • שדרוג. תופתעו כמה עזרה נותנת חומרה משודרגת להרצה. המחיר של הוספת זכרון או דיסק מהיר יחסית למהירות שתקבלו הוא קטן.

תחזוקה של תהליך הרצה היא תהליך מתמשך. צריך להמשיך לנתח ולשפר. התוצאה היא פידבק מהיר ורשת ביטחון שמאפשרת שיפור מתמיד, שינויים, והכי חשוב – שאפשר לסמוך עליה.

הפוסט הזה הוא חלק מסדרת "תכונות הטסט". בפעם הבאה: דיוק.

הכותב מעביר הדרכות וליווי בנושאי בדיקות ואג'ייל – המעוניינים יכולים לפנות דרך האתר:http://www.gilzilberfeld.com/p/contact.html

 

Test Speed

שונה לאחרונה ב שלישי, 29 יולי 2014 10:37

חובה להיות משתמש רשום במערכת בכדי להגיב - ההרשמה/כניסה בכותרת האתר

טיפים

  • בודק - הבן את המודל והאתגרים העיסקיים
    בודק - הבן את המודל והאתגרים העיסקיים בודק - הבן את המודל והאתגרים העיסקיים המוצרים אותם אנו בודקים מיועדים (בין השאר) לקדם את מטרות הארגון בו אנו עובדים, ולנו מחוייבות לעזור בתהליך זה, שהרי לשם כך בעלי העסק מחזיקים בארגון ומעסיקים אותנו, לעיתים…
    קרא עוד...
  • אם נתקלת בבאג במקרה... - חפש באגים דומים
    אם נתקלת בבאג במקרה...  - חפש באגים דומים אם נתקלת בבאג במקרה... או שחזרה תקלה מלקוח - חפש באגים דומים, סביר להניח שפיקששת סדרה שלמה של באגים מאותו סגנון. בתרגום חופשי מהמסמך הבא של Cem Kaner.   ראה המסמך בלינק הבא, כמו גם רשימת Checklists נוספים…
    קרא עוד...
לרשימה המלאה >>