DCSIMG
Testing - בלוג MSDN ישראל

אנחנו בפייסבוק

Browse by Tags

פורסם בתאריך 12/05/2013 07:26 על ידי Eran Sharvit

Visual Studio 2012 Small

רוב המשתמשים בכלי   MTM או בשמו המלא Microsoft Test and Lab Management הם הבודקים, אשר מכירים בעיקר את יכולות ביצוע הבדיקות של הכלי. פחות מכירים את יכולות ה – Lab של הכלי ובדיוק על נושא זה אני רוצה להרחיב בפוסט זה.

היכולות עיקריות של ה- Lab Management :

 

מעבדות פיזיות או כפי שהן מכונות ב– TFS 2012:  מעבדות סטנדרטיות.

מעבדות אילו מבוססות על מחשבים פיזיים או מכונות וירטואליות ב- VMware.

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

מעבדות וירטואליות.

מעבדות אילו מבוססות Hyper-V ונשלטות על ידי ה – SCVMM שמחובר ל – TFS, החיסרון בשיטה זו הוא הצורך בחומרה חזקה, היתרון מגיע ביכולות ה – Snapshot ברמת המעבדה. לדוגמא אני רוצה להכין מעבדה, “להקפיא” אותה ולאחר מכן להריץ בדיקות שילכלכו אותה, בסיום הבדיקה כול מה שאני צריך לעשות זה Revert למצב “המוקפא” ואני מוכן להרצת בדיקות מחדש ו\או נוספות.

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

יש להתקין את ה – Test Controller כדי לבנות מעבדה פיזית.

הערה: יש להתקין את ה – Test Controller בלבד.

 

על מנת לייצר מעבדה סטנדרטית/פיזית יש לבצע את הצעדים הבאים:

צעד 1: לאחר התקנת ה – Test Controller יש לבצע קינפוג, נריץ את ה- Test Controller Configuration

Step_4_configure_controller

 

צעד 2: נזין שם משתמש וסיסמה, משתמש זה יריץ את ה – Service של ה – Test Controller (חץ כחול)

צעד 3: נחבר את ה – Test Controller ל – Collection ב – TFS בו נשתמש (חצים אדומים)

צעד 4: נגדיר משתמש שיריץ את ה – Lab service במקרה הזה השתמשתי באותו שם משתמש (חצים ירוקים)

 

Step_5_make_configurations

צעד 5: נלחץ על Apply Settings לסיום הקינפוג

Step_6_Apply_Settings

צעד 6: לאחר סיום הקינפוג יש ללחוץ Close

Step_8_Finish_configuration

צעד 7:  נפעיל את ה - MTM

Step_1_launch_MTM

צעד 8: נעבור ל – Lab Management, יש לשים לב שאנחנו עובדים על ה – Collection הנכון

Step_2_go_to_lab_center

צעד 9: נוודא שיש לנו Test Controller תקין, נעבור לטאב Controllers ונבדוק שה – Test Controller לא מסומן ב – X אדום

Step_3_Check_controller

צעד 10:  נעבור לטאב Lab ונלחץ על New ליצירת מעבדה חדשה

 

Step_9_new_env

צעד 11: נבחר Standard environment, נזין שם למעבדה ונעבור לטאב Machines

Step_10_name_and_type

צעד 12: נלחץ על Add machine להוספת מחשבים חדשים

Step_11_add_machines

צעד 13: נזין את שם המחשב ונבחר לו Role מהרשימה, כמו כן נזין לו שם משתמש שיש לו הרשאות על המחשב

שים לב: תהליך זה יתקין ויקנפג Test Agent על מחשב זה, במידה ויש כבר Test Agent המחובר ל – Test Controller ניתן לבחור מרשימה קיימת של מחשבים, לינק אל הרשימה תופיע בתחתית החלון.

 

Step_12_add_comp_and_user

צעד 14: נעבור ל – Advanced ונסמן את Configure environment to run UI tests

Step_13_config_UI

צעד 15: נבחר על איזה מחשב ירוצו בדיקות ה – GUI, נזין שם משתמש וסיסמה בעלי הרשאות ונעבור לטאב Verification

Step_14_config_UI_details

צעד 16: נלחץ על Verify ונוודא שהכול ירוק

Step_15_verify

Step_16_verify_results

 

צעד 17: כעת המערכת מתקינה ומקנפגת את ה – Test Agent על המחשב שהזנו קודם

 

Step_17_installation

שימו לב שבמהלך ההתקנה המערכת תבצע Restart לבד וגם תבצע Log-in לבד.

 

זה הכול, יש לכם מעבדה עובדת. תהנו!

 

 

יש לכם שאלות בנושא Visual Studio ו-ALM? כנסו לפורום שלנו בעברית.

 

 

EranRusotopQהפוסט נכתב על ידי ערן רוסו , מנהל חטיבת ה - ALM & DevOps בחברת TOP Q, המובילה במגוון פתרונות אוטומציה לבדיקת מוצרי תוכנה, ALM ו – DevOps בטכנולוגיה מתקדמת, המיועדים לסביבות מחשוב מרובות מערכות, קונפיגורציות ותהליכים בארגונים בינוניים וגדולים. כנסו לבלוג של ערן וקראו על עוד נושאים מעולם ה- ALM וה- TFS ואתם מוזמנים גם לקבוצת הלינקדאין.

פורסם בתאריך 24/04/2013 08:22 על ידי Eran Sharvit

Visual Studio 2012 Bigבשני הפרקים הקודמים סקרנו את שתי היכולות העיקריות של ה-Fakes, כלומר ה-Stubs וה-Shims. בפרק הזה ניכנס קצת יותר לעומק ונראה איך תוכל להתאים את ה-Fakes לצרכיך באמצעות קובץ הקונפיגורציה.

כאשר אנו מוסיפים Fakes לספריה (“Add Fakes Assembly” – זוכרים?) נוסף לנו באופן אוטומטי קובץ קונפיגורציה אחד או יותר תחת Fakes. כך, למשל, כאשר הוספנו Fakes ל-System DLL נוספו לנו שני קבצים תחת Fakes, בצורה הבאה:

image

(שים לב שהקוד ב-System מחולק למעשה בין System.dll ו-mscorlib.dll ולכן נוצרים שני קבצי Fakes עם הגדרות מתאימות).

עכשיו נניח שאנחנו מעוניינים ליצור Shim ל-Console. זה יכול להיות שימושי מאד כאשר הקוד שלנו מצפה לקלט מהמשתמש, או שולח פלט למסך. למשל:

public static void MultipyFromConsole()
{
var m = Convert.ToInt32(Console.ReadLine());
var n = Convert.ToInt32(Console.ReadLine());
var result = m * n;
var strResult = result.ToString();

Console.WriteLine(result);
}

(נניח לשם הדוגמא שהמתודה הזו היא חלק מה-Multiplier class שהוצג בפרק הקודם).

כדי לבדוק את הקוד, נצטרך לעשות Fake ל-Console. אולם כאשר ננסה לגשת ל- System.Fakes.ShimConsole נגלה שהאובייקט הזה לא קיים. מה עושים?

הסיבה שלא מצאנו את האובייקט היא שספריית ה-mscorlib מכילה אלפי אובייקטים (מעל 3000 ב-.NET 3.5 – תוכל לוודא זאת בקלות על ידי הביטוי typeof(string).Assembly.GetTypes().Count() ). יישום Fakes לכולם יגדיל מאד את ספריית ה-Fakes הנלווית ויוריד את הביצועים. לכן בחרו במיקרוסופט ליישם, כברירת מחדל, Fakes רק לחלק קטן מן האובייקטים.

ומה נעשה אם אנחנו בכל זאת רוצים לבצע Fake ל-Console? לשם כך בא לעזרתנו קובץ ההגדרות mscorlib.fakes. אם נבחר אותו נגלה שהוא מכיל את התוכן הבא:

<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/">
<Assembly Name="mscorlib" Version="4.0.0.0"/>
</Fakes>

הגדרה זו אומרת לקומפיילר ליישם Fakes לאובייקטים שהוגדרו כברירת מחדל. עכשיו אנחנו מעוניינים להוסיף עליהם את Console Shim. לשם כך נוסיף לקובץ הגדרת ShimGeneration בצורה הבאה:

