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

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

חדשות מעולם הבדיקות

  • Parkinson’s law in software testing

    Coffee was brewing for the third time. It was dead silent in the dorms. Only a dim screen lit the room and steady tap of the keyboard took flight. It was 3am and the deadline was approaching fast.That was the story of my life. When I studied back at the University of Oulu in Finland I got myself into trouble on a regular basis. I procrastinated on starting with my project reports and essays for days. My small apartment was super tidy, I had taken care of calling both grand moms twice during the week and even dragged my ass to the gym every day.Have you experienced similar situations? Basically everything except the important paper was taken care of. My ways of postponing the inevitable were clever and creative. But the last evening before the deadline always came. Usually around 5pm I brewed my first coffee and got to work.I did the same drill every semester with every report paper and every project. And never failed once. The work got magically done, no matter how big it was. In the morning I stormed in to the course assistants room and delivered my results. It’s uncanny how naturally everything worked out when the deadline came. It’s always the final hours before the deadline that are the most productive hours for me.Last year I started a new project, because I wanted to write a book about software testing. Once again I found myself filling the days up with pointless meetings, email and social media combined[…]

    18.02.2019 | 8:08 קרא עוד...
  • European Testing Conference SpeedMeet - How To?

    European Testing Conference SpeedMeet - How To? Picture a conference you went to, alone. You don't know anyone, not sure if they want to talk about exploratory testing (your favorite) or test automation (not your favorite) and not feeling like you have the energy to go and push yourself on random strangers. You show up, sit in a table, watching people around you discuss and listen until it is again time to head to a session.As a socially anxious extrovert, I have had huge problems with conferences. I want to talk to people,  but the need of taking the first step and finding out if they want to talk to me drains me. My usual recipe is to be a speaker, and have people approach me. But the same issue drove me to figure out other designs for my conference, and SpeedMeet was born.SpeedMeet puts together three insights: Pairing people up with a rule to introduce is an effective way of building relationships. The rule helped people at Scan Agile meet, and we wanted to do more of sessions where social interaction wasn't emergent but facilitated. The meeting needs an artifact that introduced pull over push in introductions. This piece we found in Jurgen Appelo's talk in Agile Serbia, and combining it my personal aversion to talking about beer (push information often provided in the tester community), the connection to the right dynamic was evident.  The high-volume high-interaction event needs an escape route and permission. This piece became evident with experimenting with large crowds listening to feedback. […]

    18.02.2019 | 8:01 קרא עוד...
  • Inspecting Elements for writing XPath, CSS Selector in Chrome

    The most important part in any kind of automation is, identifying various elements over which we want to perform an action and when it comes to web application or android application automation using Selenium WebDriver or Appium, we fall for Chrome, Firefox or Internet Explorer to find the right set of XPath or CSS selector. For the same, all mostThe post Inspecting Elements for writing XPath, CSS Selector in Chrome appeared first on Abode QA.

    18.02.2019 | 5:23 קרא עוד...

טיפים

  • טיפ - עבודת בודקים בצמד עם המפתח
    טיפ - עבודת בודקים בצמד עם המפתח  עבודת בודקים בצמד עם המפתח "עבודה בצמד עם המפתח" – לעבודה בצמדים יתרונות רבים אך לעיתים היא נזנחת בשל "העלות הכפולה". בשנים האחרונות עם עליית שיטות אג'יליות ו- Extreme Programming צורת עבודה זו יותר נפוצה. כששני…
    קרא עוד...
  • בודק - למד לשאול – Learn to Question
    בודק - למד לשאול – Learn to Question  בודק - למד לשאול – Learn to Question - Tony Bruce – חלק ניכר מעבודת הבודק כרוכה באיסוף מידע לגבי המערכת, התכונה או הנושא הנבדק.במהלך איסוף המידע נתקל במידע רב המגיע מגורמים שונים, וכולל הנחות אותן…
    קרא עוד...
לרשימה המלאה >>