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

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

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

he icon   en icon

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

תכונות הטסט: קריאות

נכתב על ידי 
שישי, 18 יולי 2014 09:54
דרגו כתבה זו
(1 הצבעה)

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

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

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

טסטים אפקטיביים מקצרים את התהליך הזה. מה שמייחד אותם היא הקריאות.

זהו הפוסט השני מתוך סדרת התכונות כפי שתוארו בפוסט "מי בודק את הבדיקות". הפוסט מתורגם מהבלוג שלי: http://www.gilzilberfeld.com/2014/07/test-attribute-2-readability.html

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

 

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

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

לדוגמא:

@Test

public void divideCounterBy5Is25() { ...

אפשר להבין מהשם מה הטסט בודק (תסריט של חלוקה של Counter), הפרטים של המקרה (חלוקה ב-5), והתוצאה המצופה (25).

אם השם נשמע כמו משפט –מעולה. שמות טובים מגיעים מתיאור וורבאלי.

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

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

Test@

public void divideCounterBy0Throws() { ...

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

 

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

הנה כמה טיפים כדי להפוך קוד של בדיקה לקריא יותר:

  • טסטים צריכים להיות קצרים. כ 10-15 שורות.
  • אם האתחול (setup) ארוך, יש להוציא אותו לפונקציות פנימיות, וגם להן לתת שם קריא.
  • הימנעו משימוש באתחול שרץ לפני כל טסט, כמו פונקציות @before ב JUnit. עדיף להשתמש בקריאות ישירות לפונקציות מתוך הטסט. כשמסתכלים על הטסט, אתחול וניקוי אמורים להיות חלקים רציפים ממנו. אחרת, נצטרך לחפש בקוד, וגם להניח הנחות (לא בהכרח נכונות). גם לדבג טסטים כאלה זה לא כיף גדול, מכיוון שנכנסים לתוך הטסט עם קונטקסט "מפתיע".
  • הימנעו משימוש ב base test class. קד משותף הנמצא בהן מחביא מידע רלוונטי להבנת התסריטים.
  • הבליטו את ה assert, תנאי המעבר של הטסט.
  • וודאו שהשם והגוף תואמים.
  • ניתוח לוקח הזמן, והדרך הגרועה (והאיטית) לעשות אותו היא לדבג. טסטים (וגם קוד) צריכים להיות קריאים מספיק כדי שלא נצטרך לעשות זאת.

 

אנחנו לא אובייקטיבים. אנו חושבים שהקוד והבדיקות שלנו כל כך טובים, שכולם יבינו אותם.

בדרך כלל אנחנו טועים.

התשובה לבעיה בעולם האג'ילי היא פידבק.

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

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

 

הפוסט הבא: מהירות.

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

שונה לאחרונה ב שישי, 18 יולי 2014 10:08

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

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

  • Humidifier For Home Heater

    Humidifier For Home Heater humidifier for home heater humidifier for sq ft. . . . . . . . . . . . . . .

    25.05.2019 | 11:08 קרא עוד...
  • ATA Meetup #22 - Bangalore - Amazing experience

    ATA Meetup #22 - Bangalore - Amazing experience Reached super earlyThe session was supposed to start at 9 AM and I reached by 7.45 AM. I did not want to be late. Due to weekend's minimalistic traffic and super driver, I surprised myself and I thought I can just enter and wait in the hall. The security asked me the contact person name and I told him that there is a meetup by Agile Testing Alliance - did not help. I called up Aditya Garg and somehow the security got convinced that I can at least pass the main barricade and sit on the makeshift park seats.It was nice to experience fresh air, have fruits and dive into an interesting book called "The Practicing Mind" by Thomas M. Sterner. The Practicing Mind I remembered the discussions with Shrini Kulkarni about consciousness, mind, awareness as I read the book. Around 8.40 AM, Thrivikram and Venkata P from HCL welcomed and escorted me to the induction hall where we had the meetup. The conversation between them and the security folks was an interesting one making me think of the process adherence vs value addition. Learning for me: Know the contact person in advance and keep them informed about surprises in plan. HCL ServicesThe first session was by HCL management represented by Prashantha M who highlighted the various services offered by HCL, the case studies and the learning. There were few really good questions by the audience who wanted to know more details about the insights shared to them.My tip: Knowing[…]

    25.05.2019 | 11:55 קרא עוד...
  • Performance testing (benchmarking) Java code with JMH

    Performance testing (benchmarking) Java code with JMH Contents:1) Introduction2) Is it easy?3) Common pitfalls4) Setup5) How to configure JMH?6) Configuration options7) Configuration - predefining state8) Demo9) Results10) Further reading1. IntroductionAs test engineers when we approach performance testing we usually only think about final end-to-end application verification with tools such as JMeter, Locust or Gatling. We know that such tests should run on a separate environment with conditions resembling production as close as possible. Unfortunately in some cases (especially with monolithic architecture) dedicated performance testing environment is hard to get. What to do in such cases? Should we test on common test environment? Or should we test on production? Or maybe we should change our approach to performance testing?  Each option has advantages and disadvantages.Today I'd like to describe low-level performance testing (often called benchmarking) of Java code. It does not require a separate environment. It can be executed directly from your IDE (although that's not recommended) or from the command line. Measuring the performance of critical pieces of code is essential for everyone who creates applications, frameworks, and tools. Testers are co-creators so it's also our responsibility. 2) Is it easy?Benchmarking correctly is hard. There are multiple optimizations implemented on the JVM/OS/hardware side which make it challenging. In order to measure right, you need to understand how to avoid those optimizations because they may not happen in the real production system. Thankfully, there is a tool which helps you mitigate those issues called JMH (Java Microbenchmark Harness). It was created for building, running, and analyzing nano/micro/milli/macro benchmarks written in Java[…]

    25.05.2019 | 8:10 קרא עוד...

טיפים

  • טיפים לאוטומציה יעילה - Dale Emery
    טיפים לאוטומציה יעילה - Dale Emery (How to Survive the Coming Test Automation Zombie Apocalypse (PDF slide deck By Dale Emery bit.ly/15XFGkp סט שקופיות מעולה המתאר את מרבית המחלות התוקפות פעילויות אוטומציה - ומדגיש כיצד לטפל בהן! על כל שקופית ניתן לפתוח…
    קרא עוד...
  • אל תחכה שיתנו לך הזדמנות
    אל תחכה שיתנו לך הזדמנות אם אתה רוצה להתפתח - אל תחכה שיתנו לך הזדמנות, קח אותה - למד, בצע והדגם הדבר בזמנך הפנוי - מישהו כבר יאמץ את זה וייתן לך את הקרדיט.   טיפים מחברי ITCB-AB
    קרא עוד...
לרשימה המלאה >>