<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/">
<Assembly Name="mscorlib" Version="4.0.0.0"/>
<ShimGeneration>
<Add TypeName="Console"/>
</ShimGeneration>
</Fakes>

כעת נכתוב את ה-Unit Test ל- MultipyFromConsole. שימו לב שכעת אנחנו יכולים להשתמש ב- System.Fakes.ShimConsole – שנוצר כתוצאה מההגדרה של ShimGeneration:

[TestMethod]
public void TestMultiplyFromConsole()
{
using (ShimsContext.Create())
{
var numTime = 0;
var multipliers = new string[]{"17", "23"};

System.Fakes.ShimConsole.ReadLine =
() => { return (multipliers[numTime++]);};

int multResult = 0;

System.Fakes.ShimConsole.WriteLineInt32 =
(result) => { multResult = result; };

Multiplier.MultipyFromConsole();
Assert.AreEqual(391, multResult);
}
}

מה עשינו פה?

- בעזרת System.Fakes.ShimConsole.ReadLine החלפנו את מתודת ה-ReadLine במתודה שלנו. כיוון ש-ReadLine נקראת פעמיים מתוך הקוד, כתבנו את המתודה כך שבפעם הראשונה תחזיר "17", ובפעם השניה "23".

- מתודת –WriteLine איננה פונקציה אחת, אלא אוסף של מתודות – לפי הפרמטרים שהיא מסוגלת לקבל. כיוון שבקוד הנבדק אנחנו קוראים ל-WriteLine עם פרמטר מסוג Int32, נצטרך להחליף את המתודה WriteLineInt32, או System.Fakes.ShimConsole.WriteLineInt32. כל מה שאנחנו עושים במתודה התחליפית הוא לשמור את הפרמטר ה"מודפס" כדי שנוכל לבדוק אותו אחר כך.

- כעת כל מה שנשאר לנו הוא להשוות את התוצאה שקיבלנו עם התוצאה המצופה (391)

שימו לב שכעת יש לנו Unit test הבודק קלט ופלט ל-Console, אך יכול לרוץ בכל מקום – כולל Test Agent או Build Server – בלי להזדקק למפעיל אנושי שיימצא באינטראקציה אמתית עם ה-Console.

בעזרת קובץ הקונפיגורציה ניתן להסיר ולהוסיף אובייקטים לייצור Fakes. כך, למשל, התג Clear מורה למערכת לא לייצר אף Fake פרט לאלה שנגדיר במפורש. כך אם נרצה, למשל, להגדיר Fakes רק ל-Console ו-IO. StreamWriter, נגדיר את קובץ הקונפיגורציה mscorlib.fakes בצורה הבאה:

<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/">
<Assembly Name="mscorlib" Version="4.0.0.0"/>
<ShimGeneration>
<Clear/>
<Add TypeName="Console"/>
<Add TypeName="StreamWriter"/>
</ShimGeneration>
</Fakes>

השימוש בתגים Clear ו-Add מומלץ במיוחד כאשר מדובר בספריה גדולה שאינה ספריית מערכת, ולכן ברירת המחדל היא ייצור Fakes לכל האובייקטים בספריה – מה שייקח זמן ויגרום לייצור ספריית Fakes גדולה מאד.

תג נוסף אפשרי הוא Remove – אם נרצה למנוע במפורש ייצור של Fake לאובייקט מסוים.

באותה צורה שניתן להגדיר ShimGeneration ניתן להגדיר StubGeneration כדי לקבוע לאלו אובייקטים ייווצר Stub (ראה הסבר בפרק הראשון בסדרה זו).

 

לסיכום:

 

  • באמצעות קובץ הקונפיגורציה אנחנו יכולים להגדיר במדויק לאלו אובייקטים ייווצרו Shims ו-Stubs
  • כך נוכל לייצר Stubs & Shims לאובייקטים נוספים בספריות המערכת, גם אם לא נוצרים להם Stubs & Shims כברירת מחדל
  • לחילופין, נוכל למנוע יצירת Stubs & Shims לאובייקטים שאיננו מעוניינים להחליף במסגרת הבדיקות, וכך לחסוך זמן ומקום

ולקינוח – חדשות טובות! החל מ-Visual Studio 2012 Update 2 ששוחרר לאחרונה להורדה, יכולת ה-Fakes לא תוגבל רק לבעלי VS2012 Ultimate, וגם מפתחים שרכשו VS2012 Premium יוכלו ליהנות מבדיקות איכותיות באמצעות Fakes!

בברכת בדיקות טובות ואיכותיות!

 

יש לכם שאלות נוספות בנושא VS 2012, ALM  או Testing?
הכנסו עכשיו לפורום העברי שלנו בנושא והתייעצו עם מיטב מומחי הקהילה.

 

 

Photo_5F5B07F8[1]הפוסט נכתב על ידי יואל ארנון, מהנדס תוכנה במיקרוסופט המסייע ללקוחות פרמייר - Premier Field Engineer. בעבר יואל היה יועץ עצמאי וחבר בצוות הפיתוח של MSMQ במיקרוסופט חיפה.

פורסם בתאריך 02/04/2013 08:48 על ידי Eran Sharvit

WPרוצים לפתח אפליקציות Windows Phone 8 אבל המחשב שלכם לא עומד בדרישות של האמולטור? או שאולי אתם רוצים לבצע בדיקות על מכשיר הלומיה 920 החדש על מנת להבטיח שהאפליקציה שלכם פועלת ללא דופי?

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

 

אז איך לעשות זאת?

  1. פתחו חשבון חינמי והרשמו בתור מפתחי נוקיה.
  2. בצעו לוגין לאתר ה- Nokia Developer Remote Access  או בקיצור RDA

 

הערות

  • על מנת להתקין את קליינט הבדיקות תדרשו להתקין Java For Windows. אפשר להוריד זאת מכאן.
  • הוראות שימוש תוכלו לראות כאן.
  • שימו לב שעקב העבודה הוירטואלית מרחוק תתכן איטיות מסויימת בביצועים, במיוחד אם אין לכם חיבור אינטרנט מהיר.
  • שימו לב שהשימוש בפלטפורמת RDA מאפשרת לכם לבצע בדיקות עד 8 שעות ביום וזאת על מנת לשחרר משאבים עבור מפתחים אחרים.

 

מפתחים אפליקציות Windows Phone ונתקלתם בשאלות?
כנסו לפורום שלנו בעברית ומיטב מומחי הקהילה ישמחו לעזור!

פורסם בתאריך 02/04/2013 07:05 על ידי Eran Sharvit

Visual Studio 2012 Smallבעדכון האחרון לכלי הפיתוח Visual Studio 2012 Update 2 שוחררו מספר פיצ’רים חדשים לבודקי תוכנה. בנוסף לשיפור ב- Microsoft Test Manager, העדכון מכיל יכולות ניהול חדשות מבוססות דפדפן שכתבנו עליהם פוסט לא מזמן.

כעת לבודקים יש אפשרות לבצע תסריטי בדיקה שונים כמו למשל לבדוק non-windows apps ולבצע בדיקות ללא התקנת כלים ייעודים במחשב היעד.

ה- test hub החדש שהוצג מאפשר גם לכל חברי צוות הפיתוח לראות ולערוך test cases וכמובן מאפשר למנהלים לעקוב אחר כל צעדי הבדיקה.

וידאו חדש באתר Channel 9 נותן הצצה ליכולות החדשות:

 

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

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

פורסם בתאריך 14/03/2013 09:38 על ידי Eran Sharvit

WinRT_Cyan_S_rgbלפני מספר ימים דפדפן IE10 בגרסת Windows 8 RT יאפשר הרצת Flash כברירת המחדל. עד היום נחסמה הרצת ה- Flash בדפדפן זה למעט אתרים שהופיעו ברשימת הרשאות מיוחדת.

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

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

העדכון יהיה זמין מתוך Windows Update.

 

פיתוח Flash מותאם ל- Windows RT

למפתחים אשר מעוניינים לפתח תוכן Flash לאתרים שלהם יכולים להציץ במסמך הזה המפרט את הדרישות הטכניות הדרושות לאתר על מנת שלא יופיע ברשימת האתרים החסומים (CV List). המסמך מפרט גם מה לעשות במקרה והאתר שלכם נכנס לרשימת ה- CV וכן Best Practices בנוגע לאתרים המותאמים למגע, ביצועים וכו’.

 

