יום שבת, 20 ביוני 2015

DNS והקשר לבדיקות קליינט סרבר ובדיקות ווב

ראיינתי עשרות אנשי בדיקות, חלקם בתחום שנים רבות, שלא ידעו לענות לי, אפילו בדרגה שטחית, על המושגים הבסיסיים ביותר בתחום. אם תסלחו לי רגע על הצדקנות, בודק ווב 5 שנים שלא ממש מבין מה זה cookie, כמעט בוודאות לא בדק את המוצר שלו כמו שצריך. סתם לצורך אנקדוטה, מישהו אפילו הסביר לי שפעם הוא שאל את המפתח מה זה cookie, אבל התשובה הייתה "מסובכת נורא". בכדי לדעת לבדוק מוצרי client-server בסביבת web צריך להתחיל מהיסודות הטכניים, להבין את זרימת המידע בין הקליינט לסרבר ועוד.
ידע זה אינו נשאר בספירה תיאורטית,  זה יכול לעזור גם לבדיקות עצמן:
1. בתכנון הבדיקות.
2. בהבנת מיקומה של הבעיה.
3. ככלים העוזרים לבדיקות.
  
כשלא יודעים מה זה cookie, אתה (בהתאמה):
1. לא יכול לבדוק שהצבת ה- cookie השיג את מטרתו (למשל לשמור מידע מאוד ספציפי על המשתמש), האם המידע שם שצריך להיות אכן מוצפן ועוד בדיקות.
2. לא תדע איפה להתחיל לדבג בעיות. למשל  איך זה שאני נזרק מהאתר במעבר בין דפים.
3. לעשות מניפולציה על ה- cookie בשביל לבדוק מה קורה כשלמשל תוקף ה-cookie פג.
  
אבל עכשיו אדבר דווקא על DNS, Domain Name System.
מה זה בעצם DNS? DNS הינו בראשונה פרוטוקול המשרת מערכת שמטרתה להמיר שמות דומיין מתווים שאמורים להיות בעלי משמעות (למשל: google.com) לכתובת IP (למשל: 173.194.112.169).
אפשר למצוא את כתובת ה-IP ידנית ע"י הרצת שורת הפקודה (windows+r, הקלקת CMD ו-Enter), ואז הפקודה: ping google.com.
אם אפשר להגיע לשרת נקבל את ה-IP.
בתסריט שהמחשב / הטלפון לא מכיר את ה-IP (תיכף אסביר איך ייתכן שהוא מכיר) זה עובד כך:
את מקלידה google.com ב-address bar של הדפדפן, מקליקה על ה-enter -> הדפדפן מחפש אצלו את ה-IP של גוגל. אם מצא הוא משתמש בו בכדי להגיע לשרת. אם לא מצא -> פניה לשרתי DNS. מדובר במספר רב של שרתים שמאחסנים כל אחד מידע יחסית קטן. זה מתחיל בפניה לשרת ה-ISP (ספק האינטרנט שלך – Internet Service Provider) שבמידה ואינו מוצא את ה-IP הוא מעביר את הבקשה לשרת DNS root שמעביר אותך לשרת אחר שאמור לספק את התשובה.
הכנתי תרשים לוגי בכדי להקל על ההבנה, לאו דווקא מדוייק במאת האחוזים.

DNS והקשר לבדיקות קליינט סרבר ובדיקות ווב

אבל אולי אותנו כבודקים יעניין התהליך הפנימי שקורה בתוך המחשב, תיכף אסביר למה.
לפני שהמחשב בכלל פונה לשרת DNS הוא פונה לקובץ מוגן משינוי שנקרא hosts ונמצא ב-C:\Windows\System32\drivers\etc (בווינדואוס כמובן. לגבי אנדרויד למשל אפשר לראות כאן). שם הוא מחפש את השם שהוקלד, למשל google.com. אם הוא מוצא אותו, זה יראה כך:
מה זה אומר? בעצם דבר פשוט: עזוב אותך אחי מללכת לשרת DNS וכאלה בזבוז זמן, אני יודע את הכתובת המדויקת של מה שאתה מחפש – זה 173.194.112.169. וזה מה שקורה – הדפדפן מחפש ישירות את 173.194.112.169.
  
למה זה טוב (פרט מלשגע מישהו ולתת לו IP של פייסבוק בכל פעם שהוא מקליד google.com)? זה טוב כשאנו צריכים לעבוד בבדיקות מול שרת מקומי. למשל את עובדת על אתר בשם atar.com. כשמקליקים את זה ברגיל, נגיע לאתר העובד שכל העולם יגיע אליו באותה דרך. אבל אנחנו בודקים את הגרסה החדשה של האתר בסביבת הבדיקות טרם עלייתו לפרודקשין. ולאתר בסביבת הבדיקות יש IP משלו. אז נכניס לקובץ hosts את השם atar.com עם ה-IP של שרת הבדיקות. עכשיו כשנקליק את שם האתר הדפדפן ונלחץ Enter, המחשב יחפש קודם בקובץ, ימצא את ה-IP הפנימי ויפנה אליו.
  
אבל אם אין את האתר בקובץ ה- hosts אנחנו עדיין לא ברשת. המחשב מחפש ב-DNS cache הפנימי שלו. רוצים לראות אותו? הקלידו את הפקודה הבאה:
ipconfig /displaydns
זה יראה כך:
ואם אתם תמיד מגיעים בבדיקות לאתר הלא נכון, כדאי למחוק את ה-DNS cache כך:
ipconfig /flushdns
  
ואם אתם רוצים להתחבר ישירות לשרת DNS מסויים:
בקונטרול פאנל לכו לרשתות לפי מה שמצויין בתמונה, פרופרטיס של ה-local area connection, פרופרטיס של Internet Protocol version 4:
בעקבות הערה בפורום, יש עוד פקודה המזכירה את ה-ping ונקראת nslookup. הפינג מורה לאן אתה מגיע בפועל. כלומר הוא עובד דרך הקש וקובץ ההוסטס, ואם הוא מגיע לשרת הוא יחזיר את ה-IP.
 nslookup יביא הכתובת האמיתית של השרת מבלי התייחס לקש, להוסטים או למצב השרת (הוא בודק בשרתי ה-DNS).
כלומר nslookup יותר מדוייק מפינג, אבל השאלה מה אתה צריך: להבין לאן אתה מגיע בפועל, או מה כתובת השרת.
  
  
  
  
  
מקורות:

  

אין תגובות:

פרסום תגובה

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