מיכון בדיקות יחידה

מיכון בדיקות יחידה (באנגלית: Automatic Unit Testing) הוא תת-ענף של בדיקות יחידה בהנדסת תוכנה. המיכון (אוטומציה) מתבטא ביצירה של הבדיקות והרצתן באופן אוטומטי. השימוש באוטומציה נועד להקל על מפתח התוכנה, על בודק התוכנה, ויכול לחסוך לחברת התוכנה משאבים רבים.

יתרונות שימוש באוטומציה לבדיקות יחידה

  • בדיקות יחידה נועדו לבדוק את הרכיבים הקטנים ביותר במערכת הניתנים לבדיקה (מודול). כתוצאה מכך, במערכות גדולות ייתכנו מאות, אלפי, ואף עשרות אלפי בדיקות יחידה. שימוש בטכניקות אוטומטיות מאפשר יצירה מהירה של כמויות גדולות של בדיקות והרצתן, בהשקעה מינימלית של זמן, כסף, ומשאבים נוספים.
  • שימוש באוטומציה יכול לעזור לכותבי הבדיקות לייצר בדיקות טובות יותר. תוכנות אוטומטיות יכולות לבדוק כיסויים של חלקי קוד באמצעות מדדי כיסוי ולוודא שלא נשארו חלקים ללא בדיקה, או שקיימות בדיקות כפולות שניתן לוותר עליהן, ובכך לייעל את מערך בדיקות היחידה (Test suite).
  • שימוש באוטומציה לבדיקות יחידה הוא חיוני במיוחד במתודולוגית TDD, עקב שימוש נרחב בבדיקות יחידה. לרוב כותבים את בדיקות היחידה לפני כתיבת הקוד, כך שכל פעם נכתבת בדיקה אחת, ואז מתבצע Refactoring, כך שהבדיקה החדשה והבדיקות הקודמות עוברות, וחוזר חלילה. איטרציות אלו מחייבות יכולת יצירה והרצה של הבדיקות בצורה מהירה ויעילה, והכלים האוטומטיים מאפשרים זאת.

מגבלות השימוש באוטומציה לבדיקות יחידה

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

סיווג טכניקות וכלי האוטומציה

ניתן לסווג את טכניקות האוטומציה לפי כמה קטגוריות מרכזיות:

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

סביבת פיתוח

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

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

תמונת מסך של JUnit. הפס הירוק בראש המסך מסמן שכל הבדיקות שהורצו עברו

יצירת בדיקות יחידה

תהליך היצירה מתחלק לשני חלקים:

  • יצירת רצף של הפעלות של פונקציות מתוך המחלקה הנבדקת (Class Under Test).
  • סיפוק טענת נכונות (Assertion) המאפשרת לקבוע האם תוצאות הבדיקה נכונות או שגויות.

יצירת הרצף

קיימות מספר טכניקות ליצירת רצף הקריאות שמהן תורכב הבדיקה.

Random

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

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

Symbolic

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

דוגמה לניתוח סימבולי

בדוגמה להלן ניתן לראות פונקציה בסיסית, המקבלת ערך ונכשלת אם הערך הוא 12. בניתוח סמבולי, לכל משתנה קלט מקושר סימבול, ומתקיים מעקב אחרי מצב הסימבולים לאורך הקוד. במקרה הזה Y יקושר לסימבול, והוא יסומן ב-S, בזמן הקריאה, ובהמשך יקושר לערך 2S. בכל פעם שהקוד מגיע לתנאי, כגון y==12, יוגרל הכיוון שבו יתקדם הרצף בקוד ויתווסף אילוץ שיציין איזה מסלול נבחר בקוד. למשל במקרה הזה הוגרל true, והאילוץ יהיה 2S=12.

y = read()
y = 2 * y
if (y == 12)
 fails()
print("OK")

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

סיפוק הבדיקה (Assertion)

קיימות מספר טכניקות למציאת הסיפוק המתאים.

Uncaught Exceptions

טכניקה זו מסתמכת על העקרונות:

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

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

Operation Model

בטכניקה זו בודקים את ה-"Invariant" של האובייקטים ותנאי ההתחלה והסיום של המתודה ורק אם הם נשמרו אז המתודה מספקת.

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