כלי מומלץ לבדיקת תאימות האתר שלכם -  Modern.IE

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

פורסם בתאריך 13/03/2013 12:09 על ידי Eran Sharvit

vs20120_logo_smallבפוסט הקודם התחלנו לדבר על השינויים הקטנים שעושים הבדל גדול בין גרסת MTM 2010 ל– MTM 2012. בפוסט הזה אני רוצה להרחיב על שכלול מנגנון ה- Exploratory Testing שהוצג ב- MTM 2010 ופירטתי עליו בפוסט הזה.

 

החידושים בפיצ’ר ה- Exploratory Testing ב- MTM 2012

מספר חידושים ושכלולים בהקשר למנגנון זה בגרסת MTM החדשה:

  1. היכולת להריץ Exploratory Testing הפכה להיות זמינה הרבה יותר
  2. היכולת לתחקר ריצות מסוג זה לא הייתה קיימת כלל קודם.
  3. נעשו שינויים ב – Test Runner.
    למעשה יצרו ל – Test Runner תצורת הרצה שונה עבור ה – Exploratory Testing, הוסיפו את היכולת לקשר ריצה מסוג זה ל – Requirement/User Story/Product Backlog, ויצרו דיווח באג המכיל Screenshots של כול התהליך.
  4. היכולת ליצור Test case מיתוך Exploratory Test היא תוספת שחוסכת זמן רב לבודקים בכתיבת Test Cases.

 

 

בואו נראה כיצד משתמשים ב- Exploratory Testing

אלו הם הצעדים הנדרשים:

  1. נריץ Exploratory Test עבור User Story
  2. נפתח באג
  3. נייצר Test Case מהריצה ונראה איך הכול מתחבר

 

צעד 1: הרץ Microsoft Test Manager

Step_1_Launch_MTM

צעד 2: הקלק על טאב Test

צעד 3: בחר Do Exploratory Testing מהתפריט המשני של Test

צעד 4: בחר User Story/Requirement/Product Backlog Item מהרשימה או לחץ Explore עבור בדיקה כללית (אני מראה את האפשרות הראשונה)

 

Step_2_Select_Work_Item

צעד 5: לחץ Explore work item

Step_3_Start_Exploratory_Test

צעד 6: לחץ Start ב – Test Runner שנפתח

1
ניתן בכול שלב בהרצה ליצור באג, ליצור Test Case וליצור screenshot (למרות שאני חושב שעם הווידאו הפונקציה הזאת מיותרת)

צעד 7: אנחנו ניצור כעת באג, לחץ Create bug

2

כפי שניתן לראות בבאג נוצרים אוטומטית הצעדים אותם ביצעתי ו – Screenshots עבור כול צעד

Step_7_Exploratory_Test_Bug

כמו כן נוצר וידאו עבור כול הבדיקה, בנוסף אני מקבל גם את ה – System Information, Action Log, Event Log ועוד. תלוי מה הגדרתי לאיסוף.

Step_8_Exploratory_Test_Bug_Video

 

צעד 8: אנחנו נמלא Title וחשוב מאוד גם Severity (אם אני איש הבדיקות) ונקליק על Save and create test, כדי לייצר Test Case שישחזר את הבאג בהמשך.

Step_9_Exploratory_Test_Start_Creating_Test

באופן אוטומטי נוצרים לי הצעדים של ה – Test Case אני צריך כמובן להשלים את ה – Expected Results

צעד 9: הזן Title ושמור.

Step_10_Exploratory_Test_Creating_Test

ניתן לראות שנוספו לי ל – Exploratory Test באג אחד ו – Test Case אחד, גם בשורת ההערות, אני גם הוספתי שורה לשדה ההערות.

 

Step_11_Exploratory_Test_added_Bug_and_Test

Step_11_Exploratory_Test_added_comments

זה מחלון תוצאות הרצת הבדיקה.

Step_13_Exploratory_Test_Results

Step_14_Exploratory_Test_Results_attachements

אם נעבור ל – Test Case נוכל לראות שהוא מקושר ל – Bug ול – User Story כמו כן מצורפים לו תוצאות ההרצה.

Step_14_Exploratory_Test_Test_Case_with_links

 

סיכום

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

תיהנו!

 

יש לכם שאלות בנושא Visual Studio ו-ALM? כנסו לפורום שלנו בעברית.

 

 

EranRusotopQהפוסט נכתב על ידי ערן רוסו , מנהל חטיבת ה - ALM & DevOps בחברת TOP Q, המובילה במגוון פתרונות אוטומציה לבדיקת מוצרי תוכנה, ALM ו – DevOps בטכנולוגיה מתקדמת, המיועדים לסביבות מחשוב מרובות מערכות, קונפיגורציות ותהליכים בארגונים בינוניים וגדולים. כנסו לבלוג של ערן וקראו על עוד נושאים מעולם ה- ALM וה- TFS ואתם מוזמנים גם לקבוצת הלינקדאין.

פורסם בתאריך 13/03/2013 09:35 על ידי Eran Sharvit

vs20120_logo_smallלטובת למי שלא מכיר את ה- MTM,  מדובר בכלי לבודקים המכונה גם Test Professional. כלי זה הוצג לראשונה בגרסת TFS 2012. ניתן לקרוא עוד בנושא כאן.

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

מה שכן שמיקרוסופט שינתה הם כל הדברים שמאוד אבל מאוד היו חסרים ב – MTM 2010.

בסדרת פוסטים זאת אציין חלק מן השינויים הללו. בפוסט זה אני אתמקד ב- 3 שינויים בנוגע לצעדי הבדיקה:  Rich Text, תמיכה בעברית והיכולת לבצע Resize לחלון הצעדים.

 

Resize לחלון הצעדים

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

ב- MTM 2012 ניתן לראות שלמרות שיש  10 צעדי בדיקה – אנו רואים רק 4:

Step 1 Before resize

בגרסת MTM 2012 לעומת זאת,  ניתן להגדיל את חלון הצעדים ולראות את כולם:

Step 2 after resize

 

יכולות Rich Text בצעדי הבדיקה

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

בדוגמא למטה  ניתן לראות שב – MTM 2012 החוסר הושלם וכעת ניתן לשנות את הגודל, הצבע, הפונט, וכו’:

Step 3 Rich Text

כמו כן ניתן לראות שהתמיכה היא מלאה וגם בחלון הריצה אנחנו מקבלים את התמיכה ב – Rich text:

Step 4 Rich Text in running state

 

תמיכה בעברית בתוך צעדי הבדיקה

החוסר בתמיכה בעברית פגע בחברות רבות שנאלצו לעקוף את החוסר בכל מיני דרכים כמו לשנות את הכיוון של הכלי כולו על חשבון קבלת כלי מעוות ועוד דרכים יצירתית. עכשיו ב – MTM 2012 התמיכה בעברית היא Out of the box.

Step 5 Hebrew

ניתן לראות גם כאן שהתמיכה בעברית ממשיכה גם ל – Test Runner:

Step 6 Hebrew In running state

עוד על השינויים ב – MTM 2012 – בחלק השני של הפוסט!

 

 

יש לכם שאלות בנושא Visual Studio ו-ALM? כנסו לפורום שלנו בעברית.

 

 

EranRusotopQהפוסט נכתב על ידי ערן רוסו , מנהל חטיבת ה - ALM & DevOps בחברת TOP Q, המובילה במגוון פתרונות אוטומציה לבדיקת מוצרי תוכנה, ALM ו – DevOps בטכנולוגיה מתקדמת, המיועדים לסביבות מחשוב מרובות מערכות, קונפיגורציות ותהליכים בארגונים בינוניים וגדולים. כנסו לבלוג של ערן וקראו על עוד נושאים מעולם ה- ALM וה- TFS ואתם מוזמנים גם לקבוצת הלינקדאין.

פורסם בתאריך 05/03/2013 07:09 על ידי Eran Sharvit

חוץ מכלי הניהול הרגיל (TFS administration console), יצא בגרסה האחרונה של TFS 2012 כלי אדמיניסטרטיבי חדש.

הכלי החדש מאפשר ניתוח תמונת מצב של המערכת מבחינת עומסים וביצועים. הכלי מציג זאת משני אספקטים שונים Activity Log ו- Job Monitoring.

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

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

