STP – Software Test Plan

STP – Software Test Plan זה מסמך שיש בו תכנון בדיקות, המסמך STP מיועד לבודקי תוכנה ויש בו תיאור של כל אסטרטגיות לתהליך בדיקות, לוח זמנים, דרישות לבדיקות, קריטריונים של מעבר…

מה יש במסמך STP?

  1. טבלת שינוי גרסה של מסמך STP (אם מסמך STP מעדכן אז יש להוסיף את הפרטים של שינוים בטבלה הזאת. )
  2. מבוא – מספר מילים על הפרויקט.
  3. תיאור מטרת מסמך STP – פירוט לשם מה מיועד מסמך הזה (כלומר לשם מה יש צורך במסמך הזה ומה מתאר מסמך STP ).
  4. מסמכים תומכים: כגון מסמך SDD שלפיו בונים תרחישים – Test scenarios.
  5. אץ נושאי בדיקות – תיאור בדיקות לפי רמה ותת רמה. לדוגמה: בהתחלה בודקים מסך הרשמה כולל כל הקישורים למסך זה, לאחר מכן בודקים מסך כניסה…
  6. הגדרות קריטריוני כניסה להתחלת בדיקות וקריטריוני יציאה לסיום הבדיקות.
  7. הגדרת אסטרטגיות של הבדיקות: איזו סוגי בדיקות יהיו בתהליך של בדיקות (כגון איזו בדיקות לא/פונקציונליות יהיו).
  8. מתודולוגיות של בדיקות: מה תנאים שהבאג יהיה מוגדר כ- LOW, Medium, High.
    הגדרת סטטוס של מקרי בדיקה.
  9. תיאור סביבה של מערכת שאותה הולכים לבדוק.
  10. הגדרת לוח זמנים – הגדרת לוח זמן לכתיבת מסמך STD, כתיבת מקרי בדיקה, זמן משוער לתיקון באגים ושחרור גרסת Alpha, Beta, Release.
    תהליך כתיבת מסמך STP מתחיל בפזה שבה הדרישות של הלקוח מתורגמים לדרישות עסקיות (Business Requirement Specification) כלומר בפזה של יצירת מסמך SRS – Software Requirements Specification ועד לפזה של יצירת מסמך Software Design Document- SDD.
  11. מסמך STP נוצר בדרך כלל על-ידי מנהל בדיקות – Test Lead.

דוגמה של מסמך STP:

1. Software Test Plan

Version: 1.0
Created: 02/05/2017
Last Updated: 07/05/2017


Test Plan Template:

(Name of the Product)

Prepared by:

(Names of Preparers)


Document History


2.INTRODUCTION

Project Overview A brief summary of the product being tested.
3.Objectives

 This test plan describes the testing approach,  the objectives, scope, schedule, risks, approach, Enter&Exit criteria, Test Tree and Testing methodology.and overall framework that will drive the testing.
4. Support documents

BRS, SRS and SDD documents.
* SDD document will be attached latter!
5. Tree Testing

6. Entry and Exit Criteria

6.1 Entry Criteria
 - Android mobile devices: J7 and A8;
 - Android 7 and over;
 - Product version V 4.3.6
 

6.2 Exit Criteria
 - 0 critical bugs;
 - 0 Regression bugs;
 - MAXIMUM 3 Medium bugs;
 - MAXIMUM 7 LOW bugs;
7. TEST STRATEGY

7.1. Test Approach 
The tests mainly targets the GUI testing and validating data Requirements Specifications provided by Client. The project is using an agile approach, with weekly iterations. At the end of each week the requirements identified for that iteration will be delivered to the team and will be tested. 
7.2. Test Automation 
Automated unit tests are part of the development process, but no automated functional tests are planned at this time.
 
7.3. In Scope     
 
7.3.1. Exploratory 
PURPOSE: the purpose of this test is to make sure critical defects are removed before the next levels of testing can start. 
SCOPE:  Signup, Send message and mobile version.
TESTERS: Testing team. 
METHOD: This exploratory testing is carried out in the application without any test scripts and documentation. 

