מבוא לשלווה BDD

1. הקדמה

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

2. מושגי ליבה

המושגים מאחורי השלווה עוקבים אחר המושגים שמאחורי BDD. אם אתה רוצה לקרוא עוד על זה, עיין במאמר שלנו על מלפפון ו- JBehave.

2.1. דרישות

בשלווה, הדרישות מאורגנות בשלוש רמות:

  1. יכולות
  2. תכונות
  3. סיפורים

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

2.2. צעדים ובדיקות

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

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

2.3. דיווחים

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

3. בדיקה עם SerenityBDD

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

3.1. תלות Maven

כדי להשתמש ב- Serenity עם JUnit, עלינו לכלול ליבת שלווה ו שלווה-צומת בתוך ה pom.xml:

 net.serenity-bdd serenity-core 1.2.5-rc.11 net.serenity-bdd serenity-junit 1.2.5-rc.11 

אנחנו צריכים גם שלווה-maven-plugin לקבל דוחות מצטברים מתוצאות הבדיקה:

 net.serenity-bdd.maven.plugins serenity-maven-plugin 1.2.5-rc.6 שלווה-דוחות צבירה לאחר שילוב-מבחן 

אם אנו רוצים ש- Serenity תיצור דוחות גם אם יש כשל בבדיקה, הוסף את הבא ל pom.xml:

 org.apache.maven.plugins maven-surefire-plugin 2.20 נכון 

3.2. דוגמא לנקודות חברות

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

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

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

@RunWith (SerenityRunner.class) מעמד ציבורי MemberStatusIntegrationTest {@Steps MemberStatusSteps פרטי MemberSteps; @Test ציבורי מבטלים חבריםShouldStartWithBronzeStatus () {memberSteps.aClientJoinsTheMemberProgram (); memberSteps.theMemberShouldHaveAStatusOf (ברונזה); }}

לאחר מכן אנו מיישמים את שני השלבים באופן הבא:

מעמד ציבורי MemberStatusSteps {חבר פרטי פרטי; @Step ("נתון לחבר יש {0} נקודות") בטל בציבור aMemberHasPointsOf (int points) {member = Member.withInitialPoints (נקודות); } @Step ("אז ציון החבר צריך להיות {0}") בטל באופן פומבי theMemberShouldHaveAStatusOf (MemberGrade grade) {assertThat (member.getGrade (), equalTo (grade)); }}

כעת אנו מוכנים להריץ איתו מבחן אינטגרציה לוודא נקי. הדוחות יאותרו ב יעד / אתר / שלווה / אינדקס.html:

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

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