כתובת הכלי: http://<your TFS server>:8080/tfs/_oi

image

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

image

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

image

image

לסיכום

הכלי הינו יעיל מאוד לניתוח בעיות ביצועים של TFS והוא משתלב כחלק אינטגרלי למוצר.

 

סיימתם לקרוא ויש לכם שאלות? כנסו לפורום ALM שלנו בעברית והתייעצו עם מיטב מומחי הקהילה!

 

Eyal[3]Original_1024[4]הפוסט נכתב  על ידי איל פרץ, ממקימי חברת דלג'ן, חברה המתמחה במתן שירותי ייעוץ ופיתוח בתחום ה-ALM. בעבר איל היה יועץ ALM בכיר והוביל צוותי ALM בחברות מובילות. כנסולבלוג החברה לקרוא עוד כתבות מעניינות בנושא.

פורסם בתאריך 10/02/2013 04:48 על ידי Eran Sharvit
vs20120_logo

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

מה זה OData?

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

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

השאילתה הבאה למשל מחזירה את רשימת הסרטים שיצאו אחרי 1980:

http://odata.netflix.com/Catalog/Titles?$filter=ReleaseYear gt 1980

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

 

היתרונות של OData

אוקי אז OData זה דבר טוב ונוח, אבל אנו יודעים כבר ששרת ה- TFS מכיל שכבת Web Services עשירה שמולה ניתן לעבוד. אז מדוע שנרצה להשתמש בממשק אחר כמו OData?

אמרנו כבר ש- OData הוא פרוטוקול Web המאפשר לתשאל ולעדכן מידע ממערכות באמצעות התבססות על פרוטוקולי Web מוכרים כגון HTTP.  זה אומר שאנחנו יכולים לכתוב Client Applications ללא תלות במערכת ההפעלה מכיוון שמצופה מה - Client לתקשר בפרוטוקול HTTP/S, ולקבל תגובה מהמערכת באותה צורה.

המשמעות של זה היא שאנו לא צריכים להיות כבולים ל – API של המערכות אליהן אנו מתממשקים -  במקרה שלנו שרת Team Foundation Server.

החסרונות ב-  Web Services API

ישנם שני חסרונות עיקריים בלתקשר עם שרת ה- TFS באמצעות ה- Web Services API שהוא מציע.

  1. שימוש ישיר ב – Web Services של המערכת אינו נתמך ע"י מיקרוסופט. עדיף להשתמש בשכבת ה - API הרגילה.
  2. מיקרוסופט מצהירה שכמעט תמיד ישתנו החתימות של פונקציות ה – Web Services בעדכוני גרסה. כתוצאה מכך נצטרך לתקן את כל אפליקציות הקליינט שהסתמכו על שיטה זו.

 

התקנת ממשק OData לתקשורת מול TFS

התקנת שכבת ה - OData יכולה להיות על כל שרת שיש לו תקשורת HTTP/S עם שרת ה - TFS (אפשר להתקין גם על שרת ה-TFS עצמו).

להוראות התקנה והגדרה הקליקו כאן.

 

השימוש בממשק ה- OData

לאחר ההתקנה כל שנותר לעשות הן פעולות פשוטות של Request ו-Response, ניתן לקבל הסבר מפורט לפקודות ולאופן השימוש בדף הבית של ה - OData:

image

ועכשיו כמה דוגמאות פשוטות:

נדרש מה – Client Application לבצע פעולת GET\POST ע"מ שנוכל לעבוד מול OData. בדוגמאות נשתמש בדפדפן (ללא שום הגדרות מיוחדות) שיבצע עבורנו את פעולת ה - GET. את הפלט של פעולת ה - GET נקבל בצורת XML, וכל שנשאר ל – Client Application הוא לנתח את ה - XML ולהציגו בצורה ידידותית.

לדוגמה, כך נקבל את רשימת הפרויקטים משכבת ה - OData:

https://{ODataServerAddress}/Projects 

 

כמובן שישנה גם תמיכה בצורות מורכבות יותר כמו שימוש בפרמטרים ובפילטרים. לדוגמא, נבקש לקבל רק פרויקט אחד, פרויקט "Staging":

https://{ODataServerAddress}/Projects(‘Staging’) 

אפשר להציג גם את כל הפרויקטים מלבד פרויקט ה”Staging” :

https://{ODataServerAddress}/Projects?$filter=Name%20ne%20’Staging’ 

ה – ne בכתובת משמש כאופרטור Not Equal.

 

ניתן גם לעדכן מידע, אולם אז נצטרך לשנות את ה – Web Method שלנו מ - GET ל - POST. באמצעות ה - POST נוכל ליצור ולעדכן Work Items ואף להפעיל Build מרחוק.

image

מיקרוסופט מספקת גם את קוד המקור של פרויקט ה - OData כך שאם משהו חסר תמיד ניתן להוסיף...

 

סיכום

שכבת ה - OData מספקת שכבה אמינה ובלתי תלויה במערכות הפעלה. ניתן ליצור אפליקציות קליינט לכל פלטפורמה אשר תומכת בתקשורת Web בסיסית.

 

 

הכנסו עכשיו לפורום העברי שלנו בנושא Visual Studio & ALM והתייעצו עם מיטב מומחי הקהילה.

 

 

Eyal[3]Original_1024[4]הפוסט נכתב  על ידי איל פרץ, ממקימי חברת דלג'ן, חברה המתמחה במתן שירותי ייעוץ ופיתוח בתחום ה-ALM. בעבר איל היה יועץ ALM בכיר והוביל צוותי ALM בחברות מובילות. כנסו לבלוג החברה לקרוא עוד כתבות מעניינות בנושא.

פורסם בתאריך 04/02/2013 04:38 על ידי Eran Sharvit

vs20120_logoלפני מספר ימים כתבנו פוסט על העדכון החדש ל- Visual Studio 2012, עדכון שנקרא Update 2.. העדכון כרגע בגרסת ה- CTP אך כבר עכשיו שוחררו יכולות חדשות, בעיקר בנושא ה- ALM.

 

הכירו את ה- Test Hub

בפוסט זה אני רוצה לכתוב על פיצ’ר חדש שרבים המתינו לו בכיליון עיניים: ה- Test Hub in Team Web Access או בקיצור ה- Test Hub שהוא למעשה כלי שנותן יכולת להריץ בדיקות דרך ה- Web, יכולת קריטית עבור ארגונים רבים.

 

הבעיה – איך להריץ בדיקות ללא התקנת תוכנה ייעודית?

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

 

הפתרון – הרצת בדיקות ישירות מהדפדפן באמצעות Test Hub

ה- Test Hub  הוא כלי בדיקות מבוסס Web שלא דורש התקנה כלל ומאפשר לבודקים להריץ את הבדיקה על המחשב כאשר ה – Test Runner רץ בתוך Browser. (עובד לא רק ב- IE אלא גם בדפדפנים אחרים).

 

איך משתמשים ב- Test Hub?

ה - Test Hub in Team Web Access לא שוחרר כחלק מהתקנת ה – CTP אלה כחלק משירות הענן Team Foundation Service.  לכן, יש ליצור חשבון ב – Team Foundation Service מכאן. אל תדאגו, זה חינם.

לאחר יצירת החשבון ו – Team Project מתאים נבצע את השלבים הבאים שאותם נסביר בפירוט בהמשך הפוסט:

  1. נחבר את ה – MTM לשרת ולפרויקט
  2. ניצור תוכנית בדיקות
  3. ניצור מקרה בדיקה
  4. נריץ את מקרה הבדיקה דרך ה – Test Hub  ונבדוק שהתוצאות מתועדות.

 

הוראות צעד אחר צעד

צעד 1: נריץ את ה – MTM

צעד 2: לחץ על Home

Step_3_Click_on_the_home

 

צעד 3: עכשיו לחץ Change project

Step_4_Change_project

 

צעד 4: לחץ Add server

Step_5_Change_server

 

צעד 5: הזן את ה – URL שלך ב – Team Foundation Service ולחץ Add

Step_6_add_url

 

צעד 6: תתבקש לבצע Log-in יש לבצע זאת עם ה – Microsoft Account שלך

Step_7_sign_in_with_live_ID

 