7.3.2. User Acceptance Test  
PURPOSE: This test focuses on validating the business logic. 
TESTERS: Client side testers.  
METHOD: UAT test cases based on the inputs from End user and Business Analyst’s. 
TIMING: After all other levels of testing (Exploratory and Functional) are done. 

7.3.3. Functional Test 
PURPOSE: The functional testing is carried out by feeding the input and validates the output from the application. 
Scope: TESTERS: Testing Team. 
METHOD: The test will be performed according to Functional scripts, which are stored in test rail. 
TIMING: After Exploratory test is completed.

7.4. Out of scope 
PURPOSE: Clarity on what we are not going to cover. 
Not in Scope: Testing of Business SOPs, disaster recovery
8.Testing methodology 

8.1 Validation and Defect Management
Defects found during the Testing will be categorized according to the bug-reporting tool “Jira” and the categories are:



8.2. Defect tracking & Reporting
Flowchart depicts Defect Tracking Process



8.3. Status of the Bug/Fault
 - New: Just created bug;
 - Open: Opened bug and still not solved;
 - Rejected: Dev Lead rejected it (it's not bug);
 - Fixed: SOLVED bug;
 - Closed: After bug is fixed, need close this bug;
 - Re-Open: Bug was been fixed and closed but appear again with time;

8.4 TEST MANAGEMENT PROCESS

8.4.1 TOOLS



8.5. Assumptions / Risks 

8.5.1. Assumptions for Test Execution 
All the conditions that need to hold true for us to be able to proceed successfully. 
EXAMPLE: For User Acceptance testing, the Developer team has completed unit, system and integration testing and met all the Requirement’s based on Requirement Traceability Matrix. User Acceptance testing will be conducted by End-users. 

8.5.2. Risks  8.5.3. Suspension Criteria: 
If the number or type of defects reaches a point where the follow on testing has no value! So testing will be stopped if: >=5 high priority bugs >=20 med/low priority bugs Testing environment not works as planned. 
8.5.4. Resumption Requirements: Remains <=2 high priority bugs Remains <=10 med/low priority bugs Testing environment fixed and works as planned.
9. TEST ENVIRONMENT 
9.1. HARDWARE REQUIREMENTS 
- Computer with 8 GB RAM, Windows 10 and Chrome;
- Android(7 or over) mobile phone J7 and A8;
 - iPhone... 
10.Milestones


 11. ROLES & RESPONSIBILITIES

QA testers:
* Develop test cases and combine them in test suites – STD
* Report BUGS
* Regression testing

Test manager:
* Manage the Testing and provide technical support to the Testing team.
* Make Review of Software Test Plan and test cases for the STD document.

Test Lead:
* Prepare the Software Test Plan
* Analyze requirements during the requirements analysis phase.
* Evaluating exit criteria
* Preparing Test Summary Report

בדיקות לא פונקציונליות

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

Performance testing

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

Load testing

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

לדוגמה: בדיקת זמן תגובה של הרשת חברתית, כאשר יהיו מעל 1K משתמשים בו זמנית.

Stress testing

בדיקת מערכת במצבים "מעל מצבים נורמליים" כלומר מעל נקודות הקיצון שבהם מערכת מתפקדת בצורה תקינה– בודקים כמה מערכת יציבה.

לדוגמה:

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

עוד דוגמה:

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

Volume testing

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

לדוגמה: בדיקת שאתר מתפקד כמו שצריך עם כמות משתמשים גדולה מאוד(לא חובה בו זמנית…. כי עבור בדיקות של זמן אמת  קיים  Load testing).

Traceability

RTM – מטריצת הקשר בין מקרי בדיקה (test cases) לדרישות.

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

נניח במסמך BRS יש שתי דרישות:

BRS1  Flight Booking Module :

User book flight tickets with different options



BRS2  Payment Module:

User should able to make payment by PayPal, Credit Card like VISA, MasterCard

במסמך FRS יש תיאור של הדרישות של מסמך BRS

BRS1  Flight Booking Module :

FRS1 : One Way Ticket booking

     Buy ticket only forward

FRS2 Round Way Ticket

     Buy ticket forward and back

FRS3 Multicity Ticket booking

        Buy ticket forward and back with different locations

BRS2  Payment Module:

   FRS4: By PayPal

    Only verified PayPal accounts can do it. 

FRS5 By Credit Card

  Visa, MasterCard, IsraCard

FRS6 By Cash

It should allows user to make payment by cash at airport 

Requirement Traceability Matrix – RTM

במקרה שלעיל יש כיסוי מלא של מקרי בדיקות (למרות שהם ללא פירוט _#TC) עבור הדרישות.

מקרי בדיקה VS תסריטי בדיקות ומטריצת דרישות RTM:

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

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

הערה להבי מסמך STP: בזמן כתיבת מקרי בדיקות לתסריטים שלנו, בדרך כלל מנהל בדיקות מעריך כמה זמן יקח להריץ מקרי בדיקה ועל סמך זה בונים לוח זמנים להרצת מקרי בדיקות במסמך Software Test Plan.

ניתן לקרוא יותר פרטים על מסמך בדיקות STP בקישור:
qablog.co.il/stp-software-test-plan

בדיקות קופסה לבנה

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

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

  • Unit testing – בדיקות יחידה – בדיקות מתבצעות ברוב המקרים על ידי מפתחים תוך שימוש ב-DEBUGGING
    – Structural Techniques
    – Functional Testing Techniques
  • Debugging – ניפוי באגים

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

Data flow testing

 Data flow testing

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

Data Flow Diagram = DFD

A: int x,y,a,b;
B: scanf("%d %d",&x,&y);
C: a=x;
D: b=y;
E: while(a!=b) {
F: if(a>b)
G: a-=b;
H: else b-=a;
I: } printf("%d",a);

Code coverage

Code coverage <-> Statement coverage

כיסוי משפטים (statement coverage) – זה אחוז המשפטים שהתבצעו בפועל על ידי סדרת בדיקות מתוך כלל משפטים בתוכנה. כלומר יש לחלק מספר המשפטים שהורצו במספר המשפטים שיש בקוד.

Code coverage is:

בדיקה עד כמה כוסו (בוצעו) חלקי התוכנה על-ידי בדיקות.

לדוגמה: אם נעשים BREAK-POINT בשורה 23 אז על-ידי הרצת קומפיילר אנו נבדוק את השורות …15, 16..22, 23 וכך הלאה ככל שנבדוק יותר שורות בקוד (סגמנטים בקוד) כך CODE COVERAGE יהיה גדול יותר.

נניח שבקוד יש 16-30 שורות ⇐ 15 שורות ונניח שבדקנו שורות 22-25: 4 שורות.
לכן Code coverage: 4/15*100=~26%

עוד דוגמה:

1 TEST SET
Test 1: x=2,y=3

ב-TEST 1 יוצא ש Z=8 לכן יש כיסוי של השורות 1-5

2 TEST SET

Test 2: x=0,y=25

ב-TEST 2 יוצא ש Z=50 לכן יש כיסוי של השורות 1-5

3 TEST SET

Test 3: x=47,y=1

ב-TEST 3 יוצא ש Z=49 לכן יש כיסוי של השורות 1-5

אם נבצע רק את 1 TEST SET אז בצענו רק 5 שורות מתוך 6 לכן 5/6*100=~83%

מקרה אחר:

4 TEST SET
Test 1 x=20,y=25

אז מספיק רק TEST SET 4 כדי לכסות כל השורות כלומר Z=70 לכן ביצענו כל 6 השורות ולכן זה 100% של כיסוי משפטים (statement coverage).

Decisions Coverage

דוגמה:

TEST SET 1
Test 1_1: x=20, y=15

אז Z=-10 ולכן יש כיסוי של כל 6 שורות שזה אומר שיש 100% כיסוי משפטים (statement coverage).

אבל בשביל שיהיה גם 100% כיסוי של החלטות (decisions coverage) יש להתחשב גם בהחלטה שיהיה Z גדול מ-0 לכן בואו נצייר control flow diagram:

לפי control flow diagram ניתן לראות ש Test 1 לא מכסה  ב-100% כל כיסוי של החלטות (decisions coverage) ולכן אם נוסיף: Test 2: x=10, y=2 אז נקבל Z=6 ובכך נקבל 100% כיסוי של החלטות (decisions coverage).

לסיכום: אם ל-Decision coverage יש כיסוי של 100% אז גם ל- statement coverage יש כיסוי של 100%. אבל כיסוי של 100% statement coverage  לא אומר שיש  כיסוי 100% של Decision coverage.

Efficiency testing

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

Test efficiency=x/y
a=באגים אשר פתרו
b=סה"כ באגים שדווחו 
Testing Efficiency=[a/b]*100

 

Pairwise testing

Pairwise testing – Functional Testing

ב-Pairwise testing במקום לבדוק כל קומבינציות בין מרכיבים שונים, בודקים רק את הקומבינציות בין רכיבים סמוכים.

נניח שיש 6 מקרי בדיקה לצורך בדיקת: Sign-up, כלומר יש תרחיש (TEST SCENARIO) ששם יש לבצע שישה מקרי בדיקה:
1) הרשמה לאתר אם נתונים לא נכונים
2) הרשמה לאתר אם ניתוקי אינטרנט
3)  הרשמה לאתר כמשתמש קיים (Error exists user)
4)  הרשמה לאתר תחת עומסים
5) הרשמה לאתר כמשתמש עם מוגבלות ראיה
6) הרשמה לאתר תקינה

