כלים שימושיים 1

24
הההההJunit ANT SVN ההההה89-210 - םםםםם םםםםם םםםםם7 םםםם םםםםםםםם םםםם םםםםםםםם1 1 ההההה הההה'ה םםםםם םםםםם םםםםם םםםםם89-210 89-210 ההההה הההה7 ההה"ה2010-2011

description

כלים שימושיים 1. תכנות מתקדם 89-210 תרגול מספר 7 תשע"א 2010-2011. אליהו חלסצ'י. הקדמה. לא ניתן לבנות תוכנה שתקבל תוכנה כקלט, ובאופן אוטומטי תכריע לגבי נכונותה כלומר תבצע אימות תוכנה. (הבעיה אינה ניתנת להכרעה – תלמדו על זה בחישוביות) ביצע אימות ידני בא במחיר יקר מידי לרוב המערכות. - PowerPoint PPT Presentation

Transcript of כלים שימושיים 1

Page 1: כלים שימושיים 1

הקדמהJunitANTSVN

הטמעה

תכנות מתקדם - תרגול 89-2107

11כלים שימושיים כלים שימושיים

אליהו חלסצ'י

89-21089-210תכנות מתקדם תכנות מתקדם 7תרגול מספר

2010-2011תשע"א

Page 2: כלים שימושיים 1

הקדמהJunitANTSVN

הטמעה

תכנות מתקדם - תרגול 89-2107

הקדמה

Page 3: כלים שימושיים 1

הקדמהJunitANTSVN

הטמעה

תכנות מתקדם - תרגול 89-2107

בדיקות תוכנהלא ניתן לבנות תוכנה שתקבל תוכנה כקלט, ובאופן •

אוטומטי תכריע לגבי נכונותה כלומר תבצע אימות תוכנה. )הבעיה אינה ניתנת להכרעה – תלמדו על זה

בחישוביות(ביצע אימות ידני בא במחיר יקר מידי לרוב המערכות.•(, שמטרתן להגביר את testingלכן מבצעים בדיקות )•

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

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

Page 4: כלים שימושיים 1

הקדמהJunitANTSVN

הטמעה

תכנות מתקדם - תרגול 89-2107

בדיקות תוכנהבעבר היו בדיקות התוכנה תחום חובבני שבוצע על •

ידי התוכניתנים עצמם.

היום זהו נדבך עיקרי בתהליך הפיתוח. •

שיטה נפוצה היא "פיתוח מונחה בדיקות", אפילו •" של ”Extreme Programmingפעם היה טרנד ה

קנט בק המבוססת על פיתוח מונחה הבדיקות.

Test driven developmentפיתוח מונחה בדיקות - )•בדיקת ( זו מתודולוגית פיתוח בה TDDובקיצור נכתבת עוד לפני הקוד אותו היא בודקת.היחידה

Page 5: כלים שימושיים 1

הקדמהJunitANTSVN

הטמעה

תכנות מתקדם - תרגול 89-2107

בדיקות תוכנהסוגי הבדיקות:•

בדיקות ברמת יחידת תוכנה - (Unit )בדיקות יחידה –)מודול(. לרוב מבוצעות על ידי מפתח התוכנה.

( – מבוצע לאחר בדיקות Integrationבדיקות אינטגרציה )–היחידה, נבדקים מס' מודולים יחד או התוכנית כולה.

.QAלרוב מבוצע ע"י צוות ( - בדיקות המערכת בכללותה, System)בדיקות מערכת –

בדרך כלל בראיית המשתמש. – בדיקות שנעשות ע"י (Acceptance)בדיקות קבלה –

הלקוח, או צוות שמדמה אותו.

היום נלמד על כלי שעוזר לנו ברמת בדיקת היחידה.•

Page 6: כלים שימושיים 1

הקדמהJunitANTSVN

הטמעה

תכנות מתקדם - תרגול 89-2107

JUnit•JUnit הוא כלי חופשי שיוצר תשתית פשוטה

.javaלכתיבה ולהרצה של בדיקות חוזרות ב רק באמצעות תשתית ראויה ניתן לקיים את •

מספק JUnitשיטת פיתוח מונחה הבדיקות, ו אותה.

אך /http://junit.orgניתן להורדה מהאתר •, באתר גם eclipseהקוד כבר מובנה ב דוקומנטציה מלאה.

Page 7: כלים שימושיים 1

הקדמהJunitANTSVN

הטמעה

תכנות מתקדם - תרגול 89-2107

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;

}

}