Capture & Replay

טכניקה זו משתייכת לשני החלקים יצירת הרצף ומציאת הסיפוק יחד.

בשלב ראשון (שלב ה-Capture) מפעילים את המתודה הנבדקת "מקליטים"/שומרים את תוצאות המתודה ו/או את מצבה של המערכת (state - ערכים במשתנים ובשדות של האובייקטים) לאחר הפעלת המתודה.

בשלב שני מופעלת שוב את המתודה ומשווים את תוצאתה ו/או מצב המערכת שמתקבלים הפעם לנתונים שנשמרו בשלב ה-Capture וכל סטייה תחשב לטעות. כלומר רק אם הנתונים יהיו זהים המתודה תספק.

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

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

בחירת בדיקות יחידה

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

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

תעדוף בדיקות יחידה

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

ראו גם

קישורים חיצוניים

Read other articles:

Pope Francis: A Man of His WordSutradaraWim WendersProduserSamanta Gandolfi BrancaAlessandro Lo MonacoAndrea GambettaWim WendersDavid RosierSkenarioWim WendersDavid RosierPemeran Paus Fransiskus Penata musikLaurent PetitgandSinematograferLisa RinzlerPenyuntingMaxine GoedickePerusahaanproduksi The Palindrome Centro Televisivo Vaticano Célestes Images Solares Fondazione delle arti Neue Road Movies Decia Films Fondazione Solares Suisse PTS Art's Factory DistributorFocus FeaturesTanggal ri...

 

Kamaal Dhamaal MalamaalPoster rilis pertamaSutradaraPriyadarshanProduserPercept Picture CompanySkenarioNeeraj VoraCeritaBenny P. NayarambalamPemeranNana PatekarParesh RawalOm PuriShreyas TalpadeShakti KapoorAsraniMadhurimaPenata musikLagu:Sajid WajidSkor Latar Belakang:OuseppachanSinematograferR GaneshPenyuntingT. S. SureshPerusahaanproduksiPercept Picture CompanyTanggal rilis 28 September 2012 (2012-09-28) NegaraIndiaBahasaHindiAnggaran₹150 juta (US$2,1 juta)Pendapatankotor...

 

Konklaf Maret 1447Lambang Kekosongan Takhta SuciTanggal dan lokasi4–6 Maret 1447Santa Maria sopra Minerva, Negara GerejaPejabat pentingKetuaGiovanni BerardiWakil KetuaFrancesco CondulmerCamerlengoLudovico TrevisanProto-imamHenry BeaufortProto-diakonProspero ColonnaPemilihanKandidatProspero ColonnaPaus terpilihTommaso Parentucelli(Nama pilihan: Nikolas V)← 14311455 → Konklaf 4–6 Maret 1447 memilih Paus Nikolas V untuk menggantikan Paus Eugenius IV di basilika Roma Santa Maria...

Amir Abadi JusufLahir01 Januari 1951 (umur 73)Jakarta, DKI JakartaKebangsaanIndonesiaAlmamater- Universitas Indonesia, DKI Jakarta - University of Hawaii, Honolulu, Amerika SerikatPekerjaanAkuntan Publik, DosenDikenal atasPendiri & Chairman RSM Indonesia Amir Abadi Jusuf lahir 1 Januari 1951 adalah seorang akuntan publik dengan pengalaman lebih dari 40 tahun dan pendiri dari Kantor Akuntan Publik KAP Aryanto, Amir Abadi Jusuf, Mawar & Rekan yang berkembang menjadi RSM Indonesia,...

 

State park property of California Delta MeadowsWaterfront of Delta Meadows River ParkShow map of CaliforniaShow map of the United StatesLocationSacramento County, California, United StatesNearest cityWalnut Grove, CaliforniaCoordinates38°15′31″N 121°30′6″W / 38.25861°N 121.50167°W / 38.25861; -121.50167Area472 acres (191 ha)Established1985Governing bodyCalifornia Department of Parks and Recreation Delta Meadows River Park (DMRP) is a state pa...

 