ונניח שלכל מקרה בדיקה (TEST CASE) יש בערך 5 דקות זמן ביצוע.

אז סה"כ יש 5X6=30 דקות לביצוע כל בדיקות אבל ללא קומבינציות שונות בטבלה מעלה.

ועם קומבינציות שונות:

OS: WIN, IOS, LIN

Browser: Chrome, Firefox, IE, Opera

Device: Desktop, Mobile, Tablet, TVbox

Localisation: Eng, Heb, Rus

  • בואו נחשב מספר דקות עם כל קומבינציות אפשרויות  (דקות)30X(3X4X4X3)=4320

מכיוון שרוב הבאגים נמצאים במקומות הגבוליים אז ניתן לקצר את הקומבינציות :

שלב א)

נסדר לפי אופציות, עמודות עם יותר אופציות יהיו שמאלה יותר:

שלב ב)

לכן:

אז קצרנו ל- 16 קומבינציות שזה אומר 30X16=480 minutes

שזה הרבה פחות מ- 4320 דקות!

Use case testing

Use case testing – Functional Testing

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

לדוגמה:

כפי שניתן לראות לכל מקרה שימוש יש תוצאה מוצלחת (1-5 STEPS) וגם תוצאה אשר לא מוצלחת (STEPS 2a,4a,4b).

בדומה לדיאגרמת מצבים ב-Use case testing יש תלות מצב הבא בקודם לו!

אבל אני אישית מעדיף את
State transition מאשר
Use case testing כי
ב-State transition(דיאגרמת מצבים) ניתן קל יותר לראות את מקרי בדיקות אשר יש לכתוב אשר תלויים אחד בשני.

.

דיאגרמת מצבים

State transition testing – Functional Testing

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

דוגמה:

דיאגרמת מצבים עוזרת לבנות סטי של מקרי בדיקה (test suites) כאשר יש מספר אופציות בדרך למטרה. זאת אומרת שיש תלות תנאי הבא בתנאי שקודם לו  בתהליך של פעולה, לדוגמה הוצאת כסף ב-ATM.

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

.

דילוג לתוכן