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

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

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

  • 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 קרא עוד...

טיפים

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