הקדמה Junit ANT SVN הטמעה 89-210תכנות מתקדם -תרגול 7 תכנות מתקדם 89-210 תרגול מספר 7 תשע"א 2010-2011 כלים שימושיים 1 אליהו חלסצ'י 89-210תכנות מתקדם -תרגול 7 הקדמה הקדמה Junit ANT SVN הטמעה 89-210תכנות מתקדם -תרגול 7 בדיקות תוכנה • • • • הקדמה Junit ANT SVN הטמעה לא ניתן לבנות תוכנה שתקבל תוכנה כקלט ,ובאופן אוטומטי תכריע לגבי נכונותה כלומר תבצע אימות תוכנה. (הבעיה אינה ניתנת להכרעה – תלמדו על זה בחישוביות) ביצע אימות ידני בא במחיר יקר מידי לרוב המערכות. לכן מבצעים בדיקות ( ,)testingשמטרתן להגביר את הביטחון שלנו בנכונות התוכנה ע"י סדרה של הרצות ומציאת פגמים. הבדיקות לא מוכיחות נכונות ,אבל מועילות באופן מעשי להקטנת הפגמים. 89-210תכנות מתקדם -תרגול 7 בדיקות תוכנה • • • • הקדמה Junit ANT SVN הטמעה בעבר היו בדיקות התוכנה תחום חובבני שבוצע על ידי התוכניתנים עצמם. היום זהו נדבך עיקרי בתהליך הפיתוח. שיטה נפוצה היא "פיתוח מונחה בדיקות" ,אפילו פעם היה טרנד ה ” "Extreme Programmingשל קנט בק המבוססת על פיתוח מונחה הבדיקות. פיתוח מונחה בדיקות Test driven development( - ובקיצור )TDDזו מתודולוגית פיתוח בה בדיקת היחידה נכתבת עוד לפני הקוד אותו היא בודקת. 89-210תכנות מתקדם -תרגול 7 בדיקות תוכנה הקדמה Junit ANT SVN הטמעה • סוגי הבדיקות: – – – – בדיקות יחידה ) - (Unitבדיקות ברמת יחידת תוכנה (מודול). לרוב מבוצעות על ידי מפתח התוכנה. בדיקות אינטגרציה ( – )Integrationמבוצע לאחר בדיקות היחידה ,נבדקים מס' מודולים יחד או התוכנית כולה .לרוב מבוצע ע"י צוות .QA בדיקות מערכת ( - )Systemבדיקות המערכת בכללותה ,בדרך כלל בראיית המשתמש. בדיקות קבלה ) – (Acceptanceבדיקות שנעשות ע"י הלקוח ,או צוות שמדמה אותו. • היום נלמד על כלי שעוזר לנו ברמת בדיקת היחידה. הקדמה Junit ANT SVN הטמעה 89-210תכנות מתקדם -תרגול 7 JUnit • JUnitהוא כלי חופשי שיוצר תשתית פשוטה לכתיבה ולהרצה של בדיקות חוזרות ב .java • רק באמצעות תשתית ראויה ניתן לקיים את שיטת פיתוח מונחה הבדיקות ,ו JUnitמספק אותה. • ניתן להורדה מהאתר http://junit.org/אך הקוד כבר מובנה ב ,eclipseבאתר גם דוקומנטציה מלאה. הקדמה Junit ANT SVN הטמעה public class IntCalc { public int pls(int x,int y){ return x+y; } public int sub(int x,int y){ return y-x; } public int mul(int x,int y){ return x*y; } } 7 תרגול- תכנות מתקדם89-210 הקדמה Junit ANT SVN הטמעה import junit.framework.TestCase; public class IntCalcTest extends TestCase { public void testPls() { fail("Not yet implemented"); } public void testSub() { fail("Not yet implemented"); } public void testMul() { fail("Not yet implemented"); } } 7 תרגול- תכנות מתקדם89-210 הקדמה Junit ANT SVN הטמעה import junit.framework.TestCase; public class IntCalcTest extends TestCase { private IntCalc ic; protected void setUp(){ ic=new IntCalc(); } public void testPls() { assertEquals(5, ic.pls(3, 2)); } public void testSub() { assertEquals(8, ic.sub(16, 8)); assertEquals(-8, ic.sub(8, 16)); } public void testMul() { assertEquals(2147483644, ic.mul(1073741822, 2)); } 7 תרגול- תכנות מתקדם89-210 הקדמה Junit ANT SVN הטמעה 7 תרגול- תכנות מתקדם89-210 ANT . שלנוjava לפרויקט הbuild זה כלי לביצועANT • :• מתוך דברי המחבר • In theory, it is kind of like make, without make's wrinkles. • all those tools have limitations that Ant's original author couldn't live with when developing software across multiple platforms. • Makefiles are inherently evil as well. Anybody who has worked on them for any time has run into the dreaded tab problem. "Is my command not executing because I have a space in front of my tab?!!" said the original author of Ant way too many times. הקדמה Junit ANT SVN הטמעה 89-210תכנות מתקדם -תרגול 7 ANT • ANTשונה מ buildersאחרים בכך שלצורך הבנייה לא מממשים סקריפטים שתלויים במערכת ההפעלה ,אלא מממשים מסמכי XML שבאמצעותם בונים את הפרויקט. • את ANTניתן להוריד מהאתר http://ant.apache.org/ • כדאי גם להיכנס ל Manualכדי ללמוד עוד, התכנים מוסברים שם היטב. הקדמה Junit ANT SVN הטמעה 89-210תכנות מתקדם -תרגול 7 ANT • התקנה על חלונות לא כזו פשוטה ,בצעו את הדברים הבאים: – הורידו את קובץ ה zipמהאתר ,ותפתחו אותו לתוך תיקייה כגון ”.“c:\ant – קליק ימני על המחשב שלימאפיינים מתקדם משתני סביבה. – הוסיפו את המשתנים הבאים: • • • • c:\ant\bin PATH c:\ant ANT_HOME JAVA_HOMEתיקיית ה JDKשלכם ,לדוגמא ( C:\Program Files\Java\jdk1.6.0_05תוודאו שיש שם קובץ בשם )tools.jar אשרו הכל. – כנסו ל ( Shellהתחל הפעלה )cmd – גשו ל c:\ant\binורשמו ,antהפקודה תפעיל את ant.bat • בדיקה :אם קיבלתם !Buildfile: build.xml does not exist Build failedזה בסדר גמור. • בדיקה שנייה גשו לתיקייה אחרת ותכתבו ,ant –versionאתם אמורים לקבל את הגרסא הנוכחית של ant הקדמה Junit ANT SVN הטמעה 7 תרגול- תכנות מתקדם89-210 hello.java public class hello { public static void main( String[] args ){ System.out.println( "Hello World" ); } } דוגמא לבנייה רגילה build.xml <project default="compile"> <target name="compile"> <javac srcdir="." /> </target> </project> הקדמה Junit ANT SVN הטמעה 7 תרגול- תכנות מתקדם89-210 hello.java public class hello { public static void main( String[] args ){ System.out.println( "Hello World" ); } } Jar דוגמא לבניית build.xml <project default="compile"> <target name="compile"> <javac srcdir="." /> </target> <target name="jar“ depends="compile"> <jar destfile="hello.jar“ basedir=".“ includes="**/*.class" /> </target> </project> הקדמה Junit ANT SVN הטמעה 7 תרגול- תכנות מתקדם89-210 Jar דוגמא לבניית והרצתו build.xml <project default="compile"> <target name="compile"> <javac srcdir="." /> </target> <target name="jar“ depends="compile"> <jar destfile="hello.jar“ basedir=".“ includes="**/*.class" /> </target> <target name="run" depends="jar"> <java classname="hello" classpath="hello.jar" fork="true" /> </target> </project> http://ideoplex.com/focus/java תבקרו באתרANT בJUnit כגון שילוב,ללימוד נוסף .ממנו נלקחו הדוגמאות 89-210תכנות מתקדם -תרגול 7 ניהול גרסאות version control • משמש לניהול פיתוח מתמשך של מסמכים דיגיטליים שעובדים עליהם צוות של מפתחים. • השינויים מזוהים כמספר גרסא. • כלים לניהול גרסאות מאפשרים: – יכולת לחזור לכל מצב קודם כשהקוד נפגם. – בקרה על השינויים שבקוד. – ניהול תוכנה בכמה גרסאות( .תיקון באגים וכו') • מערכת ריכוזית :כולם עובדים על אותו מאגר משותף • מערכת ביזורית :כל אחד עובד על מאגר משלו ואח"כ משתף במאגר הכללי. הקדמה Junit ANT SVN הטמעה 89-210תכנות מתקדם -תרגול 7 ניהול גרסאות version control הקדמה Junit ANT SVN הטמעה • נעילה של קובץ: – כאשר 2מתכנתים עובדים על אותו הקובץ הם עלולים לדרוס אחד את עבודתו של השני... – שיטה אחת למנוע זאת היא ע"י נעילה של הקובץ רק למשתמש אחד. – שיטה שנייה ,היא לאפשר לשניהם לעבוד ולמזג אח"כ. 89-210תכנות מתקדם -תרגול 7 ניהול גרסאות version control הקדמה Junit ANT SVN הטמעה • אוצר מילים: – : Repositoryמאגר ,המקום בו מאוחסנים הקבצים. – : Working copyעותק מקומי של הקבצים מה repositoryעליו מתבצעת העבודה. – : Check-outפעולת חילוץ הקבצים מה .repository – : Commitכאשר השינויים ב working copyנכתבים ל .repository – : Conflict / Resolveקונפליקט קיים כשיש סתירה באותו הקובץ ,והאדם מתערב כדי לתקן )(resolve הקדמה Junit ANT SVN הטמעה 89-210תכנות מתקדם -תרגול 7 SVN • • • • תוכנה בקוד פתוח לניהול גירסאות. עובדת על מס' רב של פלטפורמות ,במס' רב של גרסאות. נפוצה מאד בתעשייה. אנו נראה דוגמא ל subclipseשהוא plug-inשל SVNלתוך סביבת ה .eclipse 89-210תכנות מתקדם -תרגול 7 הוספת plug-inל eclipse • • • • • • הקדמה Junit ANT SVN הטמעה Find and inatall… Software Updates Help Search for new featuresולחיצה על next אפשר לבחור מתוך הרשימה הקיימת ,או להוסיף ע"י .add remote siteלחצו עליו. תקלידו את שם האתר – במקרה שלנו Subclipse 1.4.5 תקלידו את כתובתו – במקרה שלנו http://subclipse.tigris.org/update_1.4.x אשרו ,סמנו את חבילת ההתקה ברשימה ,והמשיכו ללחוץ nextעד לסיום. 89-210תכנות מתקדם -תרגול 7 הוספת plug-inל eclipse • אחרי ההתקנה נוכל להוסיף viewשל .SVN • מצד שמאל למעלה אנו שולטים על ה view הנוכחי. הקדמה Junit ANT SVN הטמעה 89-210תכנות מתקדם -תרגול 7 יצירת repository • • • • • לצורך הדוגמא אנו נשתמש בשירות של Google המאפשר ליצור שרת SVNלכל מי שרשום. וודאו שאתם מחוברים ,למשל ל ,gmailוכנסו לאתר http://code.google.com/hosting/ תבחרו create new projectומלאו את הטופס. למעשה יצרתם שרת SVNמשלכם כששם המשתמש הוא שם המשתמש הרגיל שלכם. את הסיסמא תוציאו מ http://code.google.com/hosting/settings הקדמה Junit ANT SVN הטמעה 89-210תכנות מתקדם -תרגול 7 יצירת repository • נבחר את ה viewשל SVN • בלשונית של SVN repositoriesניצור חדש • ניתן הכתובת הבאה: https://[YOUR_PROJECT_NAME].googlecode.com/svn • אשרו הכל ,וחיזרו ל viewשל .java • כעת נוכל לבחור פרויקט ולהוסיפו למאגר. • קליק ימני על שם הפרויקט share project team • בחרו ,SVNלחצו על nextובחרו repositoryקיים. • התוצאה :בלשונית ה SVNיופיעו קבצי הפרויקט. • דרך התפריט teamתוכלו לבצע בקלות את כל הפעולות הקשורות ב .repository הקדמה Junit ANT SVN הטמעה 89-210תכנות מתקדם -תרגול 7 הטמעה • • • • • • הקדמה Junit ANT SVN הטמעה למה צריך להשתמש ב ?Junit מהם היתרונות של ?ANT למה משמש ?SVN בדקו את מעגל הכיוונים של הרובוט Aiboבאמצעות .JUnit תבצעו בנייה לחלק א' של התרגיל באמצעות ANT צרו repositoryב Googleו SVNב eclipseהעתיקו לשם פרויקטים ,צרו שינויים והתעדכנו מהם אח"כ ,דרך התפריט teamשחקו עם: – Synchronize – Commit – update