דיווח על מדדים או נתונים מבדיקת עסק

בדף הזה נסביר איך לדווח על מדדים יחד עם תוצאות הבדיקה בזמן הכתיבה בדיקה ב-Trendified.

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

DeviceTestCase - סגנון JUnit3

אם הבדיקה מאריכה את משך הזמן של DeviceTestCase בבדיקה בסגנון JUnit3, אפשר לקרוא לשיטה addTestMetric(String key, String value) מתוך כל מקרי הבדיקה לדיווח מדד. אפשר לקרוא למפתח הזה כמה פעמים, כל עוד המפתח ייחודי.

דוגמה:

    public static class TestMetricTestCase extends DeviceTestCase {

        public void testPass() {
            addTestMetric("key1", "metric1");
        }

        public void testPass2() {
            addTestMetric("key2", "metric2");
        }
    }

אם אתם רוצים לרשום קובץ שיהיה זמין ב-result_reporters, אתם יכולים קוראים לשיטה addTestLog(String dataName, LogDataType dataType, InputStreamSource dataStream) מתוך כל מקרי בדיקה, כדי לדווח על קובץ ליומן.

דוגמה:

    public static class TestLogTestCase extends DeviceTestCase {

        public void testPass() {
            try (InputStreamSource source = getDevice().getScreenshot()) {
                addTestLog("screenshot", LogDataType.PNG, source);
            }
        }
    }

TestCase - בדיקת JUnit3 רגילה

אם אתם רוצים לדווח על מדדים בתוך Tradeified, מ-JUnit3 TestCase רגיל צריך להמיר אותו ל-MetricTestCase במקום זאת, בדיוק אותה רמה עם שיטה נוספת: addTestMetric(String key, String value)

DeviceJUnit4ClassRunner – סגנון JUnit4

אם בדיקת הסגנון של JUnit4 פועלת עם DeviceJUnit4ClassRunner, אפשר גם לרשום מדדים בתוך מקרה בדיקה (בתוך @Test) על ידי Tradeאיחוד. צריך להשתמש בכללים TestMetrics כדי לדווח על המדדים שלך.

דוגמה:

    @RunWith(DeviceJUnit4ClassRunner.class)
    public static class Junit4TestClass {

        @Rule
        public TestMetrics metrics = new TestMetrics();

        @Test
        public void testPass5() {
            // test log through the rule.
            metrics.addTestMetric("key", "value");
        }

        @Test
        public void testPass6() {
            metrics.addTestMetric("key2", "value2");
        }
    }

כדי לדווח על קבצים, צריך להשתמש בכלל TestLogData כדי לדווח עליהם.

דוגמה:

    @RunWith(DeviceJUnit4ClassRunner.class)
    public static class Junit4TestClass {

        @Rule
        public TestLogData logs = new TestLogData();

        @Test
        public void testPass5() {
            // test log through the rule.
            try (InputStreamSource source = getDevice().getScreenshot()) {
                logs.addTestLog("screenshot", LogDataType.PNG, source);
            }
        }
    }

IremoteTest - בדיקת עסק שמשויך למסחר טהור

אם אתם כותבים כיתת מבחן או ריצה משלכם ל-Trendified Test, תמלאו IremoteTest ומקבלים ITestInvocationListener דרך ה-method run(). המאזינים האלה אפשר להשתמש בהם כדי לתעד מדדים באופן הבא:

    listener.testLog(String dataName, LogDataType type of data, InputStreamSource data);

אוספי מדדים שעברו מסחר אלקטרוני

ב-Trended יש אובייקט metrics_collector ייעודי לאיסוף מדדים ב- המקבילה של הבדיקות.

בצד המארח

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

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

דוגמה:

  <metrics_collector class="com.android.tradefed.device.metric.AtraceCollector">
      <option name="categories" value="freq"/>
  </metrics_collector>

חלק מהאוספים הקיימים: * מדידת טמפרטורה שאוסף את הטמפרטורה מדי פעם במהלך הרצת הבדיקה. * AtraceCollector שאוספת באמצעות 'atrace' בכל מקרה בדיקה.

בצד המכשיר

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

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

אם אתם משתמשים בפונקציה 'AndroidJUnitTest' אפשר פשוט לציין את האפשרות הבאה בשורת הפקודה כדי להפעיל כדי שהקולקטור יריץ את הבדיקות:

  --device-listeners android.device.collectors.ScreenshotListener

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

  LOCAL_STATIC_JAVA_LIBRARIES += collector-device-lib

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

התעניינות מיוחדת בסוויטות

לחבילות כמו CTS עם הגדרות אישיות ברמה העליונה שמופעלות בהן מודול מסוים אין צורך לציין metrics_collector בכל מודול הגדרה אישית (AndroidTest.xml). למעשה אסור.

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

איסוף קובצי יומן של מכשירים ממודול

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

AndroidTest.xml יכול לציין אוסף שיחפש קובץ במכשיר ומושכים אותם.

  <metrics_collector class="com.android.tradefed.device.metric.FilePullerLogCollector">
      <!-- repeatable: Pattern of key of a FILE we listen on that should be pulled -->
      <option name = "pull-pattern-keys" value = "ScreenshotListener_.*" />

      <!-- repeatable: The key of the DIRECTORY to pull -->
      <option name = "directory-keys" value = "<example-key: /sdcard/atrace_logs>" />
  </metrics_collector>

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

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

  1. מוסיפים את collector-device-lib ל-APK לבדיקה בקובצי היצירה:
  LOCAL_STATIC_JAVA_LIBRARIES += collector-device-lib
  1. משתמשים ב- @rule שאנחנו מספקים כדי לרשום קבצים:
    @RunWith(AndroidJUnit4.class)
    public static class Junit4TestClass {

        @Rule
        public TestLogData logs = new TestLogData();

        @Test
        public void testPass5() {
            // test log through the rule.
            File logFile = new File("whatever");
            logs.addTestLog("KEY", logFile);
        }
    }

השם KEY בדוגמה שלמעלה הוא השם שבו הקובץ יופיע דווחו. זה השם שצריך להתאים בשדה FilePullerDeviceMetricCollector כדי לשלוף אותה באופן אוטומטי. זה צריך להיות שם ייחודי.

הערה: לאחר שליפת הקובץ, FilePullerDeviceMetricCollector באופן אוטומטי ומוחק אותו מהמכשיר.

איפה מופיעים המדדים?

הוא תלוי ב-result_reporter שצוין בהגדרות ה-XML.