DCSIMG
January 2012 - Posts - Miky Schreiber's BI Blog

Miky Schreiber's BI Blog

BI, Datawarehousing and OLAP

January 2012 - Posts

בדיקות מחסן נתונים

הרבה זמן לא כתבתי, בעיקר בגלל עומס בעבודה אבל אני יודע - זה בכלל לא תירוץ, אז קדימה לעבודה.

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

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

אשמח לקבל מכם רעיונות נוספים. תהנו.

  • הגדרת טבלאות היעד
    • כל השדות הרצויים הוגדרו
    • אורכי שדות תקינים
    • הגדרות nullable
    • שמות שדות לפי הסטנדרט
    • אינדקסים רצויים הוגדרו (עם שמות סטנדרטיים)
  • ETL
    • בדיקה שה-ETL כולו סיים בהצלחה
    • בדיקה שכל השלבים ב-ETL אכן רצו
    • בדיקה ב-log-ים שאין הודעות שגיאה
    • בדיקה שה-ETL אכן הכניס/עדכן/מחק רשומות בטבלאות היעד
    • בדיקה שטבלאות ביניים האמורות להימחק בסיום התהליך אכן ריקות או לא קיימות
  • שליפות פרטניות
    • שלוף לפי ערך מסוים באינדקס (לדוגמא, לקוח מסוים) ובדוק שכמות הרשומות תואמת לשליפה המקבילה במערכת המקור
    • שלוף לפי ערך מסוים באינדקס (לדוגמא, לקוח מסוים) ובדוק שהשדות מכילים את הערכים המופיעים במערכות המקור. אם מתבצעות מניפולציות על חלק מהשדות ב-ETL, בדוק את תקינות החישובים.
    • חזור על הפעולות הללו לסוגים שונים של ערכים, כאשר החלוקה היא לפי מקרים הגורמים לחישובים שונים ב-ETL. לדוגמא, לקוח חדש, לקוח מתמיד, לקוח ללא ת.ז. תקינה וכו'
  • שליפות כוללות
    • השווה כמויות אל מול מערכות המקור. אם ה-ETL מכפיל או משמיט רשומות - בצע את ההשוואה בהתאם.
    • בדוק האם ישנם שדות שתמיד יש בהם אותו הערך (בדגש על null)
    • בדוק את (max(dwh_create_date בכל טבלה ע"מ לוודא שאכן הוכנסו נתונים
    • בדוק שאין רשומות כפולות בטבלת היעד
    • האם כל מה שמוגדר כ-Unique הוא באמת כזה
    • האם ביחסי Foreign Key אין רשומות יתומות/עריריות
  • בדיקות אינטגרציה וביצועים
    • ביצוע JOIN מטבלת ה-FACT (או הטבלה המרכזית של הפרויקט) לטבלאות המימד ובדיקה שאין הכפלה או השמטה של רשומות. לדוגמא, JOIN מ-FACT המכירות לטבלת מימד הלקוחות.
    • תקינות של טבלאות Slowly Changing Dimensions
    • במידה ומתבצע מיקבול של טבלאות (רלוונטי ל-exadata, netezza ודומיהן) - לבדוק שהתפלגות הנתונים בשרתי ה-slave השונים נורמלית (לדוגמא, שאין שרת אחד המכיל 90% מהרשומות)
    • בפרויקט קיים - השוואת זמני ריצה של שאילתות מייצגות (מה-log) לפני ואחרי השינויים
  • חווית משתמש
    • בדוק שהאפליקציה (מחולל דו"חות בדר"כ) מצליחה לשלוף את הטבלאות מבסיס הנתונים
    • בדוק ששליפה אורכת אותו אורך-זמן כמו שליפה ישירות מול בסיס הנתונים
    • במקרה והאפליקציה מבצעת דברים בעצמה (מעבר להצגת הנתונים מבסיס הנתונים), בדוק את תקינותם
  • Security
    • לבדוק עבור מספר משתמשים בעלי הרשאות שונות שהם רואים מה שהם צריכים לראות ולא רואים מה שהם לא צריכים לראות
    • לבדוק שטבלאות היעד אינן מכילות רשומות שאף-משתמש לא אמור לראות (לדוגמא, משכורת המנכ"ל)
  • ביצוע סקר קוד אצל הגורם הרלוונטי (חבר צוות / ראש צוות / DBA וכו')

Bookmark and Share