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

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

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

he icon   en icon

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

תכונות הטסט - מיקוד

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

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

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

נסתכל על מקרה פשוט נוסף, הפעם באותה פונקציה. יש לנו class בשם PositiveCalculator עם פונקציה Add שמחברת שני מספרים חיוביים, או זורקת exception אם הם לא כל כך חיוביים:

אנחנו יכולים לכתוב את הטסטים הבאים:

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

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

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

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

"אבל לא אני כתבתי את הקוד! מה לעשות?"

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

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

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

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

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

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

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

בפעם הבאה: בידול.

 

שונה לאחרונה ב רביעי, 30 יולי 2014 10:03

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

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

  • Applying agile principles to automation projects | Supreme Agile

    Applying agile principles to automation projects | Supreme Agile Automation projects can be very challenging, even for the most experienced teams. Each automation project has its own challenges, difficulties, and risks that cannot be forecast at the start of the project. In addition, there are other factors that can affect the project, such as the organizational culture, timelines, pressure from senior management and the available resources and their expertise.In this article, we will see how agile teams can use agile values and principles to meet challenges when facing an automation project. Now, it makes sense that agile teams can benefit from the agile manifesto and its main ideas when starting a large, complex automation project. Just think about the main concepts presented in the manifesto: collaboration, courage, safe environment, continuous feedback, communication, and most importantly: continuous improvement. Taking the Time to do it right the first time Every automation project will demand an investment from the team prior to finding the best solution. In addition, an agile team works under great pressure to deliver commitments after a very short period of time; therefore, the team must know how to work with senior management to get the time they need to succeed with the project.It’s very common that senior management focuses more on what the team delivers at the end of each sprint rather than on the work they need to do to succeed. Automation projects have a major impact on the whole project, but they are not delivered to the customer. This is why the team must get management[…]

    24.03.2019 | 4:02 קרא עוד...
  • My experience with the AST BBST Foundations Course

    My experience with the AST BBST Foundations Course Late last year I was looking for courses on software testing that I could fit around my work and family commitments that wouldn’t break the bank. How I got onto the course I did a bit of research and the Black Box Software Testing (BBST) Foundations course caught my attention.  As I looked into the course on the Association for Software Testing (AST) website I discovered that they run a scholarship program where successful applicants would have their AST membership fees and BBST Foundations course fees waived. I applied and was lucky enough to be awarded one of 5 available scholarships for the year! In return for getting free membership, and all course fees waived I was asked to write an experience report on the course.  However, there were no requirements or constraints put on me to write an “approved” article – my findings are from my own experience and my own point of view.  Phew, that’s the disclaimer out of the way. Black Box Testing At this point you might be wondering “what is Black Box Testing?” – Wikipedia’s definition is “Black-box testing is a method of software testing that examines the functionality of an application without peering into its internal structures or workings.” All good software testers should have a solid foundation in black box testing – it’s one of the key tools in validating tests, and is a useful way to get an idea of how an app should work in the eye of the user. The Course The BBST[…]

    24.03.2019 | 2:30 קרא עוד...
  • Disabling JavaScript using Selenium

    Disabling JavaScript using Selenium Contents:1) Introduction2) Why is Javascript-disabled page worth testing?3) Chrome4) Firefox1. IntroductionSome days ago I was looking for an easy way to disable JavaScript using chromedriver. It turned out to be surprisingly hard and once again I had to find proper Chrome preference in the Chromium source code.  If you ever wonder how to do something with your Chrome using Selenium I recommend my own Browser Capabilities explained post which has a lot of examples and links where to look for.  2) Why is Javascript-disabled page worth testing?Before we move on to Java demo let's wonder for a while: why do people disable JavaScript?a) Speed & BandwidthUsing Internet with an old computer and a slow connection is incredibly frustrating these days. You can try to throttle bandwidth in your Chrome via Developer tools and try it yourself... For your responsibility.b) Usability & AccessibilityRelying on javascript does not automatically mean the page is not accessible, although it makes it significantly harder for disabled people. Imagine that content blind person wants to find is hidden behind three JS-invoked actions. Would it be possible to access? Yes. Would it be usable? No.c) Security & PrivacyAny website can use JavaScript to gather information about things you do (or did) during your browsing session and upload them to an external server. That's enough reason for privacy-concerned people to disable it. JavaScript can also be used for XSS attacks.So, from the company perspective: why should we care and test our website with JavaScript disabled?a) SEOPerhaps the most important reason.[…]

    24.03.2019 | 3:33 קרא עוד...

טיפים

לרשימה המלאה >>