צעד 7: יש לבחור את ה– Team Project שיצרת ב– Team Foundation Service ולחץ Connect now

Step_8_Go_to_project

 

צעד 8: לחץ Add להוספת תוכנית בדיקות

Step_9_Add_New_plan

 

צעד 9: הזן שם לתוכנית הבדיקות ולחץ Add

Step_10_Add_New_plan

 

צעד 11: בחר את תוכנית הבדיקות שנוצרה ולחץ Select plan

Step_11_Select_the_New_plan

 

צעד 12: לאחר שבנינו תוכנית בדיקות ניצור Test Suite על ידי לחיצה על New

Step_12_Add_New_Suite

 

צעד 13: הזן שם משמעותי ל – Test Suite ולחץ New ליצירת Test Case חדש

Step_13_Add_New_Test_Case

 

צעד 14: הזן את מקרה הבדיקה ולחץ Save and Close

Step_21_Add_Test_Cases

 

צעד 15: ניכנס ל – Web Access של ה – Team Foundation Service ונלחץ על Test בשורת הטאבים

Step_1_Test_Tab

נראה שהבדיקה מופיעה.

 

צעד 16: נסמן את הבדיקה ונלחץ Run

Step_15_Run_Test

כעת יפתח לנו ה – Test Runner

image

 

צעד 17: נריץ את הבדיקה עד הסוף  ולחץ Save and Close בסוף הבדיקה

image

 

נראה את התוצאה ב – Test Hub in Team Web Access

Step_18_Results

נראה גם את התוצאה ב - MTM

Step_19_Results

 

Step_19B_Results

 

ניתן גם לכתוב בדיקות דרך ה – Test Hub in Team Web Access או לערוך בדיקות קיימות, כמו כן פונקציונאליות חדשה נוספת שניתן לראות כאן זה תיוגים.

 

תייגתי את הבדיקה הזאת כ – Valid Test.

Step_20_Add_Test_Cases

 

סיכום

על פי התרשמותי מהתנסות קצרה עם הכלי מדובר בכלי נוח יחסית שנותן פתרון הולם היכן שלא ניתן להתקין את ה – MTM. בוודאי שבכול מקום בו ניתן להתקין את ה – MTM אני יעדיף אותו מפני שיש לו יכולות רבות יותר.

 

 

יש לכם שאלות בנושא Visual Studio ו-ALM? כנסו לפורום שלנו בעברית.

 

 

EranRuso4topQ4הפוסט נכתב על ידי ערן רוסו , מנהל חטיבת ה - ALM & DevOps בחברת TOP Q, המובילה במגוון פתרונות אוטומציה לבדיקת מוצרי תוכנה, ALM ו – DevOps בטכנולוגיה מתקדמת, המיועדים לסביבות מחשוב מרובות מערכות, קונפיגורציות ותהליכים בארגונים בינוניים וגדולים. כנסו לבלוג של ערן וקראו על עוד נושאים מעולם ה- ALM וה- TFS ואתם מוזמנים גם לקבוצת הלינקדאין.

פורסם בתאריך 14/01/2013 05:34 על ידי Eran Sharvit

vs20120_logoאחד מהאתגרים הגדולים ביותר בכתיבת unit testing לאפליקציה שלנו היא העובדה שלעתים אנו תלויים בגורמים חיצוניים שמקשים עלינו לבדוק כל יחידה בצורה עצמאית. למשל, קטע קוד הכותב למדפסת או למערכת קבצים. מאמר זה יספר לכם כיצד ניתן להתגבר על מכשול זה באמצעות יכולת חדשה ש- Visual Studio 2012 מציגה.

אז בבמאמר הקודם דיברנו על stubs – כלומר על הדרך הנכונה לבדוק בצורה מבודדת ככל האפשר קוד שנכתב בצורה נכונה, כלומר תוך שימוש ב-Interfaces וב-Dependency Injection.

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

 

הכירו את ה- Shims

כאן באים לעזרתנו כוחות האופל – ה-Shims. Shims מאפשרים להחליף כל פונקציה שהקוד קורא לה – כולל פונקציות מערכת –בפונקציה משלנו, וזאת בלי לשנות את הקוד הנבדק.

למה ה-Shims נחשבים לכוחות אופל? כי הם מחליפים, למעשה, כל קריאה לפונקציה המקורית בפונקציה שלנו. כיוון שמדובר בפונקציית מערכת, ולא ב-Interface, כמו במקרה של Stubs – הרי שכל הקריאות, כולל אולי כאלה שלא חשבנו עליהן ואולי אף כאלה המופעלות על ידי הקוד הבודק, יוחלפו, מה שעלול לגרום לתוצאות מפתיעות... לכן יש להשתמש ב-Shims בזהירות, ובוודאי להעדיף שימוש ב-Stubs כאשר הדבר אפשרי.

אחרי האזהרות, הגיע הזמן להסביר איך משתמשים ב-Shims...

ניקח את דוגמת הקוד הבאה:

public class Multiplier
{
private StreamWriter m_outFile;
public Multiplier()
{
m_outFile = new
StreamWriter("c:\\users\\yoarno\\Documents\\xxx.txt", true);
}
public int MultipyAndSave(int m, int n)
{
var result = m * n;
var strResult = result.ToString();

m_outFile.Write(strResult);
return result;
}
}

שימו לב שמדובר בקוד דומה לזה שהבאנו בחלק הראשון, רק שפה הוא כתוב פחות יפה – כלומר ללא Dependency Injection ועם פניה ישירה ל-File System. כדי לבדוק את הקוד, עלינו לבודד את הפניה ל-File System, כיוון שאיננו בטוחים שבמכונת הטסט יהיה קובץ בנתיב המופיע ב-Constructor, ובוודאי שאיננו בטוחים שתהיה לנו הרשאת כתיבה לנתיב הזה. בנוסף איננו מעוניינים להשאיר במכונת הטסט "שאריות" בצורת קובץ חדש שיישאר לאחר ביצוע הטסט.

נניח בנוסף לכל אלה שאין ביכולתנו לשנות את הקוד – אולי המדובר בספריה סגורה ש"ירשנו" או סתם בקוד שאנחנו מפחדים לשנות כל עוד שאין לנו Unit Tests שבודקים אותו כמו שצריך (בעיה של "ביצה ותרנגולת").

לכן הפתרון היחידי שאנחנו יכולים לפנות אליו הוא שינוי של המימוש של StreamWriter, וזאת נוכל לעשות בעזרת ה-Shims.

 

איך משתמשים ב- Shims

נוסיף ל-Solution שלנו Test Project וניצור ממנו Reference לפרוייקט שבו כתבנו את ה-Multiplier (בדוגמא שיצרתי הוא נקרא ShimsSample).

כעת נצביע על ה-Reference (כמו שעשינו בחלק 1) אך הפעם נבחר את המודול System (בו ממומש StreamWriter) ונלחץ על מקש העכבר הימני. יופיע התפריט הבא:
image

נבחר Add Fakes Assembly וכעת יתווספו לפרוייקט שני אלמנטים חדשים – ספריה בשם System.4.0.0.0.Fakes וקובץ הגדרות בשם System.Fakes:

image

כעת, נוכל להחליף את היישום של StreamWriter.Write. את זאת נעשה בצורה הבאה:

using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using ShimsSample;
using Microsoft.QualityTools.Testing.Fakes;

namespace MultiplyShimsTest
{
[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestMultiplyWrite()
{
using (ShimsContext.Create())
{
string actualString = "";
System.IO.Fakes.ShimStreamWriter.AllInstances.WriteString =
(@this, s) => actualString = s;
var mult = new Multiplier();
mult.MultipyAndSave(5, 7);
Assert.AreEqual("35", actualString);
}

}
}
}

 

שימו לב:

  1. קטע הקוד הקורא ל-Shim תמיד יהיה כלול בתוך ShimsContext. בצורה כזו נגביל את ההשפעה של החלפת המימוש לאותן שורות קוד המעניינות אותנו – כדי למזער את הסכנה שבהחלפת פונקציות מערכת (יש לזכור שאפילו Visual Studio עצמו משתמש ב-StreamWriter וייתכן שנפגע גם בפונקציות שלו)
  2. כמו במקרה של Fakes, גם כאן הפונקציה שהחלפנו נקראת WriteString – כלומר, אותו מופע של פונקציית Write המקבל String כפרמטר.