School District 27 Cariboo-ChilcotinSchool District 27 Cariboo-Chilcotin logoLocationWilliams LakeWilliams Lake, 100 Mile House, 150 Mile House, Anahim Lake, Lone Butte, Horsefly, Lac La Hache in Northwest CanadaDistrict informationSuperintendentMr. Chris van der Mark [1]Schools30BudgetCA$52.8[2] millionStudents and staffStudents5,800Other informationWebsitewww.sd27.bc.ca School District 27 Cariboo-Chilcotin is a school district in central British Columbia. It covers a large g...

Kiss date HidarikikiGambar sampul Tipe A edisi terbatasSingel oleh SKE48Sisi-BKamigami no RyouikiTaiikukan de Choushoku o (Tipe A)Tori wa Aoi Sora no Hate o Shiranai (Tipe B/Edisi Teater)Atto Iuma no Shoujo (Tipe C/Edisi Teater)Dirilis19 September 2012FormatCD SingelGenreJ-popLabelAvex TraxPenciptaYasushi Akimoto (lirik)Yuma Kawashima (pencipta #1)Toshikazu Kakuno (pencipta Tipe A #2)Ikuta Machine (pencipta Tipe B #2)Sayuri Yoshitomi (pencipta Tipe C #2)Eriko Yoshiki (pencipta #3)ProduserYasu...

 

Questa voce sull'argomento calciatori tedeschi è solo un abbozzo. Contribuisci a migliorarla secondo le convenzioni di Wikipedia. Segui i suggerimenti del progetto di riferimento. Thomas Ritter Nazionalità  Germania Est Germania (dal 1990) Calcio Ruolo Difensore Termine carriera 2005 Carriera Squadre di club1 1986-1989 Dinamo Dresda3 (0)1989-1990 Fortschritt Bischofswerda6 (0)1990-1992 Kickers Stoccarda71 (1)1992-1996 Kaiserslautern107 (2)1997-1999 K...

 

This article includes a list of general references, but it lacks sufficient corresponding inline citations. Please help to improve this article by introducing more precise citations. (August 2019) (Learn how and when to remove this message) This article is about the duchess of Gloucester, daughter-in-law of Edward III. For her aunt, see Eleanor de Bohun, Countess of Ormonde. Duchess of Gloucester, Duchess of Aumale, Countess of Buckingham and Countess of Essex Eleanor de BohunDuchess of Glouc...

此條目可参照英語維基百科相應條目来扩充。 (2021年5月6日)若您熟悉来源语言和主题,请协助参考外语维基百科扩充条目。请勿直接提交机械翻译,也不要翻译不可靠、低品质内容。依版权协议,译文需在编辑摘要注明来源,或于讨论页顶部标记{{Translated page}}标签。 约翰斯顿环礁Kalama Atoll 美國本土外小島嶼 Johnston Atoll 旗幟颂歌:《星條旗》The Star-Spangled Banner約翰斯頓環礁�...

 

هنودمعلومات عامةنسبة التسمية الهند التعداد الكليالتعداد قرابة 1.21 مليار[1][2]تعداد الهند عام 2011ق. 1.32 مليار[3]تقديرات عام 2017ق. 30.8 مليون[4]مناطق الوجود المميزةبلد الأصل الهند البلد الهند  الهند نيبال 4,000,000[5] الولايات المتحدة 3,982,398[6] الإمار...

 

Fictional character Lori GrimesThe Walking Dead characterLori Grimes, as she appears in the comic book series (left) and as portrayed by Sarah Wayne Callies in the television series (right).First appearance Comic: Issue #2 (2003) Rick Grimes 2000: Issue #75 (2010) Television: Days Gone Bye (2010) Literature: The Fall of the Governor - Part Two (2014) Last appearance Comic: Issue #55 (2008) Rick Grimes 2000: Skybound X (2021) Television: Say the Word (2012) Literature: The Fall of the Governor...

University of BrightonJenisPublikDidirikan1859 (sebagai Akademi Seni Brighton)1992 (Status Universitas)[1]Dana abadi£0.78 juta (2013)[2]Wakil KanselirJulian CramptonStaf administrasi2,600[3]Jumlah mahasiswa21,000[4]Sarjana17,005[4]Magister4,005[4]LokasiBrighton, Eastbourne, Hastings, Inggris, Britania RayaSitus webwww.brighton.ac.uk Universitas Brighton (bahasa Inggris: University of Brighton) merupakan universitas publik yang terletak...

 

Kabupaten SanggauKabupatenJembatan Tayan SanggauKeraton TayanIstana Surya Negara LambangPetaKabupaten SanggauPetaTampilkan peta KalimantanKabupaten SanggauKabupaten Sanggau (Indonesia)Tampilkan peta IndonesiaKoordinat: 0°06′N 110°36′E / 0.1°N 110.6°E / 0.1; 110.6Negara IndonesiaProvinsiKalimantan BaratTanggal berdiri-Dasar hukumUndang–undang Darurat Nomor 3 Tahun 1953Hari jadi7 April 1616[1]Ibu kotaKapuas[2]Jumlah satuan pemerintahan Daft...

 

American judge (born 1963) Raag SinghalJudge of the United States District Court for the Southern District of FloridaIncumbentAssumed office December 20, 2019Appointed byDonald TrumpPreceded byJames I. CohnJudge of the Seventeenth Judicial Circuit Court of FloridaIn officeSeptember 30, 2011 – December 20, 2019Appointed byRick ScottPreceded byVictor TobinSucceeded byMichael Davis Personal detailsBorn1963 (age 60–61)Philadelphia, Pennsylvania, U.S.EducationRice Univers...

Artikel ini bukan mengenai Ketua Partai Konservatif (Britania Raya). Pemimpin Partai KonservatifLeader of the Conservative PartyPetahanaRishi Sunaksejak 24 Oktober 2022JenisPemimpin partaiPejabat perdanaRobert Peel (de facto) Bonar Law (de jure)Dibentuk1834 (de facto)1922 (de jure) Pemimpin Partai Konservatif (bahasa Inggris: Leader of the Conservative Party), atau secara resmi Pemimpin Partai Konservatif dan Unionis (bahasa Inggris: Leader of the Conservative and Unionist Party)...

 

I popoli italici stanziati in Abruzzo e Molise I Vestini ([ves'tini][1]; in latino Vestīni) erano un popolo italico di lingua osco-umbra, stanziato in una vasta zona che dall'Altopiano delle Rocche e la valle dell'Aterno si estendeva sino al mare Adriatico all'altezza di Penne, includendo Città Sant'Angelo e Pescara[2], di cui controllavano il porto. Entrati in conflitto con la Repubblica romana alla fine del IV secolo a.C., presto furono indotti dall'evidente supremazia del...

 

American businessman Tom Leppert58th Mayor of DallasIn officeJune 25, 2007[1] – February 25, 2011Preceded byLaura Miller[2]Succeeded byDwaine Caraway[3] Personal detailsBornThomas Chris Leppert (1954-06-15) June 15, 1954 (age 70)New York City, U.S.Political partyRepublican[4]SpouseLaura Leppert[5]Children3[5]ResidenceDallas, Texas[5]Alma materClaremont McKenna College (BA)[1]Harvard Business School (MBA)[1]...

City in Texas, United StatesPort ArthurCityPort ArthurNickname(s): PA, PATLocation of Port Arthur, Texas - U.S. Census MapPort ArthurLocation in TexasShow map of TexasPort ArthurLocation in the United StatesShow map of the United StatesCoordinates: 29°53′6″N 93°56′24″W / 29.88500°N 93.94000°W / 29.88500; -93.94000CountryUnited StatesStateTexasCountyJeffersonSettled1895Incorporation1898Government • TypeCouncil-Manager • City Cou...

 

List of cyclists The following is a list of teams and cyclists that took part in the 2020 Vuelta a España.[1] Teams The 19 UCI WorldTeams were automatically invited to the race. Additionally, the organisers of the Vuelta invited three second-tier UCI ProTeams to participate in the event.[2] The teams that participated in the race were: UCI WorldTeams AG2R La Mondiale Astana Bahrain–McLaren Bora–Hansgrohe CCC Team Cofidis Deceuninck–Quick-Step EF Pro Cycling Groupama–F...