Page 8: כלים שימושיים 1

הקדמהJunitANTSVN

הטמעה

תכנות מתקדם - תרגול 89-2107

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");

}

}

Page 9: כלים שימושיים 1

הקדמהJunitANTSVN

הטמעה

תכנות מתקדם - תרגול 89-2107

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));

}

Page 10: כלים שימושיים 1

הקדמהJunitANTSVN

הטמעה

תכנות מתקדם - תרגול 89-2107

ANT•ANT זה כלי לביצוע build לפרויקט ה java.שלנו מתוך דברי המחבר:•

• 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.

Page 11: כלים שימושיים 1

הקדמהJunitANTSVN

הטמעה

תכנות מתקדם - תרגול 89-2107

ANT•ANT שונה מ builders אחרים בכך שלצורך

הבנייה לא מממשים סקריפטים שתלויים במערכת ההפעלה, אלא מממשים מסמכי

XML.שבאמצעותם בונים את הפרויקט

.http://ant ניתן להוריד מהאתר ANTאת •apache.org/

כדי ללמוד עוד, Manualכדאי גם להיכנס ל •התכנים מוסברים שם היטב.

Page 12: כלים שימושיים 1

הקדמהJunitANTSVN

הטמעה

תכנות מתקדם - תרגול 89-2107

ANTהתקנה על חלונות לא כזו פשוטה, בצעו את הדברים הבאים:•

.”c:\ant“ מהאתר, ותפתחו אותו לתוך תיקייה כגון zipהורידו את קובץ ה – משתני סביבה.מתקדם מאפיינים קליק ימני על המחשב שלי–הוסיפו את המשתנים הבאים:–

•PATH c:\ant\bin•ANT_HOME c:\ant•JAVA_HOME תיקיית ה JDKשלכם, לדוגמא

C:\Program Files\Java\jdk1.6.0_05 תוודאו שיש שם קובץ בשם( tools.jar)אשרו הכל.•

( cmd הפעלה )התחל Shellכנסו ל –ant.bat, הפקודה תפעיל את ant ורשמו c:\ant\binגשו ל –

בדיקה: אם קיבלתם• Buildfile: build.xml does not exist!

Build failed.זה בסדר גמור , אתם אמורים ant –versionבדיקה שנייה גשו לתיקייה אחרת ותכתבו •

antלקבל את הגרסא הנוכחית של

Page 13: כלים שימושיים 1

הקדמהJunitANTSVN

הטמעה

תכנות מתקדם - תרגול 89-2107

build.xml<project default="compile"> <target name="compile"> <javac srcdir="." /> </target> </project>

hello.javapublic class hello { public static void main) String[] args ({ System.out.println) "Hello World" (; }}

דוגמא לבנייה רגילה

Page 14: כלים שימושיים 1

הקדמהJunitANTSVN

הטמעה

תכנות מתקדם - תרגול 89-2107

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>

hello.javapublic class hello { public static void main) String[] args ({ System.out.println) "Hello World" (; }}

Jarדוגמא לבניית

Page 15: כלים שימושיים 1

הקדמהJunitANTSVN

הטמעה

תכנות מתקדם - תרגול 89-2107

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>

Jarדוגמא לבניית והרצתו

http://ideoplex.com/focus/java תבקרו באתר ANT ב JUnitללימוד נוסף, כגון שילוב ממנו נלקחו הדוגמאות.

Page 16: כלים שימושיים 1

הקדמהJunitANTSVN

הטמעה

תכנות מתקדם - תרגול 89-2107

version controlניהול גרסאות

משמש לניהול פיתוח מתמשך של מסמכים דיגיטליים •שעובדים עליהם צוות של מפתחים.

השינויים מזוהים כמספר גרסא.•כלים לניהול גרסאות מאפשרים:•

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

מערכת ריכוזית: כולם עובדים על אותו מאגר משותף•מערכת ביזורית: כל אחד עובד על מאגר משלו ואח"כ •

משתף במאגר הכללי.

Page 17: כלים שימושיים 1

הקדמהJunitANTSVN

הטמעה

תכנות מתקדם - תרגול 89-2107

version controlניהול גרסאות

נעילה של קובץ:• מתכנתים עובדים על אותו הקובץ הם 2כאשר –

