PracticU

סיבוכיות - Complexity

בלי כתוביותעם כתוביות
PracticU › קורס בדיקות ידניות - Manual Testing › סיבוכיות - Complexity
מילון מושגים:
תנאי - ביטוי לוגי בקוד שתוצאתו אמת או שקר, וקובע אילו פקודות יתבצעו בהתאם לערכו.
אופרטור - סימן בקוד שמבצע פעולה על ערכים, כמו חיבור, השוואה או פעולה לוגית.
פרמטר - ערך שמועבר לפונקציה או לפקודה כקלט, ומשפיע על אופן פעולתן ועל התוצאה שהן מחזירות.
משתנה - שם שמפנה למקום בזיכרון שבו נשמר ערך שיכול להשתנות במהלך ריצת התוכנית, כמו מספר, טקסט או אובייקט.
פונקציה - קטע קוד בעל שם שמבצע משימה מוגדרת, מקבל ערכי קלט (פרמטרים) ויכול להחזיר תוצאה. מאפשרת לארגן קוד ולהשתמש בו שוב.

סיבוכיות - Complexity
סיבוכיות (Complexity) היא מדד לרמת המורכבות של מודול או דרישה. ככל שהמודול מסובך יותר, כך גדל הסיכון שהוא לא ימומש נכון או שלא ייבדק כראוי. ההרצאה מתמקדת בסיבוכיות מעגלית (Cyclomatic Complexity).
הגדרה ומה משפיע עליה
1. רמת המורכבות: דרישה או מודול שמכילים יותר לוגיקה ויותר תנאים הם מסוכנים יותר.
2. הגורמים: גודל הדרישה או הקוד, זרימת הבקרה, מבנה הנתונים, ומבנה המודול עצמו, כמו מספר ה-if והמקרים שבו.
סוגי סיבוכיות
3. שיטה אלגוריתמית: סופרת אופרטורים ואופרנדים. אפשר למדוד אותה רק כשהתוכנה כבר גמורה.
4. צימוד בין מודולים: מודדת את הקשר בין מודולים דרך פרמטרים, משתנים גלובליים וקריאות לפונקציות. גם היא דורשת קוד גמור.
5. סיבוכיות מעגלית: מבוססת על מספר ההחלטות בעץ ההחלטות של המודול או הדרישה, ולכן אפשר לחשב אותה לפני שהקוד נכתב.
למה דווקא מעגלית
6. קשר לטעויות: מחקרים שהוזכרו בהרצאה, כולל מחקר של טום מכבי, מצאו קורלציה בין הסיבוכיות המעגלית של תוכנה לבין מספר הטעויות שבה.
7. בדיקות: המספר שמתקבל מראה את מספר המסלולים הבסיסיים בעץ, שהוא החסם התחתון למספר מקרי הבדיקה הנדרשים.
החישוב
8. נוסחה: סיבוכיות מעגלית = מספר הקשתות פחות מספר הצמתים ועוד 2, כשהגרף קשיר.
9. דוגמה: עץ עם 11 צמתים ו-15 קשתות נותן 15 פחות 11 ועוד 2, כלומר 6. זו תוכנה פשוטה עם שישה מסלולים בסיסיים, שנעברים כולם בבדיקות.
רמות סיכון
10. סקאלה: 1 עד 10 זו תוכנה פשוטה עם סיכון נמוך. 11 עד 20 היא מורכבות בינונית וסיכון בינוני. 21 עד 50 היא מורכבות גבוהה וסיכון גבוה. מעל 50 זו מורכבות כל כך גבוהה שהבדיקה לא ריאלית.
המדד מאפשר להעריך סיכון לפני כתיבת הקוד, ולכן הוא שימושי במיוחד לתכנון בדיקות.
השיעור הבא בקורס: Risk Based Testing

פרקי ההרצאה: סיבוכיות - Complexity

  1. 00:00

    מה זו סיבוכיות של מודול או דרישה

  2. 02:51

    הגורמים שמשפיעים על הסיבוכיות

  3. 03:52

    סיבוכיות אלגוריתמית - ספירת אופרטורים

  4. 05:23

    למה דווקא סיבוכיות מעגלית

  5. 06:16

    קורלציה בין סיבוכיות לכמות טעויות

  6. 07:35

    מה מודדת הסיבוכיות המעגלית

  7. 08:17

    מספר הבדיקות המינימלי לעבור על המסלולים

  8. 09:10

    חישוב סיבוכיות מעגלית מתורת הגרפים

