סביבת בדיקות וירטואלית

**סביבת בדיקות וירטואלית** (ובראשי תיבות: **סב"ו**) – היא פלטפורמה, תוכנה או מערכת המאפשרת ליצור ולנהל בדיקות תוכנה על גבי מכונות וירטואליות.

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

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

## רקע
**[[מכונה וירטואלית]]** (או Virtual machine), היא מכונה (מחשב או שרת) שבאמצעות תוכנה מוציאה לפועל תוכניות ומפעילה אותן בסביבת עבודה כאילו פעלו במכונה פיזית רגילה. המחשב האמיתי נקרא "מארח", ואילו המחשב המדומה ששתול בתוכו נקרא "אורח"- והם משתמשים באותה החומרה (של המחשב המארח).

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

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

## יתרונות
* סב"ו יכולה להיבנות בזמן קצר.
* סב"ו מאפשרת לבדוק כמעט הכל מהגדרות וקוניפגורציות של שרת, דרך הקצאות משאבים, זיכרון ושטח אחסון הנתונים.
* מאפשרת לבעלי הרשאות מתאימות ליצור מחשבים אורחים המשתמשים במערכות הפעלה שונות. כל זאת מבלי שאותם המחשבים יהיו מודעים למערכת הפעלה שמותקנת במחשב המארח או לחומרה שמותקנת במחשב המארח.
* הסב"ו מספקת ביטחון, יעילות, צימצום עליות וחיסכון בכסף שעוזרים לבדוק ולבחון אפליקציות ושירותים נוספים הודות להפרדה מסביבת הפיתוח. כמו כן, חלק מהכלים המשמשים ל-סב"ו מוצעים בחינם, והם בעלי פונקציונליות פשוטה יחסית.
* סב"ו מאפשרת להוריד את ההוצאות הכרוכות ברכישת רישיונות תוכנה.
* מאפשרת שחזור ושכפול של מכונות וירטואליות בזמן קצר.
* ניתן להגדיר בסביבה מכונות וירטואליות ל'קריאה בלבד', ובכך למנוע נזקים למכונות אלו.
* ניתן לבצע "snapshot" – שמירת תמונת מצב של מכונה מסוימת ברגע מסוים.
* ניתן לייצא (Export) של תמונת מצב של מכונה וירטואלית לתיקיית קבצים או לקובץ חיצוני.
* ניתן לשמור קובץ גיבוי של המכונה הווירטואלית.
* לרוב נרצה ליצור בעזרת הסב"ו רשת המורכבת ממספר רב של מכונות וירטואליות, רשת זו מבודדת מסביבת ה-production ומכאן אינה דורשת שימוש בתוכנות אבטחה (כגון חומת אש) – ובכך יכולה לאפשר חיסכון נוסף בעלויות הבדיקות.
* ניתן ליצור מעבדת בדיקות וירטואלית רחבה המותקנת ומורצת על גבי מחשב נייד פשוט ללא צורך בקניית חומרה ייעודית.
* סב"ו מאפשרת יצירה של מספר סביבות ורשתות וירטואליות במקביל.

## חסרונות
* תוכנות לרוב ירוצו לאט יותר על מכונות ה'אורח' שנוצרו בסב"ו מאשר על מכונות רגילות.
* ישנן סב"ו שמאפשרות רק למשתמש יחיד לגשת למכונה וירטואלית מסוימת ברגע כלשהו.
* ככל שמספר המכונות הווירטואליות בסביבה הווירטואלית עולה, והמחשבים המארחים פזורים יותר, כך גם עולה הקושי בניהול סביבה זו.
* קיימות מגבלות בחומרה המוגדרת עבור המכונות הווירטואליות – למשל שימוש בהתקני USB וכונני רשת.
* לרוב סב"ו מוגבלות במספר המעבדים אותם הן מאפשרות להגדיר עבור מכונה וירטואלית (עד ליבה כפולה).
* הביצועים של המכונה ה'אורחת' מוגבלים על ידי החומרה של המכונה ה'מארחת'.
* כל מכונה וירטואלית מוגבלת בזיכרון, נפח דיסק, זמן מעבד וברשת.
* קשיים הנגרמים למטרת (ובעקבות) ביצוע גיבויים (בעיקר בגלל הגידול בכמות הנתונים) עלול להגביל את גודל הסביבה הווירטואלית שיוצרים.
* לעיתים ישנן תופעות המתרחשות רק בתוך הסביבה הווירטואלית כגון בעיות רזולוציה של מסכים שאינן קורות מחוץ ל- סב"ו.
* לעיתים אנו נתקלים בנפילות של סביבה וירטואלית או קריסה של מכונות וירטואליות אחדות, דבר שעלול להיות בעייתי במיוחד כאשר בוחנים תהליכים ומודולים חשובים במערכות בהן היבט הזמינות הוא קריטי.

## שימושים אפשריים
* שימוש בסב"ו ככלי להדגמה (לביצוע Proof Of Concept) - לאחר דימוי סביבת הלקוח בסב"ו והשלמת בדיקות גרסת התוכנה בסביבה זו, ניתן לייצא את סביבת העבודה עם המוצר המוכן למחשב נייד, ולהציג בו ללקוח את יכולות התוכנה בהדמיה נאמנה למציאות, ובאופן אינטראקטיבי ודינמי.
* ביצוע בדיקות עומס וביצועים.
* ביצוע בדיקות בעלות אופי מסוכן שנרצה לבודד מסביבת ה-Production (מעיין ארגז חול).
* מאפשר סוגים מסוים של ניפוי שגיאות למערכות הפעלה (למשל Time-Traveling debug).

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

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

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

## דוגמה: תשתית ענן המידע של אמזון
הענן הפרטי הווירטואלי של אמזון (Amazon VPC) הוא ממשק מאובטח בין תשתית ה-IT הקיימת לשירותי הרשת (web services) בענן של אמזון (Amazon Web Services). מדובר בפתרון זול ופשוט ללא עלויות רכישה של רישיונות תוכנה וללא צורך בהתקנת התשתית עבור חברות שאינן משתמשות כיום בסב"ו, ופתרון דינמי וחסכוני עבור פרויקטים מסוימים עבור חברות שמשתמשות בסב"ו.

## ראו גם
*וירטואליזציה
*כלי בדיקות ענן

## קישורים חיצוניים
* דוגמה לשימוש ב- Microsoft Hyper-V - סב"ו של חברת Microsoft, באתר יוטיוב.
* Setting up an Amazon EC2 Virtual Machine as an Injector for Agile Load, באתר יוטיוב.

## הערות שוליים

קטגוריה:בדיקות תוכנה