יום שלישי, 3 במרץ 2009

פודקאסט מספר 9 - TDD - תיכנות מונחה בדיקות


היי לכולם
היום outbrain מארחת את הפודקאסט ואיתנו היום אורח, איתי הוכמן.
דיברנו על תכנות מונחה בדיקות והשלכותיו על חיינו.
  • אז מה זה בכלל TDD?
  • מה זה בכלל נותן לנו? מה נשאר מהמאמץ?
  • דרישות -> כתיבת בדיקות -> פיתוח. פעם אחת או מעגל מחזורי.
  • בדיקות לפי שורות קוד או מודולים או לפי פונקציונאלית.
  • מתי לכתוב את הבדיקות. לפני? אחרי? תוך כדי?!?
  • אם יש באג בקוד הבדיקה.
  • מי כותב את הבדיקות? המפתח? הבודק?
  • שימוש ב - continues integration server והרצת הבדיקות.
  • בדיקות אינטגרציה מול בדיקות יחידה.
  • הנסיון של רן, מיקרוסופט מול גוגל וגישתם ל- TDD.
  • ממילא אנחנו מריצים את הקוד בפיתוח - למה לא להריץ תחת בדיקות היחידה.
  • איך בודקים UI? איזה כלים יש? האם אפשר לבדוק אוטומטית?
  • כלים: Team-City - JUnit - JMeter
  • טירונות בגוגל ואח"כ המסלול לבגרות באיכות קוד.
  • TOTT - הגרסה הגוגלית ל"עד מתי נובמבר..." על הקיר בשירותים.
  • כמה מהר לתקן בדיקה שנכשלה? מתי יוצרים פתח לשכונת עוני.
היה שוב מאוד מעניין.
תודה לאיתי.
כאן הקובץ - ביי


12 תגובות:

  1. הי,

    אחלה פוסט.

    היה נחמד אם הייתם מקדישים פוסט לנושא
    performance,scalabillity,N+1 וכו'

    איל

    השבמחק
  2. רעיון מצויין - אייל
    נכניס לרשימה.
    יש מומחה מסויים שנראה לך ששווה לארח בנושא הזה?

    השבמחק
  3. רגע של עברית - introduce - אולי בהקשר הזה מתאים לומר "להציף"?

    השבמחק
  4. אה - ודרך אגב, אחלא פודקאסט, וגם השניים הקודמים - הדיון על הדיבגר היה בהחלט מעורר ומעניין.
    לגבי בדיקות - שווה גם להזכיר שיש כל מיני סוגים של בדיקות, לכל אחד יתרונות וחסרונות ומטרות שונו - החל מ-smoke test לבדוק שמשהו שכתבת פשוט עובד (אפילו במקרה אחד או שניים) דרך boundary tests שעוזרות לגלות את הפינות החשוכות בקצה הסקאלה ובאגים בסגנון "אופס שכחתי אחד", בדיקות מול מידע אמיתי או אפילו מול כל המידע האמיתי, בדיקות מול נתונים אקראיים... הרבה פעמים אפשר לפתח מודלים מאוד מעניינים של בדיקות, בלי שום קשר לקוד! :-)
    ולפינה הביבליוגרפית: אני ממליץ על המאמר הקריא "Beautiful Tests" http://media.techtarget.com/searchSoftwareQuality/downloads/BeautifulTests.pdf מתוך הספר "Beautiful Code" (יש כאלו שטוענים ששם הספר הוא אוקסימורון).

    מחכים לפודקאסט הבא!
    אודי

    השבמחק
  5. אני רק בקשה...

    שמות הקבצים (או הכותרות שלהם) בעברית קצת בעייתיים כי אייפוד קלאסיק דור 4/5 לא תומך בעברית. יש סיכוי שתשנו את שמות הקבצים (או ה ID3) למשהו שייתמך באייפוד?

    תודה...

    השבמחק
  6. אורי,

    אני לא מכיר מומחים. אבל אני בטוח שבגוגל יש מומחים.
    אולי מישהו מ GigaSpaces יש להם מוצר שעונה על הבעיה
    (לא מכיר מישהו משם באופן אישי).

    נ.ב

    זו בעיה מאד כואבת איפה שאני עובד יש לנו תשתיות של 5 שנים שלא תוכננו להיות scalable ועכשיו שאנו עומדים בפני עומסים לא אנושיים אנחנו כנראה נצטרך לעשות refactoring לתשתית שתהיה scalable דבר לא פשוט בכלל שצורך הרבה משאבים.

    איל

    השבמחק
  7. הי,

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

    אופיר

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

    השבמחק
  9. תשובה לאיל
    צור איתי קשר ב- אורי [דוט] רברסים [דוט] קום
    אולי אוכל לסייע מנסיוני לפני שנקליט את הפודקאסט.

    השבמחק
  10. תודה על הפודקאסט המעניין.
    רק מה שהיה חסר לי בהקשר של continuous integration זה דיון על כלים כמ Maven, Ant. מעוד מעניין אותי באילו כלים לבניה ואריזה משתמשים בגוגל וב- outbrain . יש מצב לשיחה בנושא הזה בפודקאסטים הקרובים?

    השבמחק
  11. בגוגל משתמשים בכלים פנימיים שלצערי לא אוכל לדבר עליהם. אלו כלים מאוד חזקים ומעניינים יחד עם זאת הם תפורים לאפליקציות של גוגל ובכל מקרה לא ניתנים לפרסום.
    איתי הזכיר את clear-case אם אינני טועה שמשמש את outbrain ל continuos integration.
    אולי אורי יוכל להרחיב מעבר לכך.

    השבמחק
  12. כן...
    כלי הפיתוח באאוטבריין הם בעיקר:
    ECLIPSE לפיתוח
    SVN לניהול הקוד והתצורה
    ANT לבניה
    ו- Team-city מבית IDE-A כשרת בניות והרצת בדיקות שבגדול מפותחות ב- JUNIT.

    השבמחק