בדיקת תוכנה עצמאית
-
@nigun אמר בבדיקת תוכנה עצמאית:
איך אתם בודקים את הקוד שלכם?
נגעת בנקודה מכאיבה...
אני לא מספיק בודק... הלוואי שהבוס היה מחייב את זה... (אתה מקשיב? ?)נראה לי שבענין הזה יש שני סוגי אנשים. יש כאלו שרוצים לשלוט על הכל בעצמם, ויש אנשים שרוצים שהפריימוורק ישליט קצת סדר בשבילם. אני מעדיף שהפריימוורק ישליט את הסדר בשבילי. זה מפחית מהמשא הקוגניטיבי.
לכן הייתי שמח לעבור לצורת פיתוח שמחייב כתיבת טסטים.
(הייתי רוצה גם לעבור ל-typescript מהסיבה הזו. מגדירים את ה-types וכו' ואז סומכים על הקומפיילר למנוע מחלקה שלימה של סוגי באגים)
TDD BDD
לא למדתי אף פעם את פירוש המילים של buzz words אלו... נראה לי שהרעיון הוא שכל חתיכת פונקצינאליות שאתה מממש אתה אמור לכתוב טסטים שמוודא שזה עושה מה שהתכוונת שזה יעשה
ובכל בנייה של הפרוייקט אתה מריץ את הטסטים כדי לוודא שלא היתה ריגרסיה (regression).
כמו כן בכל תיקון באג אתה כותב טסט שמורץ שוב בכל בנייה לוודא שהבאג לא יחזור שוב.
פיתוח מסוג זה מחייב כתיבת קומפוננטים שמבודדים אחד מהשני בצורה שאפשר לכתוב טסטים לקומפוננט בלי לערב את כל שאר האפליקציה. זה מחייב התרגלות וחינוך.
כמו כן כתיבה של טסטים טובים שלוקחים בחשבון כל סוגי מצבים לא מצופים חייב חינוך.
אשמח ללמוד עוד על הנושא!
-
@yossiz
גם בGO הקומפיילר מגלה חצי מהבאגים (שמות משתנים).אבל אני מדבר על הקונספט של TDD שאומר תכנות מונחה בדיקות
שקודם כותבים בטסטים מה אמור להיות הפלט של כל פונקציה.זה אומנם דורש עוד הרבה עבודה
אבל חסידי השיטה טוענים שזה חוסך זמן בכתיבת הקוד
כי זה מחייב לתכנן בדיוק מה כל פיסת קוד תעשה.את הרעיון איך עושים את זה? ראיתי על פונקציה פשוטה
אבל אני מנסה ללמוד את התפיסת עולם של זה.אשמח לשמוע גם על שיטות אחרות , אני לא נעול על TDD( אפילו שזה נראה לי הבאזז היום).
אגב BDD זה מילה שלמדתי היום (בגלל שנתקלתי בספריה של זה בGO)
וזה אומר פיתוח מונחה התנהגות
אבל מה זה אומר בפועל, לא ממש הבנתי. -
-
ניסיתי היום לעבוד קצת עם unit testing
(בעיקר כי היה לי באג נסתר בקוד ששכב שם הרבה זמן עד שלקוח התלונן
ושמתי לב שVSCODE מציע לי unit testing בקליק)
אבל הקטע הבעייתי עכשיו הוא שכמעט כל הפונקציות שלי תלויות במשתנים שמגיעים מDB HTTP TCP.מה אמור להיות הגישה?
אולי כבר לא קוראים לזה unit testing אלא integration testing? -
@avr416
לאחרונה שמעתי את הפודקאסט הזה על TDD
הנקודה שיצאה לי זה שצריך לכתוב בדיקות, ובאופן טבעי אם כותבים את הבדיקות אחרי שכותבים את הקוד, נוטים לחפף או לדחות את הכתיבה של הטסט.
לכן הדרך הכי טובה (לפי השיטה של TDD) כשבאים לכתוב קטע קוד, הוא לכתוב קודם את הטסט (לא אמור לקחת הרבה זמן) ורק אז את הקטע קוד, אבל לא צריך לכתוב את כל הטסטים של כל הפרוייקט ורק אז להתחיל לכתוב קוד, זה רק עניין של מיקוד לפני כתיבת הקוד.
אפשר למצוא עוד שיטות להכריח לכתוב טסטים אבל הם טוענים שזה הכי יעיל. -
עוד פודקאסט על TDD
https://changelog.com/gotime/185
למי שאין כח להקשיב, עוד כמה ימים כנראה יהיה תמלול.הם התייחסו שם לטענה שזה מאריך את הזמן
וטענו שלהיפך כתיבת עוד כמה שורות קוד זה לא באמת מה שיוסיף עוד זמן
ורוב הזמן אנחנו משקיעים בלחשוב "איך לכתוב?" (לא מודדים מפתח לפי המל"ד שהוא מקליד)
וכתיבה של TDD אמורה לסדר את המבנה של התוכנה בראש, כך שזה אמור לשפר את זמן הפיתוח. -
@nigun כל זה כשלמי שרוצה את התוכנה ברור מה הוא רוצה
מהנסיון שלי, ברוב המקרים ללקוח לא ברור מה הוא רוצה שיהיה בכל מצב (במקרה הטוב. במקרה הפחות טוב, מתחילים בכוונה עם בעיות כדי לפתור אותן אח"כ)וגם כשכולנו מפתחים לעצמינו לא ברור לנו עד הסוף מה אנחנו רוצים בכל שלב......