תמלול ההרצאה: סיבוכיות - Complexity

הטקסט המלא של הדקות הראשונות בהרצאה «סיבוכיות - Complexity» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:06

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

  2. 00:38

    שם אנחנו נבוא ונראה איך עושים בדיקות מבוססות ניהול סיכונים. lesson objectives מטרות השיעור what is complexity אנחנו נדבר מה זה סיבוכיות מה היא באה למדוד מה היא באה לבדוק types of complexity methods נדבר על סוגי סיבוכיות בדגש על סיבוכיות סוג מסוים שנקרא cyclomatic complexity.

  3. 01:11

    וואי סקלומטי קומפלקסיטי נדבר למה דווקא אנחנו בוחרים להתמקד בסיבוכיות בשיטת סיבוכיות הזאתי נדבר על סקלומטי קומפלקסיטי נדגים אותה נסביר אותה ואחרי זה יהיה מספר תרגילים שיבואו שתיתנו לכם את האפשרות להתנסות בלמדוד סקלומטי קומפלקסיטי מהי סיבוכיות?

  4. 01:37

    The level of complication of a module or requirements סיבוכיות היא רמה של עד כמה מודול או דרישה הוא מסובך the greater the complexity of requirements the greater the risk is ככל שמודול הוא יותר מסובך או ככל שדרישה היא יותר מסובכת למימוש או יש בה יותר לוגיקה ככה היא תהיה יותר מסוכנת כי הסיכון הוא שבגלל הסיבוכיות בגלל

  5. 02:08

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

  6. 02:51

    צריך להתבסס גם על לפני שהקוד הכתוב, כי אם הקוד כבר נכתב אז הרבה דברים כבר מאוחר מדי להתכונן אליהם. measures that affect complexity מה הדברים שמשפיעים על סיבוכיות?

  7. 03:08

    size, הגודל של הדרישה, הגודל של הקוד, control flow, איך אפשר, הזרימה, זרימת הנתונים, data structure, באיזה בסיס נתונים משתמשים, איך הדאטה שמור, איך המבנה של המודול module structure כמה איפים יש לו כמה קייסים יש לו כמה עצי החלטה מה גודל עץ ההחלטה וכדומה טייפס אוף קומפלקסיטי יש כמה סוגים אנחנו נדבר עליהם סייקלומטיק קומפלקסיטי

  8. 03:44

    סיבוכיות סייקלומטית או מעגלית based on the number of decision in the software היא מבוססת על מספר ההחלטות או עץ ההחלטה של המודול או של הדרישה. All-State Complexity Algorithmic Complexity Counting the Operators + If and Operants זאת הסיבוכיות הזאת היא סיבוכיות אלגוריתמית היא סופרת את האופרטורים שאופרטורים זה סימנים

  9. 04:00

    כמו חיבור חיסור פעולות חשבון if case while וכדומה ואופרנדים, אופרנדים זה חמש ה-string end לא הפעולה ה-logic end, הפעולה ה-logic end היא אופרטור וכדומה.

  10. 04:37

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

  11. 04:51

    הנרין קפואה קומפלקסיטי זה coupling between modules using parameters, Global variables and function calls זה שיטה למדידת סיבוכיות שמתבססת על קשר זוגי בין מודולים פרמטרים משתנים משתנים גלובליים משתנים מקומיים קריאות לפונקציות וכדומה.

  12. 05:13

    שוב גם זאת שיטה שאפשר למדוד אותה אפשר לעשות אותה רק כשהתוכנה גמורה שהכל כבר רשום הקודק רשום. There are many other types of complexity יש עוד הרבה סוגים של סיבוכיות.

  13. 05:28

    We will talk only about cyclomatic complexity. אנחנו נתעסק רק בסייקלומטיק קומפלקסיטי או בסיבוכיות מעגלית. וואי סייקלומטיק קומפלקסיטי?

  14. 05:42

    למה דווקא סייקלומטיק קומפלקסיטי? מה היתרונות שלו? מה החסרונות שלו? can be done before the code is written. אז אפשר לעשות אותה לפני שבכלל נכתב קוד.

  15. 05:59

    למה? כי היא מתבססת על עץ החלטה, ועץ החלטה אפשר לצייר לפני שיש קוד. למעשה, אצל ההחלטה מתארגמים אחר כך לקוד דרר סטאדיז, טום מכבי, The show correlation between software cyclomatic complexity and its error frequency.

  16. 06:20

    טום מכבי עשה מחקרים ויש עוד מחקרים נוספים שנעשו ב-MIT ובכל מיני ארגונים גדולים שמצאו קורלציה מאוד יפה ומאוד נכונה בין ה-cyclomatic complexity של תוכנה לבין מספר הטעויות שקרו בה או מספר הארורים.

  17. 06:39

    או מבחינתנו זה גם כלומר שהדרישה לא התקיימה כמו שצריך. It can be used in the test plan itself אפשר להשתמש בסייקלומטי קומפלקסיטי בכל מה שקשור לטסט פלן. למה?

  18. 06:56

    כי סייקלומטי קומפלקסיטי נותן לי את גודל עץ ההחלטה. מה שהוא למעשה ייתן לי זה כמה מסלולים מינימליים או מספר המסלולים המינימלי שאפשר לעבור בעץ החלטה.

  19. 07:16

    to perform מאוד קל לממש אותו. The Cyclomatic Complexity אוקיי, סיבוכיות המעגלית מה היא למעשה? Measures the number of linear independent paths through a module.

  20. 07:35

    Cyclomatic Complexity מודדת למעשה את מספר הקשרים הליניאריים או מספר הדרכים במודול. שמה זה אומר? זה אומר מספר הדרכים בעת החלטה. כמה דרכים יש לי להגיע לכדי החלטה בעת החלטה?

  21. 07:56

    Give the result that be compared to other results. התוצאה שמקבלים הוא מספר, הוא מספר סופי. המספר הזה אפשר להשוות אותו למספרים אחרים ולכן הוא איזשהו פרמטר איכותי.

  22. 08:13

    פרמטר טוב הוא פרמטר מדיד. The cyclomatic number specifies the minimum number of test cases required to traverse every basis path. המספר שאנחנו מקבלים, המספר הסופי של ה-cyclomatic complexity, חוץ מזה שהוא אומר לי עד כמה המודול או הדרישה או התוכנה מסובכת בהשוואה למספרים

  23. 08:37

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

  24. 09:00

    ברור שאפשר לעשות יותר אבל לא תמיד צריך לעשות יותר. Derived from Graph Theory כל הרעיון של Cyclomatic Complexity הוא נלקח מתורת הגרפים במתמטיקה ובמדעי המחשב, מדידת המסלולים הקצרים, מסלולים ארוכים וכדומה.

  25. 09:28

    איך מחשבים את ה-Cyclomatic Complexity? ה-Cyclomatic Complexity שווה ל-e פחות n ועוד 2. e שווה ל-number of edges in the graph. אמרנו שיש לנו עץ החלטה, העץ החלטה הזה זה גרף.

  26. 09:42

    הוא מורכב מקודקודים, מצמתים וקשתות. P מייצג את מספר הקשתות בגרף N שווה ל-number of nodes in the graph, מספר הצמתים בגרף ו-P ש-P זה 2 זה the number of connected components.

  27. 10:07

    P מייצג את מספר הקומפוננטות המחוברות המקושרות בסייקלומטי קומפלקסיטי הוא תמיד 2 ולכן סייקלומטי קומפלקסיטי אחרי שציירנו את עץ ההחלטה ובדרך כלל עץ החלטה צריך לצייר אותו כדי לדעת לעבור עליו טוב יותר ולהבין אותו

לקורס המלא: קורס בדיקות ידניות אונליין

ההרצאה הקודמת: מבוא ל-Risk Based Testing ב-QA

ההרצאה הבאה: Risk Based Testing

קורסים נוספים במסלול

  • קורס בדיקות ידניות - QA
  • קורס הכנה למבחן ההסמכה ISTQB