נריץ את הטסט (דרך תפריט Test/Run/All Tests) ונוודא שהוא עבר. אפשר בכוונה לשנות את ה-Expected Value כדי לוודא שהטסט נכשל במקרה כזה.

למרות שהצלחנו לשנות את ה-StreamWriter.Write, עדיין הטסט לא ירוץ תמיד על מכונת Build כיוון שחוקיות קובץ המטרה (c:\users\yoarno\Documents\xxx.txt) נבדקת בזמן הקריאה ל-Constructor של StreamWriter. כלומר, כדי לבודד לחלוטין את הפונקציה הנבדקת עלינו להחליף את ה-Constructor. את זה נבצע בצורה הבאה:

[TestMethod]
public void TestMultiplyWrite()
{
using (ShimsContext.Create())
{
string actualString = "";
System.IO.Fakes.ShimStreamWriter.ConstructorStringBoolean =
(@this, f, fAppend) =>
{
var shim = new System.IO.Fakes.ShimStreamWriter(@this)
{
WriteString = (s) => actualString = s
};
};

var mult = new Multiplier();
mult.MultipyAndSave(5, 7);
Assert.AreEqual("35", actualString);
}

}

שימו לב:

  1. החלפנו את ה-Constructor הספציפי (זה שמקבל String ו-Boolean) באחד שלא ניגש כלל לקבצים.
  2. את ההחלפה של WriteString הכנסנו לתוך ה-Constructor. כך קיבלנו צמצום נוסף של ה-Shim – במקום לכל המופעים של StreamWriter הוא מתייחס רק לאלה הקוראים לConstructorStringBoolean .
  3. החלפת המתודה Writestring יכולה להתבצע בכל Instance של StreamWriter , כיוון שכולם מצביעים לאותן מתודות. לכן ניתן להגדיר משתנה ספציפי (כאן קראנו לו shim) ולבצע עליו את ההחלפה.

