יום ראשון, 13 במרץ 2016

בדיקת תעבורה בין הקליינט לשרת וחזרה

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

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


האם הגרסה המדווחת נכונה? – אם לא, אולי השרת "חושב" שיש לנו את הגרסה החדשה
שימוש בסניפרים, לוגים.


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


האם הגרסה נכונה?
שימוש בסניפרים, לוגים. בדיקה בבסיס הנתונים.


האם הלינק לגרסה החדשה תקין?
שימוש בסניפרים.


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


אם הוא מריץ, אולי הבעיה בקובץ ההתקנה או בסביבת הבדיקות.
לבדוק פרוססים, לוגים. להריץ את הקובץ עצמו.

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

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

אין תגובות:

פרסום תגובה

רשומות פופולריות