automation_infra

מהן תשתיות אוטומציה ?

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

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

בואו נראה דוגמא, ניקח למשל את האתר של גוגל: נכניס לשדה החיפוש: “קורס סלניום” , נלחץ על כפתור החיפוש ונוודא כי האתר הראשון שמופיע לנו הוא אתר למעשה הבלוג של “עתיד האוטומציה” – די פשוט, לא ?

המימוש הזה הולך כך:

 

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

או לחילופין – האם זה מכין אותנו כהלכה לקראת ראיונות עבודה ? האם זוהי הדרישה ?

 

 

התשובות לכל השאלות הללו הן לא, לא, לא ולא.

כפי שרשמתי בהתחלה – לדעת לקרוא לפקודות ב-Selenium לא הופך את הקוד שלנו לתשתית.

אז מהי למעשה תשתית ? מהי מכילה ?

להלן רשימה של תהליכים אותם יש לממש בכדיי לכתוב פרוייקט אוטומציה תשתיתי , כאשר מעליו נוכל לכתוב את הפונקציונליות ב-Selenium , ב-Appium , ב-Winium או בכל ספריית קוד המאפשרת לנו לאטמט פעולות:
1. נזהה את כל האלמנטים של הדף (שדות טקסט , כפתורים, קישורים…) ונגדיר אותם במחלקה מסויימת, במחלקה זו נוכל גם לממש פונקציות שעושות כמה פעולות – למשל הכנסת טקסט ולחיצה על כפתור – עפ”י הזיהויים שביצענו מקודם (מה שנקרא – Page Objects)

2. נכתוב מנגנון שידע להיות מופעל ברגע כישלון בבדיקה

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

4. נכתוב ונממש מערכת ליצירה ודיווח לדוחות (Reporting) של ריצת האוטומציה

5. נדע גם להכניס לדוחות האלו צילומי מסך (וידאו ?) בזמן כשלון

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

7. נרצה אולי גם לתמוך בטכניקת ה-Visual Testing בה אנחנו נבצע השוואת תמונות (בדיקה שהאתר שלנו נראה כפי שהוא אמור להיראות – ואם למשל שדה החיפוש זז 6 פיקסלים ימינה – הטסט יכשל)

8. נתמוך בכמה דפדפנים שונים להרצה

9. נממש גם כתיבה לקבצי לוג (בניגוד לדוחות – כאן נשמור מידע עבור המפתחים הכולל גם stack trace ופרטים נוספים מה-exceptions שיזרקו לנו במקרה של כשלון הבדיקה)

10. נרצה אולי לממש גם מקום מרכזי אחד בו נזהה את כל המאפיינים של אלמנטים שלנו באפליקציה (מה שנקרא – Object Repository)

11. נרצה אולי להתחבר ל-DB של המערכת בכדיי לבצע שאילתות לשליפת נתונים (אני יודע שאין לנו תכלס גישה ל-DB של גוגל… אבל בשביל תיק העבודות אנחנו יכולים לדמות משהו – זה לא כזה קשה)

12. נרצה לממש גם את שיטת ה-Data Driven Testing לקרוא מתוך קבצי CSV / Excel …

13. רצה לממש גם את שיטת ה-Keyword Driven Testing או ה-BDD עם שפת ה-Gherkin

14. נתמוך בהרצה מקבילית של הרצות על סביבות שונות

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

16. נתמוך בתיזמוני ריצות ובהתממשקות למערכת CI (ניתן להתקין ג’נקינס לדוגמא על המחשב ולעבוד מולו)

17. נתמוך בפלטפורמות של Mobile Device ולא רק Web

18. אפשר גם להרחיב עוד את התמיכה לפלטפורמות Desktop Apps

19. את כל הבלאגן הזה כמובן נכתוב לפי Design Patterns מוכרים , לפי שיטות של Clean Code , קונבנציות תכנותיות אשר הוגדרו מבעוד מועד בשלב ה-Design ונתעד כל דבר קטן

 

iconpuzzle1

 

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

כלל האצבע שלי הוא: אם יותר מ-20 אחוז מהקוד שלנו משתמש בספריות של Selenium – זה אומר שלא כתבנו את הפרוייקט שלנו כמו שצריך !

 

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

Automation-Framework

עכשיו , שימו לב לחץ הזה שנקרא Execution , זהו החץ שמקשר בין פרוייקט האוטומציה שלנו לבין המערכת הנבדקת (Application Under Test) – או במילים אחרות: זה למעשה Selenium ורק זה.

 

6 comments

כתיבת תגובה

האימייל לא יוצג באתר. (*) שדות חובה מסומנים

היי, אני לא רובוט *

תגי HTML מותרים: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">