כעת הקוד ירוץ בכל סביבה, כיוון שהוא מתעלם לחלוטין מהקובץ שבו נשמור את התוצאה. כמובן שאנחנו יכולים גם לחלץ את שם הקובץ (משתנה f בקריאה ל- ConstructorStringBoolean ולבצע גם עליו בדיקות.

 

לסיכום:


 

  • Shims הם כלי רב עוצמה (כמעט אפל...) לבידוד של בדיקות לקוד קיים כך שיוכלו לרוץ בכל סביבה.
  • יש להשתמש ב-Shims כמוצא אחרון, ורק אם אין ביכולתנו לשנות את הקוד. אם אפשר, תמיד עדיף להשתמש ב-Stubs ו-Dependency Injection כמו שהסברתי בחלק הראשון של המאמר.
  • Unit Tests הם ידידך – כתוב כמה שיותר, כך שתוכל להיות בטוח שהקוד שלך בדוק, מתפקד וימשיך לתפקד גם לאחר שינויים.
  • רוץ ונסה את Visual Studio 2012 עוד היום! יש גם גרסה חינמית קלה או גרסה מלאה להתנסות.

* רשימה זו מסתמכת בחלקה על הפוסט המצוין של Peter Provost.

 

הכנסו עכשיו לפורום העברי שלנו בנושא Visual Studio & ALM והתייעצו עם מיטב מומחי הקהילה.

 

Photo_5F5B07F8[1]הפוסט נכתב על ידי יואל ארנון, מהנדס תוכנה במיקרוסופט המסייע ללקוחות פרמייר - Premier Field Engineer. בעבר יואל היה יועץ עצמאי וחבר בצוות הפיתוח של MSMQ במיקרוסופט חיפה.

פורסם בתאריך 12/11/2012 15:04 על ידי Eran Sharvit

imageשרת ה- Team Foundation Server או בקיצור TFS, הוא עדיין הפלטפורמה המיקרוסופטית החזקה ביותר בכל הנוגע לשיתוף פעולה בין צוותי פיתוח תוכנה. הוא מספק פתרון מקצה לקצה בכל שלבי הפיתוח של אפליקציות, כולל ניהול ותכנון פרוייקטי אג’ייל, ניהול גרסאות, אוטומציה ועוד יכולות הדרושות לניהול יעיל של פרוייקט תוכנה.

בנוסף ליכולות ששרת ה- TFS מספק, אנו רואים צורך הולך וגובר של אותן יכולות גם לסביבות פיתוח הטרוגניות, בהן המפתחים משתמשים ב- Visual Studo, Eclipse או Xcodoe, בהן המפתחים משתמשים ב- .NET, Jave, ++C או JavaScript, בהן המפתחים בונים אפליקציות לפלטפורמות Windows, Windows Phone, Azure, Android, iOS, MacOS, Linux.
אנו גם מבחינים בעובדה חשובה נוספת - שהענן הפך להיות גורם המפתח שמאפשר שיתוף פעולה בין המפתחים בסביבה הטרוגנית שכזו.

שנה שעברה בוועידת Build  2011, הודענו על שירות חדש – Team Foundation Service – גרסה של TFS על הענן של Windows Azure, שירות הנגיש מכל מקום ומכל הכלים המוכרים,שירות הנגיש מכל השפות והפלטפורמות. בשנה האחרונה הרצנו את השירות בגרסת ה- Preview שבהמהלכה שיפרנו אותו והוספנו יכולות.

אנו שמחים להודיע שהחל מתחילת החודש השירות שוחרר לציבור באופן רשמי והוא זמין לכל אחד החפץ להרשם!

להרשמה ללא תשלום לשירות הכנסו לכאן: https://tfs.visualstudio.com.

 

Team Foundation Service כולל תוכנית חינמית עם יכולות חזקות המאפשרות למפתחים בודדים או צוותי פיתוח קטנים (lean teams) להתחיל להשתמש בצורה מיידית בפלטפורמת ה- ALM מבלי לרכוש חומרה יקרה, לנהל גיבויים ולדאוג לקונפיגורציה והקשחה של השרת. השירות כולל תמיכה לא רק בטכנולוגיות וכלי פיתוח מיקרוסופטים כגון Visual Studio, Excel ו- Project – באמצעות קליינט Team Explorer Everywhere שכתבנו עליו בעבר ו- Git-TF, גם מפתחים של Mac OS, Linux, Solaris ו- HP-UX יכולים להתחבר ולהשתמש בשירות בקלות, באמצעות סביבת הפיתוח המועדפת עליהם.

תוכנית החינם כוללת תמיכה בעד 5 משתמשים, מספר בלתי מוגבל של פרוייקטים, ניהול גרסאות (Version Control), יכולות work item tracking, כלי תכנון אג’יליים, feedback management ו- build (שנמצא עדיין בגרסת preview).

בנוסף, מנוי MSDN מסוג Visual Studio Test Pro, Visual Studio Premium ו- Visual Studio Ultimate יזכו להטבות נוספות אשר יתפרסמו בקרוב, במידה ויעשו שימוש בשירות.

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

פורסם בתאריך 17/10/2012 16:33 על ידי Eran Sharvit

vs20120_logoכולכם כבר יודעים שמגרסת 2012 ששוחררה לאחרונה Visual Studio הפך למעשה כלי פיתוח המסוגל לנהל את כל מחזור החיים של התוכנה: משלב התכנון, דרך שלב הפיתוח ועד לשלב הבדיקות. לנו המפתחים, זה כמובן עושה את החיים הרבה יותר “קלים” במובן הזה שאנחנו כבר לא צריכים ללהטט וללמוד את רזי השימוש בכלים שונים – אנחנו מקבלים כלי אחד שעושה את כל מה שאנו זקוקים לו’ או בניסוח יותר גיקי -  One tool to rule them all.

עם זאת, כן ישנן מספר גרסאות ל- VS 2012 וזאת על מנת לאפשר לכם המפתחים, לבחור את הגרסה המתאימה ביותר לכם לפי הצרכים שלכם, של הפרוייקט וכמובן התקציב. העיקרון הוא פשוט: ככל שהגרסה מתקדמת יותר, היא מכילה יותר יכולות ופיצ’רים כך שלמעשה הגרסה החינמית (Express) היא בהחלט עוצמתית אך כמובן שמכילה הכי פחות פיצ’רים, ואילו גרסת ה- Ultimate, היא הגרסה החזקה ביותר המכילה את כל היכולות של הגרסאות מתחתיה ועוד.

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

אתם מוזמנים לנסות את גרסת הניסיון של Visual Studio 2012 Premium

 

 

כלים לאבטחת איכות הקוד- Code Quality Tools

אז גרסת Visual Studio Professional 2012 או בקיצור VS Pro, מספקת יכולות unit testing עם תמיכה ב- test explorer החדש ותמיכה בפריימוורק בדיקות צד שלישי כגון NUnit. xUnit, QUnit. בהחלט מרשים.

גרסת הפרימיום, בנוסף ל- MS Test,  מוסיפה עוד מגוון יכולות הנוגעות לאבטחת איכות הקוד:

  • Code Coverge – עוזר לכם לראות כמה מן הקוד שלכם מכוסה מבחינת בדיקות יחידה, ממש עד רמת שורת הקוד, על מנת שתגלו את הפערים בזמן.
  • Code Metrics – עוזר לכם למדוד איפה יש סיבוכיות מיותרת שיכולה להביא לבאגים ותחזוקה מיותרת.
  • Static Code Analysis – עוזר לכם להחיל חוקים ו- best practices על הקוד על מנת למנוע בעיות אבטחה ויציבות. עוזר לכם גם לאכוף את מתודולוגיית הפיתוח בארגון/חברה שלכם.
  • Code Profiling – עוזר לכם לזהות בעיות ביצועים של הקוד שלכם, לזהות דליפות זיכרון, race conditions ו- deadlocks.
  • Code Clone Analysis – פיצ’ר חדש ב- 2012, שסורק את הקוד שלכם במטרה למצוא כפילויות. עוזר לכם למצוא קוד ששוכפל באמצעות copy and paste ועוזר לכם למצוא היכן צריך לבצע refactoring.
    אתם יכולים לראות וידאו בנושא.
  • Code Review – עוד פיצ’ר חדש ב- 2012 המאפשר בצורה נוחה וקלה לתת סקירות קוד או לקבל סקירות קוד מאחרים. עוד בוידאו כאן.

 

Suspend and Resume

אם אתם עובדים כמפתחים, בטח נתקלתם יותר מפעם אחת בסיטואציה הבאה: אתם עובדים על משימת פיתוח כלשהי, לגמרי in the zone, לא מעט קבצים פתוחים, breakpoints, pending changes וכו’ ואז לפתע מגיע ראש הצוות, מבקש לעזוב הכל כי התגלה איזה באג קריטי בסביבת הייצור שדורש תיקון מיידי. אם זה מוכר לכם, בטח תשמחו לגלות שבגרסת הפרימיום נוספה יכולת חדשה שמטפלת בדיוק בנקודה כואבת זאת: supend and resume. רק תלחצו על suspend והמצב של סביבת הפיתוח יישמר, מה שייאפשר לכם לעבוד בנוחות על משימה אחרת לגמרי. בסיום תלחצו על resume – וסביבת הפיתוח תשחזר בדיוק את ה- state שהיה קודם: קבצים פתוחים, breakpoints, pending changes וכו’. מאד נוח. עוד על כך בוידאו הזה.

 

Agile Tools

VS 2012 הציגה כלי Agile חדשים על מנת שתוכלו לעבוד על המשימות השוטפות בצורה יעילה ופשוטה יותר וכמובן לפי העקרונות והקונספט של מתודולוגיית ה- Agile. בגרסת הפרימיום תמצאו כלים שונים כגון ה- task board החדש המאפשר לכם לראות את ה- product backlog items ברזולוציה של מטלות וכמובן את סטטוס המטלות. גרסת הפרימיום גם כוללת את כלי התכנון של ה- product backlog ו- spring planning המאפשר לכם להקליט ולנהל את ה- backlog והספרינטים שלכם, כולל capacity managmnet. עוד כל כך בוידאו כאן.

 

StoryBoards

storyboarding זהו תוסף לתוכנת ה- power point המאפשר לכם ליצור ולהפיץ בקלות StoryBoarding לשאר אנשי הצוות ובעלי העניין. יש המון אלמנטים שכבר כלולים (כגון דפי ווב, טבלאות, ווידג’טים ועוד הרבה קומפוננטות אחרות) ואתם גם יכולים ליצור ולשתף בקלות אלמנטים אחרים שהפרוייקט זקוק להם.

 

Testing

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

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

  • test case management – ביחד עם Microsoft Test Manager, סט של כלים לביצוע וניהול בדיקות.
  • כלי בדיקות ידניות – תמיכה ב- fast forward playback  לביצוע אוטומציה של בדיקות. עוד על כך בוידאו הזה.
  • Exploratory testing – פיצ’ר חדש ב- 2012, מאפשר לכם לבדוק בפשטות ובמהירות את האפליקציה שלכם מבלי לבנות test case. אתם יכולים לשחזר ולהקליט באגים ואפילו לבצע הנדסה לאחור של test case.
  • Automated functional testing – אתם מעוניינים לבצע בדיקות אוטומטיות לאפליקציית הווב שלכם? בדיקות Coded UI בגרסת הפרימיום מאפשרות בדיוק את זה ויכולות להווצר מבדיקות ידניות או from scratch. עוד על כך בוידאו הזה.
  • כלי פידבק חדש – מאפשר לכם לקבל ולהגיב על פידבקים שהתקבלו מבעלי עניין חיצוניים אשר משתמשים בכלי חינמי אשר ניתן להורדה.
  • Lab Management – מאפשר תמיכה במעבדת בדיקות וירטואלית, המאפשרת לכם לנהל אוטומציה מקצה לקצה של תהליך ה- build, ההפצה והבדיקה. עוד בוידאו הבא.

 

סיכום

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

אתם מוזמנים לנסות את גרסת הניסיון של Visual Studio 2012 Premium.

יש לכם שאלות נוספות בנושא Visual Studio? הכנסו לפורום שלנו בעברית!

פורסם בתאריך 08/08/2012 14:06 על ידי Eran Sharvit

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

 

שימוש ב- Fakes ב- Visual Studio 2012

VIsual Studio 2012 מציגה פיצ’ר חדש ושימושי שנקרא Fakes. הפיצ’ר נותן לכם 2 יכולות חדשות: להוסיף stubs ו- shimes באמצעות כתיבה מינימלית של קוד וללא שימוש ב- mocking framework חיצוני, מה שמאפשר כתיבת בדיקות קלה ומהירה יותר במקרים של קוד שבד”כ נתקשה לבדוק אותו בשל התלות שלו בגורמים “חיצוניים”.

אחד מכללי הברזל של Unit Testing אומר, כי עלינו לבדוק כמה שיותר את הקוד שביחידה שלנו, וכמה שפחות את הקוד ש"בסביבה". כך, למשל, אם יש לנו פונקציה שמחשבת ערך מסויים (נניח מכפלה של שני מספרים), שומרת אותו לקובץ ומדפיסה אותו במדפסת, נשאף לכתוב לה בדיקות הבודקות את נכונות החישוב, וכן בודקות שאכן למדפסת ולקובץ נשלח הערך הנכון.

לא נרצה לכתוב בדיקה שתהיה תלויה בהמצאות מדפסת בזמן הרצת הבדיקה, או בזכויות גישה לתקיה מסוימת בדיסק – מה שייתכן שלא יתקיים אם אנחנו מריצים את הבדיקה על ה-Build Server או בכלל בענן.
כדי להשיג את המטרה הזו, נצטרך אובייקט "מפוברק" (Fake) שיחליף את הסביבה האמיתית.

אם כתבנו את הקוד לפי כללים נכונים והשתמשנו כיאות ב-Dependency Injection , הקוד שלנו ייראה כך בערך:

public class Multiplier
{
private IPrintHandler m_printHandle;
private IFileSystemHandler m_fileHandle;
public Multiplier(IPrintHandler printHandle, IFileSystemHandler fileHandle)
{
m_printHandle = printHandle;
m_fileHandle = fileHandle;
}
public int MultipySaveAndPrint(int m, int n)
{
var result = m * n;
var strResult = result.ToString();
m_printHandle.Print(strResult);
m_fileHandle.Save(strResult);
return result;
}
}

כאשר ה-Interfaces בהם אנו משתמשים יוגדרו כך:

public interface IFileSystemHandler
{
void Save(string strToSave);
}

public interface IPrintHandler
{
void Print(string strToPrint);
}

במקום אחר בקוד יופיע יישום של IFileSystemHandler ו-IPrintHandler שאכן כותב לקובץ ומדפיס למדפסת.

(עוד על Dependency Injection).

 

Stubs

כדי לבדוק את ה-Multiplier ללא תלות במדפסות או במערכת קבצים, כל מה שנצטרך לעשות הוא לכתוב יישום משלנו ל-IPrintHandler ו-IFileSystemHandler. את זה נעשה בצורה הבאה, תוך שימוש בתכונת ה-Fake של Visual Studio 2012:

נוסיף ל-Solution שלנו Test Project וניצור ממנו Reference לפרוייקט שבו כתבנו את ה-Multiplier (בדוגמא שיצרתי הוא נקרא TrialLib).
כעת נצביע על ה-Reference ונלחץ על מקש העכבר הימני. יופיע התפריט הבא:

clip_image002

נבחר Add Fakes Assembly וכעת יתווספו לפרוייקט שני אלמנטים חדשים – ספריה בשם TrialLib.Fakes וקובץ הגדרות באותו שם:

clip_image004

בשלב זה, Visual Studio 2012 כבר ייצר לנו יישום ל-Interfaces, שבו נוכל להחליף כל מתודה שנרצה. כך, למשל, נוכל לכתוב Unit Test בצורה הבאה:

using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using TrialLib;
using TrialLib.Fakes;

namespace TryConsoleUnitTestProject
{
[TestClass]
public class UnitTestMultiplier
{
[TestMethod]
public void TestMultiply()
{
string ActualSavedString = "";
string ActualPrintedString = "";
var stubSave = new StubIFileSystemHandler
{
SaveString = (string textToSave) => { ActualSavedString = textToSave; }
};

var stubPrint = new StubIPrintHandler
{
PrintString = (string textToSave) => { ActualPrintedString = textToSave; }
};

var multiplier = new Multiplier(stubPrint, stubSave);
var Actual = multiplier.MultipySaveAndPrint(5, 7);

Assert.AreEqual<int>(35, Actual);
Assert.AreEqual<string>("35", ActualSavedString);
Assert.AreEqual<string>("35", ActualPrintedString);

}
}
}

שימו לב לצורת הכתיבה – Fakes כבר יצר עבורי Class המיישם את ה- Interface (בשם Stub ולאחריו שם ה-Interface), ומה שנשאר לי הוא להחליף את המתודות שמעניינות אותי במתודות בדיקה.

שם המתודה יורכב מקומבינציה של השם המקורי והפרמטרים – כך מתודת ה- Save שמקבלת פרמטר מסוג String תקרא SaveString, ובדוגמא הזו החלפתי אותה במתודה משלי שפשוט שומרת את הפרמטר במשתנה ActualSavedString כדי לבדוק אחר כך אם אמנם נשלח למתודה הפרמטר הנכון.

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

בדוגמא זו השתמשתי בשיטה הנקראת Stub (כפי שמעיד גם שם ה-Classes ש-Fake ייצר בשבילנו, כלומר StubIFileSystemHandler ו- StubIPrintHandler . זוהי השיטה הנכונה, לדעתי, לבודד את המתודה הנבדקת מהסביבה האמיתית. אם תרצו, זו כנראה השיטה שילמדו בהוגוורטס אם אי פעם ילמדו שם הנדסת תוכנה..

 

Shimes – כאשר אין אפשרות לבצע Refactor לקוד

קיים עדיין בעולם (לא אצלכם חלילה) קוד שפונה ישירות לרכיבים חיצוניים – דרך ספריות של מיקרוסופט או של צד שלישי – ולא עושה לשם כך שימוש בממשק ברור וניתן להחלפה. כמובן שהטיפול הנכון בקוד כזה הוא כתיבתו מחדש בצורה נכונה, תוך שימוש ב-Dependency Injection כמו שהראינו למעלה. בכל זאת, קיימים עדיין מנהלים בעולם (לא המנהלים שלכם חלילה) שהאפשרות של שכתוב מחדש של כל המערכת גורמת להם גירוד במקומות לא נעימים, ובכל זאת הם דורשים שתוסיפו Unit Tests למתודות הישנות.

בשביל האפשרות הזו נוצרו כוחות האופל – ה-Shims. הם מאפשרים ל- Fakes להחליף כל קריאה למתודה בקריאה "מפוברקת" גם בלי שהקוד הקורא מודע לכך, ובזה מאפשרים, בעצם, לכתוב Unit Tests לכל קוד שהוא. כמו שכל מי שהתעסק עם כוחות אופל יודע, השימוש בהם בדרך כלל אינו בחינם, אבל על כך – בפוסט הבא.

מומלץ לקרוא את הבלוג המצויין של  Peter Provost להבנה מלאה של Stubs ו-Shims.

יש לכם שאלות נוספות בנושא VS 2012, ALM  או Testing?
הכנסו עכשיו לפורום העברי שלנו בנושא והתייעצו עם מיטב מומחי הקהילה.

 

Photo_5F5B07F8[1]הפוסט נכתב על ידי יואל ארנון, מהנדס תוכנה במיקרוסופט המסייע ללקוחות פרמייר - Premier Field Engineer. בעבר יואל היה יועץ עצמאי וחבר בצוות הפיתוח של MSMQ במיקרוסופט חיפה.

פורסם בתאריך 11/06/2012 14:04 על ידי Eran Sharvit

vs20120_logoבמסגרת עבודתי אני נשאל פעמים רבות מה חדש ב- Microsoft Test Manager 2012 (להלן MTM) לכן החלטתי לסכם בפוסט זה את הדברים החדשים ב- MTM 2012.

מאחורי הקלעים

חלק גדול מהשינוי ב- MTM2012 הוא דווקא לא בחלק הנראה לעין. מאחורי הקלעים בוצעה עבודה מסיבית מאד על נושא הביצועים ובוצע שיפור משמעותי בכל התסריטים, החל מהתחברות לTest Plan דרך סקירת טסטים בתוך Test Suites וכמובן הרצת Test Runner ופתיחת באג מתוך ההרצה עד לפתיחת התוצאות.

כל התסריטים עובדים בצורה הרבה יותר מהירה וחלקה ללא המתנה מיותרת. בממשק המשתמש עכשיו יש גם תמיכה בטקסט עשיר בשדה Test Steps (סוף סוף Smile).

בעריכה…

image10ובהרצה…

image6

תמיכה ב- Html עשיר בשדות Html (לדוגמא אפשר להוסיף תמונה לתוך השדה ולא רק כ- Attachment)

image20בקרוב בימינו גם בתוך Test Steps…


הרצת בדיקות

ניתן לקבוע סטאטוס של בדיקה גם ללא פתיחת Test Runner.

רקע: ב- MTM 10 על מנת להגדיר בדיקה כעברה או נכשלה היה צורך להריץ אותה כביכול ורק לאחר פתיחתה ב- Test Runner ניתן היה להגדיר סטאטוס.

image17

גישה לTest Case בזמן הרצת בדיקות

רקע: ב- MTM 10 היה צורך להפסיק את ההרצה בכדי לפתוח בדיקה.

image13


מסך התוצאות

ראשית מסך התוצאות קיבל חלון בפני עצמו וכבר לא מסתתר במאפיינים של הPlan והתווסף חיתוך הן לפי Test Suite והן לפי בודק

Test-Results-MTM-2012



Exploratory Testing

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

בקרו אותנו בפורום ALM בעברית באתר הפורומים של MSDN ישראל!

 

BaruchFreiהפוסט נכתב ע"י ברוך פריי, ארכיטקט ALM בכיר בקבוצת סלע המייעץ לחברות רבות בתעשייה ובתעשייה הביטחונית בפרויקטי הטמעה של שרת TFS בתחומי הפיתוח והבדיקות. בין יתר ההתמחויות ברוך מתמחה בתכנון ופיתוח כלי מעטפת על בסיס פלטפורמת ALM של מייקרוסופט, וכן בפתרונות Automated Build מתקדמים למערכות מבוזרות הכוללים פריסה ובדיקות.

More Posts Next page »