@Pending @Step ("כאשר החבר מחליף {}") פומבי בטל aMemberExchangeA (סחורה) {// TODO}

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

כל שלב שנכשל, התעלם או שדילגו עליו יופיע בהתאמה:

4. שילוב עם JBehave

השלווה יכולה להשתלב גם במסגרות BDD קיימות כמו JBehave.

4.1. תלות Maven

כדי להשתלב עם JBehave, תלות אחת נוספת שלווה-התנהגות יש צורך ב- POM:

 net.serenity-bdd שלווה-jbehave 1.24.0 

4.2. בדיקת REST API של JBehave Github נמשכה

כאשר הצגנו כיצד לבצע בדיקות REST API עם JBehave, אנו יכולים להמשיך במבחן ה- REST API של JBehave שלנו ולראות כיצד הוא משתלב בשלווה.

הסיפור שלנו היה:

תרחיש: לפרופיל המשתמש של Github צריך להיות מטען כניסה זהה לשם המשתמש ניתן פרופיל משתמש github api כשאני מחפש eugenp דרך ה- API ואז התגובה של github מכילה מטען 'כניסה' זהה ל- eugenp

ה נתון_מתי_אז ניתן להעביר צעדים ל- as צעדים ללא שינויים:

מחלקה ציבורית GithubRestUserAPISteps {ממשק מחרוזת API פרטי; משאב GitHubUser פרטי; @Step ("בהינתן ממשק ה- API של github REST לפרופיל המשתמש") ריק עם PublicProfileAPIEndpoint () {api = "//api.github.com/users/%s"; } @Step ("כשמחפשים {0} דרך ה- API") הריק הציבורי getProfileOfUser (שם משתמש מחרוזת) זורק IOException {HttpResponse httpResponse = getGithubUserProfile (API, שם משתמש); resource = retrieveResourceFromResponse (httpResponse, GitHubUser.class); } @Step ("אז אמור להיות שדה התחברות עם ערך {0} בעומס המטען של המשתמש {0}") פרופיל ריק חלל PayloadShouldContainLoginValue (שם משתמש מחרוזת) {assertThat (שם משתמש, Matchers.is (resource.getLogin ())); }}

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

מחלקה ציבורית GithubUserProfilePayloadStepDefinitions {@Steps GithubRestUserAPISteps userAPISteps; @Given ("API של פרופיל משתמש github") חלל ציבורי givenGithubUserProfileApi () {userAPISteps.withUserProfileAPIEndpoint (); } @ כאשר ("מחפש משתמש $ דרך ה- API") בטל בציבור כאשר LookForProfileOf (משתמש מחרוזת) זורק IOException {userAPISteps.getProfileOfUser (משתמש); } @Then ("התגובה של github מכילה מטען 'כניסה' זהה למשתמש $") פומבי בטל אזGithubsResponseContainsAloginPayloadSameAs (משתמש מחרוזת) {userAPISteps.profilePayloadShouldContainLoginValue (משתמש); }}

עם SerenityStories, אנו יכולים להריץ בדיקות JBehave הן מתוך ה- IDE שלנו והן בתהליך הבנייה:

יבוא net.serenitybdd.jbehave.SerenityStory; מחלקה ציבורית GithubUserProfilePayload מרחיב את SerenityStory {}

לאחר תאשר לבנות הסתיים, אנו יכולים לראות את דוח הבדיקה שלנו:

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

5. שילוב עם REST- מובטח

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

5.1. תלות Maven

כדי לעשות שימוש ב- REST-assured עם Serenity, ה- שלווה-תהיה בטוח יש לכלול תלות:

 net.serenity-bdd שלווה-היה סמוך ובטוח 1.2.5-rc.11 

5.2. השתמש ב- REST מובטח במבחן API של Github REST

כעת אנו יכולים להחליף את לקוח האינטרנט שלנו בכלים המובטחים על ידי REST:

ייבא net.serenitybdd.rest.SerenityRest.rest; ייבא net.serenitybdd.rest.SerenityRest.then סטטי; מחלקה ציבורית GithubRestAssuredUserAPISteps {ממשק API למחרוזת פרטית; @Step ("ניתנת ה- API של github REST לפרופיל משתמש") ריק עם UserProfileAPIEndpoint () {api = "//api.github.com/users/{username}"; } @Step ("כשמחפשים {0} דרך ה- API") הריק הציבורי getProfileOfUser (שם משתמש מחרוזת) זורק את IOException {rest (). Get (api, שם המשתמש); } @Step ("אז אמור להיות שדה כניסה עם ערך {0} בעומס המטען של המשתמש {0}") פרופיל ריק ציבורי PayloadShouldContainLoginValue (שם משתמש מחרוזת) {ואז (). Body ("login", Matchers.equalTo (שם משתמש) ); }}

לאחר החלפת היישום של userAPIS צעדים בתוך ה StepDefitionאנחנו יכולים להריץ מחדש את תאשר לִבנוֹת:

מחלקה ציבורית GithubUserProfilePayloadStepDefinitions {@Steps GithubRestAssuredUserAPISteps userAPISteps; // ...}

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

6. שילוב עם JIRA

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

למרבה המזל, Serenity כבר תומכת באינטגרציה עם JIRA.

6.1. תלות Maven

כדי להשתלב עם JIRA, אנו זקוקים לתלות נוספת: ספק-שלווה-ג'ירה-דרישות.

 net.serenity-bdd serenity-jira-דרישות ספק 1.1.3-rc.5 

6.2. שילוב חד כיווני

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

מטא: @issue # BDDTEST-1

חוץ מזה, יש לציין חשבון JIRA וקישורים בקובץ serenity.properties בשורש הפרויקט:

jira.url = jira.project = jira.username = jira.password =

אז יהיה קישור JIRA המצורף לדוח:

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

7. סיכום

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

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

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


$config[zx-auto] not found$config[zx-overlay] not found