עלולים לדרוס אחד את עבודתו של השני...שיטה אחת למנוע זאת היא ע"י נעילה של הקובץ –

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

אח"כ.

Page 18: כלים שימושיים 1

הקדמהJunitANTSVN

הטמעה

תכנות מתקדם - תרגול 89-2107

version controlניהול גרסאות

אוצר מילים:•–Repository.מאגר, המקום בו מאוחסנים הקבצים : –Working copy עותק מקומי של הקבצים מה :

repository.עליו מתבצעת העבודה –Check-out פעולת חילוץ הקבצים מה : repository.–Commit כאשר השינויים ב : working copy

.repositoryנכתבים ל –Conflict / Resolve קונפליקט קיים כשיש סתירה :

(resolve)באותו הקובץ, והאדם מתערב כדי לתקן

Page 19: כלים שימושיים 1

הקדמהJunitANTSVN

הטמעה

תכנות מתקדם - תרגול 89-2107

SVN

תוכנה בקוד פתוח לניהול גירסאות.•

עובדת על מס' רב של פלטפורמות, במס' רב •של גרסאות.

נפוצה מאד בתעשייה.•

plug-in שהוא subclipseאנו נראה דוגמא ל •.eclipse לתוך סביבת ה SVNשל

Page 20: כלים שימושיים 1

הקדמהJunitANTSVN

הטמעה

תכנות מתקדם - תרגול 89-2107

eclipse ל plug-inהוספת

•Help Software Updates Find and inatall…•Search for new features ולחיצה על nextאפשר לבחור מתוך הרשימה הקיימת, או להוסיף ע"י •

add remote site.לחצו עליו .Subclipse 1.4.5תקלידו את שם האתר – במקרה שלנו •.http://subclipseתקלידו את כתובתו – במקרה שלנו •

tigris.org/update_1.4.xאשרו, סמנו את חבילת ההתקה ברשימה, והמשיכו •

עד לסיום.nextללחוץ

Page 21: כלים שימושיים 1

הקדמהJunitANTSVN

הטמעה

תכנות מתקדם - תרגול 89-2107

eclipse ל plug-inהוספת

.SVN של viewאחרי ההתקנה נוכל להוסיף •

viewמצד שמאל למעלה אנו שולטים על ה •הנוכחי.

Page 22: כלים שימושיים 1

הקדמהJunitANTSVN

הטמעה

תכנות מתקדם - תרגול 89-2107

repositoryיצירת

Googleלצורך הדוגמא אנו נשתמש בשירות של • לכל מי שרשום.SVNהמאפשר ליצור שרת

, וכנסו לאתר gmailוודאו שאתם מחוברים, למשל ל •http://code.google.com/hosting/

ומלאו את הטופס.create new projectתבחרו • משלכם כששם המשתמש SVNלמעשה יצרתם שרת •

הוא שם המשתמש הרגיל שלכם./http://code.google.comאת הסיסמא תוציאו מ •

hosting/settings

Page 23: כלים שימושיים 1

הקדמהJunitANTSVN

הטמעה

תכנות מתקדם - תרגול 89-2107

repositoryיצירת SVN של view נבחר את ה • ניצור חדשSVN repositories בלשונית של • ניתן הכתובת הבאה:• https://[YOUR_PROJECT_NAME].googlecode.com/svn.java של view אשרו הכל, וחיזרו ל • כעת נוכל לבחור פרויקט ולהוסיפו למאגר.•

team share project קליק ימני על שם הפרויקט • קיים.repository ובחרו next, לחצו על SVN בחרו •

יופיעו קבצי הפרויקט.SVN התוצאה: בלשונית ה •

תוכלו לבצע בקלות את כלteam דרך התפריט •.repository הפעולות הקשורות ב

Page 24: כלים שימושיים 1

הקדמהJunitANTSVN

הטמעה

תכנות מתקדם - תרגול 89-2107

הטמעה?Junitלמה צריך להשתמש ב •?ANTמהם היתרונות של •?SVNלמה משמש •.JUnit באמצעות Aiboבדקו את מעגל הכיוונים של הרובוט •ANTתבצעו בנייה לחלק א' של התרגיל באמצעות • העתיקו לשם eclipse ב SVN ו Google ב repositoryצרו •

פרויקטים, צרו שינויים והתעדכנו מהם אח"כ, דרך התפריט teamשחקו עם :

–Synchronize–Commit–update