כדי ליצור בסיס מוצק לאפליקציה איכותית, כדאי לפעול לפי ההנחיות העיקריות בנושא איכות האפליקציה.
ההנחיות מגדירות את האיכות המינימלית שכל האפליקציות צריכות לעמוד בה.
איכות אפליקציה דינמית
אפליקציות ל-Android פועלות במגוון רחב של מכשירים – החל מטלפונים קומפקטיים ועד טאבלטים, מכשירים מתקפלים, מחשבים, מסכים מחוברים, מערכות מידע ובידור ברכב, טלוויזיות ומכשירי XR. מצבי חלונות כמו מסך מפוצל וממשק מחשב מאפשרים להריץ אפליקציות בחלקים של המסך שאפשר לשנות את הגודל שלהם.
כדי לעמוד בדרישות של איכות אפליקציה אדפטיבית, צריך לפעול לפי ההנחיות האלה בנוסף להנחיות האיכות הבסיסיות של האפליקציה:
- יצירת אפליקציות שעברו אופטימיזציה לכל גורמי הצורה ולכל גדלי המסך
- שיפור הדירוג של האפליקציות ברשימות ובחיפוש ב-Google Play
- איך מושכים יותר משתמשים ומשפרים את שימור המשתמשים
הנחיות
ההנחיות הבסיסיות הבאות יעזרו לכם לפתח אפליקציה בסיסית ואיכותית.
חוויית משתמש
העיצוב החזותי ודפוסי האינטראקציה הסטנדרטיים של Android מספקים חוויית משתמש עקבית ואינטואיטיבית.
כדאי להשתמש ברכיבי Material Design כדי ליצור את ממשק המשתמש של האפליקציה במקום ברכיבי פלטפורמת Android, איפה שאפשר. Material Design מספק מראה ותחושה מודרניים של Android, וגם עקביות בממשק המשתמש בכל גרסאות Android.
נוחות השימוש
| מזהה | בדיקות | תיאור |
|---|---|---|
| Consistent_UX | T-Consistent_UX, T-SD_Card |
האפליקציה מספקת חוויית משתמש עקבית לכל התרחישים לדוגמה של השימוש באפליקציה בכל גורמי הצורה. |
| App_Switcher | T-App_Switcher, T-SD_Card |
האפליקציה עוברת לרקע כשהמיקוד עובר לאפליקציה אחרת. האפליקציה חוזרת לחזית כשהיא מופעלת מחדש ממחליף האפליקציות האחרונות. |
| Sleep_Resume | T-Sleep_Resume, T-SD_Card |
כשהאפליקציה היא אפליקציה שפועלת בחזית, היא מושהית כשהמכשיר עובר למצב שינה ומופעלת מחדש כשהמכשיר יוצא ממצב שינה. |
| Lock_Resume | T-Lock_Resume, T-SD_Card |
כשהאפליקציה פועלת בחזית, היא מושהית כשהמכשיר נעול ומופעלת מחדש כשהמכשיר לא נעול. |
ממשק משתמש
| מזהה | בדיקות | תיאור |
|---|---|---|
| Display_State_Parity | T-Orientation_Transitions |
ההגדרות של כיווני התצוגה ומצבי הקיפול חושפות למעשה את אותן תכונות ופעולות, ושומרות על שוויון פונקציונלי. |
| Fullscreen_Display | T-Orientation_Transitions |
האפליקציה ממלאת את חלון האפליקציה בשני הכיוונים ולא מופיעה בפורמט letterbox בגלל שינויים בהגדרות, כולל קיפול ופתיחה של המכשיר. מותר להשתמש בפורמט letterbox כדי לפצות על שינויים קלים בגיאומטריית המסך. |
| Orientation_Transitions | T-Orientation_Transitions | האפליקציה מטפלת במעברים מהירים בין כיווני התצוגה ובין קיפול המכשיר לפתיחתו, בלי בעיות בעיבוד התצוגה ובלי לאבד את המצב. |
איכות חזותית
| מזהה | בדיקות | תיאור |
|---|---|---|
| Graphic_Quality | T-Graphic_Quality |
האפליקציה מציגה גרפיקה, טקסט, תמונות ואלמנטים אחרים בממשק המשתמש ללא עיוות, טשטוש או פיקסול בולטים.
|
| Line_Length | T-Line_Length | האפליקציה מגבילה את אורך השורה ל-45 עד 75 תווים (כולל רווחים) בכל אחת מהשפות הנתמכות באפליקציה, כדי להבטיח שהטקסט ובלוקי הטקסט יהיו קריאים. |
| Theme_Support | T-Theme_Support | התוכן של האפליקציה וכל תוכן האינטרנט שאליו יש לאפליקציה גישה תומכים גם במצב בהיר וגם במצב כהה. |
ניווט
| מזהה | בדיקות | תיאור |
|---|---|---|
| Back_Button_Nav | T-Back_Nav | האפליקציה תומכת בניווט באמצעות הכפתור "הקודם" רגיל ולא נעשה בה שימוש בהנחיות מותאמות אישית של הכפתור "הקודם" במסך. |
| Back_Gesture_Nav | T-Back_Nav | האפליקציה תומכת בניווט באמצעות תנועות כדי לחזור אחורה ולעבור למסך הבית. |
| State_Preservation | T-State_Preservation, T-Back_Nav |
האפליקציה שומרת את מצב המשתמש או האפליקציה כשהיא לא בחזית ומונעת אובדן נתונים מקרי בגלל ניווט חזרה ושינויים אחרים במצב שלה. כשחוזרים לחזית, האפליקציה משחזרת את המצב שנשמר ואת כל העסקאות התלויות שכוללות שמירת מצב. לדוגמה, שינויים בשדות שאפשר לערוך, בהתקדמות במשחק, בתפריטים, בסרטונים ובקטעים אחרים באפליקציה.
|
התראות
| מזהה | בדיקות | תיאור |
|---|---|---|
| Notification_Quality | T-Notification_Quality |
התראות מספקות מידע רלוונטי שקשור לאפליקציה.
|
| Conversation_Quality | T-Notification_Quality |
באפליקציות לשליחת הודעות, באפליקציות חברתיות ובשיחות:
|
נגישות
| מזהה | בדיקות | תיאור |
|---|---|---|
| Touch_Target_Size | T-Touch_Target_Size | משטחי המגע הם לפחות 48 dp. אפשר לעיין בהנחיות של Material Design בנושא פריסה וטיפוגרפיה. |
| Visual_Contrast | T-Visual_Contrast |
הטקסט באפליקציה והתוכן בחזית שומרים על יחסי הניגודיות הבאים עם הרקע של האפליקציה:
|
| Content_Description | T-Content_Description | תיאור של כל רכיב בממשק המשתמש, למעט TextView, באמצעות contentDescription. |
הפונקציונליות
האפליקציה שלך צריכה להטמיע את ההתנהגות הפונקציונלית הבאה.
אודיו
| מזהה | בדיקות | תיאור |
|---|---|---|
| Audio_Playback_Start | T-Audio_Playback_Start |
כשהמשתמש מפעיל השמעה של אודיו, האפליקציה צריכה לבצע אחת מהפעולות הבאות תוך שנייה אחת:
|
| Audio_Focus_Request | T-Audio_Focus_Request | האפליקציה צריכה לבקש מיקוד אודיו כשהפעלת האודיו מתחילה, ולבטל את מיקוד האודיו כשההפעלה מסתיימת. |
| Audio_Focus_Change | T-Audio_Focus_Change | האפליקציה צריכה לטפל בבקשות של אפליקציות אחרות להתמקדות באודיו. לדוגמה, אפליקציה עשויה להנמיך את עוצמת הקול של ההפעלה כשבאפליקציה אחרת מושמע דיבור. |
| Audio_Playback_Background | T-Audio_Playback_Background | האפליקציה צריכה לתמוך בהפעלה ברקע. האפליקציה צריכה להשתמש בשירות שפועל בחזית כדי למנוע מהמערכת להפסיק את תהליך האפליקציה ברגע שהאפליקציה לא גלויה יותר. בנוסף, האפליקציה צריכה להציג התראה קבועה שלא ניתן לסגור בשורת הסטטוס או במסך הנעילה, כדי ליידע את המשתמש שהאפליקציה פועלת. המשתמשים צריכים להיות מסוגלים לשלוט בהפעלה באמצעות ההתראה או האמצעים לשליטה במסך הנעילה, או באמצעות האמצעים לשליטה באביזר מחובר. |
| Audio_Notification_Style | T-Audio_Notification_Style | כשהאפליקציה מפעילה אודיו ברקע, היא צריכה ליצור התראה עם סגנון MediaStyle. |
| Audio_Playback_Resume | T-Audio_Playback_Resume | אם האפליקציה פועלת ברקע וההפעלה של האודיו מושהית, ההפעלה של האודיו צריכה להתחדש כשהאפליקציה חוזרת לחזית, או שהאפליקציה צריכה לציין למשתמש שההפעלה מושהית. |
וידאו
| מזהה | בדיקות | תיאור |
|---|---|---|
| Video_PiP | T-Video_PiP | אם האפליקציה מפעילה סרטונים, היא צריכה לתמוך בהפעלה של תמונה בתוך תמונה. |
| Video_Encoding | T-Video_Encoding | אם האפליקציה מקודדת סרטון, היא צריכה לעשות זאת באמצעות תקן הדחיסה של סרטוני HEVC. |
| Video_Playback_Background | T-Video_Playback_Background | האפליקציה תומכת בהפעלת וידאו ברקע כשהיא לא האפליקציה העליונה ביותר, כולל כשהחלון של האפליקציה:
|
שיתוף
| מזהה | בדיקות | תיאור |
|---|---|---|
| System_Sharesheet | T-System_Sharesheet | האפליקציה צריכה להשתמש בקובץ לשיתוף ב-Android כשמשתפים תוכן. האפליקציה יכולה להציע יעדים שלא זמינים לפתרונות מותאמים אישית. |
שירותים ברקע
| מזהה | בדיקות | תיאור |
|---|---|---|
| Background_Service_Optimization | T-Background_Service_Optimization |
האפליקציה לא מפעילה שירותים ברקע למשך זמן ארוך מדי ללא צורך, כדי להבטיח שהמכשיר של המשתמש יפעל בצורה חלקה. הערה: המערכת מטילה הגבלות שונות על שירותים שפועלים ברקע. אלה כמה דוגמאות לשימוש לא טוב בשירותים שפועלים ברקע:
מידע נוסף מופיע במאמר סקירה כללית על משימות ברקע. |
ביצועים ויציבות
האפליקציה צריכה לספק ביצועים אופטימליים, יציבות, תאימות ורספונסיביות.
ביצועים
| מזהה | בדיקות | תיאור |
|---|---|---|
| App_Startup_Time | T-App_Startup_Time | האפליקציה נטענת במהירות או מספקת למשתמש משוב במסך (אינדיקטור התקדמות או רמז דומה) אם טעינת האפליקציה נמשכת יותר משתי שניות. |
| Rendering_Performance | T-Rendering_Performance | האפליקציה מעבדת פריימים כל 16 מילישניות (או פחות) כדי להציג לפחות 60 פריימים בשנייה. לקבלת עזרה בפתרון בעיות שקשורות לרינדור, אפשר לעיין במאמר בנושא רינדור איטי. |
| StrictMode_Compliance | T-StrictMode_Compliance | אם האפשרות StrictMode מופעלת (ראו את הקטע בנושא בדיקות StrictMode), לא יוצגו הבהובים אדומים (אזהרות ביצועים מ-StrictMode) במהלך בדיקת האפליקציה. |
יציבות
| מזהה | בדיקות | תיאור |
|---|---|---|
| Stability_ANR | T-Stability_ANR | האפליקציה לא קורסת או חוסמת את שרשור ה-UI וגורמת לשגיאות ANR (האפליקציה לא מגיבה ב-Android). כדאי להשתמש בדוח טרום-השקה של Google Play כדי לזהות בעיות פוטנציאליות ביציבות. אחרי הפריסה, עוקבים אחרי הדף Android Vitals ב-Google Play Console. |
SDK
| מזהה | בדיקות | תיאור |
|---|---|---|
| Android_Platform_Compatibility | T-Android_Platform_Compatibility | האפליקציה פועלת בגרסה הציבורית האחרונה של פלטפורמת Android בלי לקרוס או להשפיע באופן משמעותי על הפונקציונליות העיקרית. |
| Target_SDK_Version | T-Target_SDK_Version | האפליקציה מטרגטת את הגרסה האחרונה של Android SDK שנדרשת כדי לעמוד בדרישות של Google Play. לשם כך, צריך להגדיר את הערך targetSdk בקובץ build.gradle של מודול האפליקציה. |
| Compile_SDK_Version | T-Target_SDK_Version | האפליקציה נוצרה באמצעות Android SDK העדכני ביותר על ידי הגדרת הערך compileSdk בקובץ build.gradle של מודול האפליקציה. |
| SDK_Maintenance | T-SDK_Maintenance, T-Non_SDK_Interfaces |
כל ערכות ה-SDK של Google או של צד שלישי שבהן נעשה שימוש מעודכנות. כל שיפור בערכות ה-SDK האלה שקשור ליציבות, לתאימות או לאבטחה צריך להיות זמין למשתמשים בהקדם האפשרי. במקרה של ערכות SDK של Google, מומלץ להשתמש בערכות SDK שמבוססות על Google Play Services כשהן זמינות. ערכות ה-SDK האלה תואמות לאחור, מקבלות עדכונים אוטומטיים, מקטינות את גודל חבילת האפליקציה ומאפשרות שימוש יעיל במשאבים במכשיר. |
| Non_SDK_Interfaces | T-Non_SDK_Interfaces | האפליקציה לא משתמשת בממשקים שאינם SDK. |
| Production_Build_Quality | T-Production_Build_Quality | לא נכללות ספריות ניפוי באגים באפליקציית הייצור. ספריות ניפוי באגים שנכללות באפליקציה עלולות לגרום לבעיות בביצועים ובאבטחה. |
סוללה
| מזהה | בדיקות | תיאור |
|---|---|---|
| Power_Management | T-Power_Management |
האפליקציה תומכת כראוי בתכונות לניהול צריכת חשמל נמנום ואפליקציה במצב המתנה. אפליקציות יכולות לבקש פטור מתחזוקת צריכת החשמל. אפשר לעיין בקטע תמיכה בתרחישי שימוש אחרים במאמר אופטימיזציה לשימוש בנמנום ואפליקציה במצב המתנה. |
פרטיות ואבטחה
האפליקציה מטפלת בנתוני משתמשים ובמידע אישי באופן בטוח ומספקת רמות הרשאה מתאימות.
אפליקציות שמתפרסמות בחנות Google Play חייבות גם לעמוד בדרישות המדיניות של Google Play בנושא נתוני משתמשים כדי להגן על פרטיות המשתמשים.
הרשאות
| מזהה | בדיקות | תיאור |
|---|---|---|
| Minimize_Permissions | T-Minimize_Permissions | האפליקציה מבקשת רק את ההרשאות המינימליות שדרושות כדי לתמוך בתרחיש השימוש הנוכחי. לגבי הרשאות מסוימות, כמו מיקום, האפליקציה משתמשת במפרט גס במקום במפרט מדויק אם אפשר. איך מצמצמים את מספר הבקשות להרשאות |
| Sensitive_Permissions | T-Sensitive_Permissions |
האפליקציה מבקשת הרשאה לגשת למידע אישי רגיש (כמו קבוצות הרשאות של יומן שיחות או SMS או מיקום) או לשירותים שעולים כסף (כמו חייגן או SMS) רק אם יש קשר ישיר לתרחישי השימוש העיקריים של האפליקציה. צריך להציג למשתמשים גילוי נאות במקום בולט לגבי ההשלכות שקשורות להרשאות האלה. בהתאם לאופן השימוש של האפליקציה בהרשאות, יכול להיות שאפשר לממש את תרחיש השימוש של האפליקציה בדרך חלופית בלי להסתמך על גישה למידע רגיש. לדוגמה, במקום לבקש הרשאות שקשורות לאנשי הקשר של המשתמש, אפשר להשתמש באובייקט Intent מרומז כדי לבקש גישה. |
| Runtime_Permissions | T-Runtime_Permissions | האפליקציה מבקשת הרשאות בזמן ריצה כשהמשתמש מבקש להשתמש בפונקציונליות מסוימת, ולא במהלך הפעלת האפליקציה. |
| Permission_Rationale | T-Permission_Rationale | האפליקציה מסבירה בצורה ברורה למה נדרשות הרשאות. |
| Graceful_Degradation | T-Graceful_Degradation | האפליקציה מבצעת נסיגה הדרגתית כשמשתמשים דוחים או מבטלים הרשאה. האפליקציה לא אמורה למנוע מהמשתמשים גישה לחלוטין. |
נתונים וקבצים
| מזהה | בדיקות | תיאור |
|---|---|---|
| Sensitive_Data_Storage | T-Sensitive_Data_Storage, T-Sensitive_Data_Handling |
כל הנתונים הרגישים מאוחסנים באחסון הפנימי של האפליקציה. |
| Sensitive_Data_Logging | T-Sensitive_Data_Logging | לא מתבצע רישום ביומן של נתונים אישיים או רגישים של משתמשים ביומן המערכת או ביומן ספציפי לאפליקציה. |
| Hardware_IDs | T-Hardware_IDs | האפליקציה לא משתמשת במזהי חומרה שלא ניתן לאפס, כמו IMEI, למטרות זיהוי. |
זהות
| מזהה | בדיקות | תיאור |
|---|---|---|
| Autofill_Hints | T-Autofill_Hints | האפליקציה מספקת הצעות למילוי אוטומטי של פרטי כניסה לחשבון ומידע רגיש אחר, כמו פרטי כרטיס אשראי, כתובת ומספר טלפון. |
| Credential_Manager | T-Credential_Manager | האפליקציה משלבת את Credential Manager ל-Android כדי ליצור חוויית כניסה חלקה שמאחדת את התמיכה במפתחות גישה, בזהות מאוחדת ובסיסמאות. |
| Biometric_Authentication | T-Biometric_Authentication | האפליקציה תומכת באימות ביומטרי כדי להגן על טרנזקציות פיננסיות או על מידע רגיש, כמו מסמכים חשובים של המשתמש. |
רכיבים באפליקציה
| מזהה | בדיקות | תיאור |
|---|---|---|
| Component_Export | T-Component_Export |
האפליקציה מגדירה את המאפיין רק רכיבי אפליקציה שמשתפים נתונים עם אפליקציות אחרות או רכיבים שצריכים להיות מופעלים על ידי אפליקציות אחרות מיוצאים. |
| Component_Permissions | T-Component_Permissions |
כל הכוונות והשידורים פועלים לפי השיטות המומלצות:
|
| Component_Protection | T-Component_Protection |
כל הרכיבים שמשתפים תוכן בין אפליקציות משתמשים ב- אפליקציות לא צריכות להסתמך על גישה לרשימה של חבילות מותקנות. |
רשתות
| מזהה | בדיקות | תיאור |
|---|---|---|
| Network_Security_Traffic | T-Network_Security_Traffic | כל התעבורה ברשת נשלחת באמצעות SSL. |
| Network_Security_Configuration | T-Network_Security_Configuration | האפליקציה מצהירה על תצורה של אבטחת רשת. |
| Security_Provider_Initialization | T-Security_Provider_Initialization | אם האפליקציה משתמשת ב-Google Play Services, ספק האבטחה מאותחל בהפעלת האפליקציה. |
רכיבי WebView
| מזהה | בדיקות | תיאור |
|---|---|---|
| WebView_Asset_Loader | T-WebView_Asset_Loader, T-WebView_Navigation |
אל תשתמשו ב-setAllowUniversalAccessFromFileURLs() כדי לגשת לתוכן מקומי. במקום זאת, צריך להשתמש ב-WebViewAssetLoader. |
| WebView_JavaScript | T-WebView_JavaScript, T-WebView_Navigation |
תצוגות אינטרנט לא משתמשות ב- ב-Android 6.0 (רמת API 23 ומעלה), צריך להשתמש במקום זאת בערוצי הודעות HTML. |
ביצוע
| מזהה | בדיקות | תיאור |
|---|---|---|
| App_Bundles | T-App_Bundles |
האפליקציה לא טוענת באופן דינמי קוד ממקור חיצוני לחבילת ה-APK של האפליקציה. משתמשים ב-קובץ Android App Bundle, שכוללים את הפצת פיצ'רים ב-Play ו-Play Asset Delivery. החל מאוגוסט 2021, חובה להשתמש ב-Android App Bundle בכל האפליקציות החדשות בחנות Google Play. |
קריפטוגרפיה
| מזהה | בדיקות | תיאור |
|---|---|---|
| Cryptographic_Algorithms | T-Cryptographic_Algorithms | האפליקציה משתמשת באלגוריתמים קריפטוגרפיים חזקים ובמחולל מספרים אקראיים שסופקו על ידי הפלטפורמה. בנוסף, האפליקציה לא מטמיעה אלגוריתמים בהתאמה אישית. |
Google Play
הפעלת האפשרות לפרסם את האפליקציה ב-Google Play.
מדיניות
| מזהה | בדיקות | תיאור |
|---|---|---|
| Play_Content_Policies | T-Play_Content_Policies | האפליקציה עומדת בדרישות של מדיניות Google Play בנושא תוכן למפתחים, לא מציעה תוכן בלתי הולם ולא משתמשת בקניין רוחני או במותג של אחרים. |
| Play_Content_Rating | T-Play_Content_Policies | רמת הבגרות של האפליקציה מוגדרת בצורה מתאימה על סמך ההנחיות לסיווג תוכן. |
דף פרטי האפליקציה
| מזהה | בדיקות | תיאור |
|---|---|---|
| Play_Feature_Graphic | T-Play_Feature_Graphic, T-Play_Graphic_Assets |
הגרפיקה של פריט באפליקציה עומדת בהנחיות שמפורטות במאמר התמיכה הזה. מוודאים שהתנאים הבאים מתקיימים:
|
| Play_Device_References | T-Play_Graphic_Assets | צילומי המסך והסרטונים של האפליקציה לא מציגים מכשירים שאין בהם מערכת Android ולא מפנים אליהם. |
| Play_Misleading_Content | T-Play_Graphic_Assets | צילומי המסך או הסרטונים של האפליקציה לא מציגים את התוכן ואת חוויית השימוש באפליקציה בצורה מטעה. |
תמיכה למשתמשים
| מזהה | בדיקות | תיאור |
|---|---|---|
| Play_User_Reviews | T-Play_Content_Policies | אנחנו מטפלים בבאגים נפוצים שמשתמשים מדווחים עליהם בכרטיסייה ביקורות בדף של האפליקציה ב-Google Play, אם אפשר לשחזר את הבאגים והם מתרחשים במכשירים שונים רבים. אם באג מתרחש רק בכמה מכשירים, עדיין כדאי לטפל בו אם המכשירים האלה פופולריים במיוחד או חדשים. |
סביבת בדיקה
מגדירים סביבת בדיקה באופן הבא:
בדיקה באמצעות אמולטור: אמולטור Android הוא דרך מצוינת לבדוק את האפליקציה בגרסאות שונות של Android וברזולוציות מסך שונות. כדאי להגדיר מכשירים מדומיים (AVD) כדי לייצג את גורמי הצורה הנפוצים ביותר ואת השילובים של חומרה/תוכנה עבור בסיס המשתמשים שלכם. כדאי לבדוק מגוון של גורמי צורה באמצעות האמולטורים הבאים (לפחות):
- טלפונים מתקפלים: מסך פנימי בגודל 7.6 אינץ' עם מסך חיצוני (מופיע בקטע 'טלפונים' בכלי AVD Manager)
- טאבלט: Pixel C 9.94" (2,560px x 1,800px)
- בדיקת התראות באפליקציה לנייד: התאמה של מכשיר נייד או אמולטור לאמולטור Wear OS: Wear OS Round 1.84"
מכשירי חומרה: סביבת הבדיקה צריכה לכלול מספר קטן של מכשירי חומרה בפועל שמייצגים את גורמי הצורה העיקריים ואת השילובים של חומרה ותוכנה שזמינים לצרכנים. לא צריך לבדוק את האפליקציה בכל מכשיר שקיים בשוק. מומלץ להתמקד במספר קטן של מכשירים מייצגים, ואפילו להשתמש במכשיר אחד או שניים לכל גורם צורה.
מעבדות לבדיקת מכשירים: אפשר גם להשתמש בשירותים של צד שלישי, כמו Firebase Test Lab, כדי לבדוק את האפליקציה במגוון רחב של מכשירים.
בדיקה עם גרסת Android העדכנית ביותר: בנוסף לבדיקה של גרסאות מייצגות של Android עבור בסיס המשתמשים לטירגוט, תמיד כדאי לבדוק את הגרסה העדכנית ביותר של Android כדי לוודא שהשינויים האחרונים בהתנהגות לא משפיעים לרעה על חוויית המשתמש באפליקציה.
לקבלת הנחיות נוספות לגבי בדיקות, כולל בדיקות יחידה, בדיקות שילוב ובדיקות ממשק משתמש, אפשר לעיין במאמר יסודות הבדיקה של אפליקציות ל-Android.
StrictMode
כדי לבדוק את הביצועים, מפעילים את StrictMode באפליקציה. משתמשים ב-StrictMode כדי לזהות פעולות שעלולות להשפיע על הביצועים, על גישות לרשת ועל קריאות וכתיבות של קבצים. מחפשים פעולות שעלולות להיות בעייתיות גם בשרשור הראשי וגם בשרשורים אחרים.
מגדירים מדיניות ניטור לכל שרשור באמצעות StrictMode.ThreadPolicy.Builder ומפעילים את כל אפשרויות הניטור הנתמכות ב-ThreadPolicy באמצעות detectAll().
הפעלת התראה חזותית על הפרות מדיניות עבור ThreadPolicy באמצעות penaltyFlashScreen().
בדיקות
הבדיקות הבסיסיות של איכות האפליקציה עוזרות לכם להעריך את האיכות הבסיסית של האפליקציה. אתם יכולים לשלב בין הבדיקות או לשלב קבוצות של בדיקות בתוכנית הבדיקה שלכם.
חוויית משתמש
חשוב לבדוק אם חוויית המשתמש עקבית ואינטואיטיבית.
נוחות השימוש
| מזהה | תכונה | תיאור |
|---|---|---|
| T-Consistent_UX | Consistent_UX |
עוברים לכל החלקים באפליקציה – כל המסכים, תיבות הדו-שיח, ההגדרות וכל תהליכי המשתמש. מבצעים את הפעולות הבאות:
|
| T-App_Switcher | App_Switcher | מכל מסך של אפליקציה, עוברים לאפליקציה אחרת שפועלת, ואז חוזרים לאפליקציה שנבדקת באמצעות הממשק למעבר בין אפליקציות האחרונות. |
| T-Sleep_Resume | Sleep_Resume | לוחצים על לחצן ההפעלה כדי להעביר את המכשיר למצב שינה, ואז לוחצים שוב על לחצן ההפעלה כדי להוציא את המסך ממצב שינה. |
| T-Lock_Resume | Lock_Resume | מגדירים נעילת מסך במכשיר. לוחצים על לחצן ההפעלה כדי להעביר את המכשיר למצב שינה (שגורם לנעילת המכשיר). אחר כך לוחצים שוב על כפתור ההפעלה כדי להוציא את המסך ממצב שינה ולבטל את נעילת המכשיר. |
כרטיס SD
| מזהה | תכונה | תיאור |
|---|---|---|
| T-SD_Card | Consistent_UX |
ביצוע בדיקות של הפונקציונליות העיקרית כשהאפליקציה מותקנת בכרטיס SD של המכשיר (אם האפליקציה תומכת בשיטת ההתקנה הזו). כדי להעביר את האפליקציה לכרטיס SD, צריך לעיין בהגדרות האפליקציה. |
ממשק משתמש
| מזהה | תכונה | תיאור |
|---|---|---|
| T-Orientation_Transitions | Display_State_Parity, Fullscreen_Display, Orientation_Transitions |
בכל מסך של האפליקציה, מסובבים את המכשיר בין כיוון אופקי לכיוון אנכי, ובין מצב מקופל למצב פתוח, לפחות שלוש פעמים. מוודאים שהאפליקציה מבצעת את הפעולות הבאות:
|
איכות חזותית
| מזהה | תכונה | תיאור |
|---|---|---|
| T-Graphic_Quality | Graphic_Quality | משתמשים בכל התכונות של האפליקציה. מוודאים שכל הרכיבים החזותיים, כולל גרפיקה, טקסט, תמונות ורכיבים אחרים בממשק המשתמש, לא מעוותים, לא מטושטשים ולא מפוקסלים. |
| T-Line_Length | Line_Length |
בודקים את כל בלוקי הטקסט באפליקציה. מוודאים שאורך השורה של הטקסט ושל בלוק הטקסט מוגבל ל-45 עד 75 תווים (כולל רווחים) כדי שהטקסט יהיה קריא. מוודאים את הפרטים הבאים:
|
| T-Theme_Support | Theme_Support | מוודאים שכל הטקסט קריא בעיצוב בהיר ובעיצוב כהה. מוודאים שכל הרכיבים החזותיים נראים בבירור ונעימים לעין גם במצב בהיר וגם במצב כהה. |
ניווט
| מזהה | תכונה | תיאור |
|---|---|---|
| T-Back_Nav | Back_Button_Nav, Back_Gesture_Nav |
עוברים לכל החלקים באפליקציה – כל המסכים, תיבות הדו-שיח, ההגדרות וכל תהליכי המשתמש. בכל מסך של אפליקציה, לוחצים על הלחצן הקודם או משתמשים בתנועת ההחלקה 'חזרה'. האפליקציה אמורה לנווט למסך הקודם או למסך הבית. |
| T-State_Preservation | State_Preservation | מכל מסך אפליקציה, לוחצים על מקש הבית במכשיר או מחליקים למעלה בניווט באמצעות מחוות, ואז מפעילים מחדש את האפליקציה מהמסך כל האפליקציות. |
התראות
| מזהה | תכונה | תיאור |
|---|---|---|
| T-Notification_Quality | Notification_Quality, Conversation_Quality |
מפעילים את כל סוגי ההתראות שהאפליקציה יכולה להציג ומסתכלים על מגירת ההתראות. מרחיבים את ההתראות כשזה רלוונטי (Android 4.1 ואילך), ומקישים על כל הפעולות הזמינות. |
נגישות
| מזהה | תכונה | תיאור |
|---|---|---|
| T-Touch_Target_Size | Touch_Target_Size | מוודאים שמשטחי המגע שומרים על גודל ומיקום עקביים ונגישים בכל הגדלים והתצורות של המסך. מידע על נגישות זמין במאמר בנושא Accessibility Scanner. |
| T-Visual_Contrast | Visual_Contrast | בודקים את הניגודיות של כל הרכיבים החזותיים. |
| T-Content_Description | Content_Description | מוודאים שלכל הרכיבים בממשק המשתמש, מלבד TextView, יש תיאורי תוכן. |
הפונקציונליות
צריך לוודא שהאפליקציה מיישמת את ההתנהגות הפונקציונלית הבאה.
אודיו
| מזהה | תכונה | תיאור |
|---|---|---|
| T-Audio_Playback_Start | Audio_Playback_Start | מתחילים את הפעלת האודיו. מוודאים שבתוך שנייה אחת האפליקציה מתחילה להפעיל את האודיו או מספקת אינדיקטור ויזואלי לכך שנתוני האודיו מוכנים להפעלה. |
| T-Audio_Focus_Request | Audio_Focus_Request | מתחילים את הפעלת האודיו. האפליקציה צריכה לבקש הרשאת אודיו. כשמפסיקים את השמעת האודיו, האפליקציה צריכה לוותר על מיקוד האודיו (זה קורה באופן אוטומטי באפליקציות שמטרגטות Android 12 (רמת API 31) ומעלה). |
| T-Audio_Focus_Change | Audio_Focus_Change | מתחילים את הפעלת האודיו. מתחילים להפעיל אודיו באפליקציה אחרת. האפליקציה שלכם צריכה להגיב לשינוי בהרשאת האודיו ולהפסיק את הפעלת האודיו או להנמיך את עוצמת הקול של האודיו. |
| T-Audio_Playback_Background | Audio_Playback_Background | מתחילים את הפעלת האודיו. מבצעים אינטראקציה עם אפליקציה אחרת שלא מפעילה אודיו כאפליקציה שפועלת בחזית. האפליקציה אמורה להמשיך להפעיל אודיו ברקע ולהציג התראה בשורת הסטטוס. מוודאים שאפשר לנהל את ההפעלה באמצעות אמצעי הבקרה שמוצגים בהתראה. נועלים את המסך של המכשיר. האפליקציה אמורה להמשיך להפעיל אודיו ברקע ולהציג התראה במסך הנעילה. מוודאים שאפשר לנהל את ההפעלה באמצעות אמצעי הבקרה שמוצגים בהתראה. |
| T-Audio_Notification_Style | Audio_Notification_Style | מתחילים את הפעלת האודיו. מבצעים אינטראקציה עם אפליקציה אחרת שלא קשורה לאודיו כאפליקציה שפועלת בחזית. מוודאים שהאפליקציה ממשיכה להפעיל אודיו ברקע ושיצרה התראה עם סגנון MediaStyle. מידע נוסף על שימוש בממשק השליטה במדיה |
| T-Audio_Playback_Resume | Audio_Playback_Resume | מתחילים את הפעלת האודיו. ליצור אינטראקציה עם אפליקציה אחרת שאינה אפליקציית אודיו כאפליקציה שפועלת בחזית. ליצור אינטראקציה עם האפליקציה שלכם כדי להפוך אותה לאפליקציה העליונה. האודיו אמור להמשיך לפעול או שהווליום אמור לחזור לרמה הקודמת. אחרת, האפליקציה צריכה לציין למשתמש שההפעלה מושהית. |
וידאו
| מזהה | תכונה | תיאור |
|---|---|---|
| T-Video_PiP | Video_PiP | הפעלת הפעלת סרטונים באפליקציה במצב תמונה בתוך תמונה. |
| T-Video_Encoding | Video_Encoding | מוודאים שהאפליקציה מקודדת את הסרטון באמצעות תקן הדחיסה של סרטוני HEVC. |
| T-Video_Playback_Background | Video_Playback_Background | מתחילים להפעיל את הסרטון. ממזערים את חלון האפליקציה, פותחים אפליקציה אחרת כדי להעביר את חלון האפליקציה לרקע. במכשירים עם אפשרות להצגת שולחן עבודה, מזיזים את חלון האפליקציה אל מחוץ לשולחן העבודה הגלוי. מוודאים שהפעלת הסרטון ממשיכה ללא הפרעה בכל המקרים. |
שיתוף
| מזהה | תכונה | תיאור |
|---|---|---|
| T-System_Sharesheet | System_Sharesheet | יוצרים כוונה ומתחילים פעילות על ידי קריאה ל-startActivity() עם הכוונה כארגומנט. איך משתמשים בקובץ לשיתוף ב-Android האפליקציה צריכה להציג את הקובץ לשיתוף ב-Android. |
שירותים ברקע
| מזהה | תכונה | תיאור |
|---|---|---|
| T-Background_Service_Optimization | Background_Service_Optimization | משתמשים בכל התכונות העיקריות של האפליקציה. מוודאים שלא מופעלים שירותים ברקע שפועלים לזמן רב. עוברים לאפליקציה אחרת כדי להעביר את האפליקציה לרקע. עוברים אל הגדרות ובודקים אם יש באפליקציה שירותים שפועלים ברקע. ב-Android מגרסה 4.0 ואילך, עוברים למסך Apps (אפליקציות) ומחפשים את האפליקציה בכרטיסייה Running (פועלות). |
ביצועים ויציבות
בודקים את הביצועים, היציבות והתצוגה החזותית המושלמת.
ביצועים
| מזהה | תכונה | תיאור |
|---|---|---|
| T-App_Startup_Time | App_Startup_Time | מפעילים את האפליקציה. מוודאים שהאפליקציה נטענת במהירות או שמסופק בה אינדיקטור התקדמות או רמז דומה אם טעינת האפליקציה נמשכת יותר משתי שניות. |
| T-Rendering_Performance | Rendering_Performance | להשתמש בכל התכונות העיקריות של האפליקציה. לוודא שהאפליקציה מעבדת לפחות 60 פריימים לשנייה. אפשר להשתמש באפשרות עיבוד פרופיל ב-HWUI כדי לבדוק את האפליקציה. |
| T-StrictMode_Compliance | StrictMode_Compliance |
מפעילים את חשוב לשים לב במיוחד ל-garbage collection ולהשפעה שלו על חוויית המשתמש. |
יציבות
| מזהה | תכונה | תיאור |
|---|---|---|
| T-Stability_ANR | Stability_ANR | משתמשים בכל התכונות העיקריות של האפליקציה. מוודאים שהאפליקציה לא קורסת או חוסמת את שרשור ה-UI וגורמת לשגיאות ANR (האפליקציה לא מגיבה) ב-Android. כדאי לעיין בדוח טרום-השקה ב-Google Play כדי לזהות בעיות יציבות פוטנציאליות. |
SDK
| מזהה | תכונה | תיאור |
|---|---|---|
| T-Android_Platform_Compatibility | Android_Platform_Compatibility | להפעיל את האפליקציה בגרסה הציבורית האחרונה של פלטפורמת Android. שימוש בכל התכונות העיקריות. מוודאים שהאפליקציה לא קורסת ופועלת בלי לפגוע בפונקציונליות העיקרית שלה. |
| T-Target_SDK_Version | Target_SDK_Version, Compile_SDK_Version |
בודקים את קובץ המניפסט של Android ואת הגדרות ה-build כדי לוודא שהאפליקציה נוצרה על בסיס הגרסה העדכנית ביותר של ה-SDK (targetSdk ו-compileSdk). |
| T-SDK_Maintenance | SDK_Maintenance | בודקים אם יש תלויות לא מעודכנות בקובץ build.gradle של האפליקציה. |
| T-Non_SDK_Interfaces | Non_SDK_Interfaces | כדי לזהות שימוש בממשק שאינו SDK, אפשר להשתמש בכלי ה-lint של Android Studio. לשיטות בדיקה חלופיות, אפשר לעיין במאמר בנושא הגבלות על ממשקים שאינם SDK. |
| T-Production_Build_Quality | Production_Build_Quality | בודקים אם קיימות ספריות ניפוי באגים בקובץ build.gradle של האפליקציה. |
סוללה
| מזהה | תכונה | תיאור |
|---|---|---|
| T-Power_Management | Power_Management |
שימוש בכל התכונות העיקריות של האפליקציה במצבי נמנום ואפליקציה במצב המתנה. צריך לוודא שהתראות, טיימרים, התראות וסנכרונים פועלים כמו שצריך בחלון התחזוקה של מצב נמנום, וכשהאפליקציה יוצאת ממצב אפליקציה במצב המתנה. בודקים את ההתנהגות של נמנום ושל אפליקציה במצב המתנה באמצעות פקודות adb (הדרישות וההנחיות מפורטות במאמר בדיקה באמצעות נמנום ו-אפליקציה במצב המתנה). כדי לאבחן התרוקנות סוללה לא צפויה, אפשר להשתמש בכלי Power Profiler של Android Studio או בכלי Battery Historian בשילוב עם עבודה מתוכננת ברקע. |
פרטיות ואבטחה
בודקים אם יש אמצעי הגנה על הפרטיות והאבטחה שהמשתמשים מצפים להם.
הרשאות
| מזהה | תכונה | תיאור |
|---|---|---|
| T-Minimize_Permissions | Minimize_Permissions | בודקים את כל ההרשאות שהאפליקציה דורשת, בקובץ המניפסט, בזמן הריצה ובהגדרות האפליקציה במכשיר (הגדרות > פרטי האפליקציה). |
| T-Sensitive_Permissions | Sensitive_Permissions | משתמשים בתכונות של האפליקציה שמבקשות הרשאות. מוודאים שהאפליקציה מבקשת הרשאה לגשת למידע אישי רגיש או לשירותים רק בתרחישי שימוש מרכזיים באפליקציה. מוודאים שההשלכות של מתן הרשאה למידע אישי רגיש ולשירותים רגישים מוסברות למשתמש בצורה ברורה. |
| T-Runtime_Permissions | Runtime_Permissions | משתמשים בכל התכונות באפליקציה שדורשות הרשאות. מוודאים שההרשאות מתבקשות בצורה עצלה, כלומר רק כשניגשים לתכונות, ולא במהלך הפעלת האפליקציה. |
| T-Permission_Rationale | Permission_Rationale | משתמשים בכל התכונות באפליקציה שדורשות הרשאות. מוודאים שהאפליקציה מסבירה למשתמש למה נדרשות ההרשאות. |
| T-Graceful_Degradation | Graceful_Degradation | משתמשים בכל התכונות באפליקציה שדורשות הרשאות. דוחים או מבטלים את ההרשאות. מוודאים שהאפליקציה מספקת תרחיש שימוש חלופי וממשיכה לפעול. |
נתונים וקבצים
| מזהה | תכונה | תיאור |
|---|---|---|
| T-Sensitive_Data_Storage | Sensitive_Data_Storage | בודקים את כל הנתונים שמאוחסנים באחסון הפנימי. מוודאים שהנתונים שמאוחסנים מחוץ לארגון לא מכילים מידע אישי רגיש. |
| T-Sensitive_Data_Handling | Sensitive_Data_Storage | בודקים איך המערכת מטפלת בנתונים שנטענים מאחסון חיצוני ומעבדת אותם. |
| T-Sensitive_Data_Logging | Sensitive_Data_Logging | משתמשים בכל התכונות העיקריות של האפליקציה תוך כדי מעקב אחרי קובץ יומן במכשיר. מוודאים שלא מתבצע רישום ביומן של מידע פרטי על המשתמשים. |
| T-Hardware_IDs | Hardware_IDs | שימוש בכל התכונות העיקריות של האפליקציה. מוודאים שהאפליקציה לא משתמשת במזהי חומרה כמו IMEI למטרות זיהוי. |
זהות
| מזהה | תכונה | תיאור |
|---|---|---|
| T-Autofill_Hints | Autofill_Hints | שימוש בכל התכונות של האפליקציה שדורשות קלט של משתמשים. מוודאים שהאפליקציה מספקת רמזים למילוי אוטומטי של שדות קלט לנתונים כמו פרטי כניסה לחשבון ומידע רגיש אחר. |
| T-Credential_Manager | Credential_Manager | נכנסים לאפליקציה ומוודאים שהיא משתמשת ב-Credential Manager for Android כדי לאפשר כניסה באמצעות מפתחות גישה, זהות מאוחדת וסיסמאות. |
| T-Biometric_Authentication | Biometric_Authentication | להשתמש בכל התכונות של האפליקציה שדורשות אימות. צריך לוודא שהאפליקציה מגנה על טרנזקציות פיננסיות או על מידע רגיש, כמו מסמכים חשובים של משתמשים, באמצעות אימות ביומטרי. |
רכיבים באפליקציה
| מזהה | תכונה | תיאור |
|---|---|---|
| T-Component_Export | Component_Export | בודקים את כל רכיבי האפליקציה שמוגדרים בקובץ המניפסט של Android כדי לוודא שהם מוגדרים למצב הייצוא המתאים. צריך להגדיר במפורש את המאפיין exported לכל הרכיבים. |
| T-Component_Permissions | Component_Permissions | צריך לבדוק את כל ההרשאות שהאפליקציה דורשת בקובץ המניפסט, בזמן הריצה ובהגדרות האפליקציה במכשיר (הגדרות > פרטי האפליקציה). |
| T-Component_Protection | Component_Protection | בודקים את כל ספקי התוכן שמוגדרים בקובץ המניפסט של Android. מוודאים שלכל ספק יש protectionLevel מתאים. |
רשתות
| מזהה | תכונה | תיאור |
|---|---|---|
| T-Network_Security_Traffic | Network_Security_Traffic | מצהירים על תצורה של אבטחת רשת שמשביתה תנועה שאינה מוצפנת, ואז בודקים את האפליקציה. |
| T-Network_Security_Configuration | Network_Security_Configuration | בודקים את הגדרות אבטחת הרשת של האפליקציה. מוודאים שכל בדיקות ה-lint בהגדרה עוברות בהצלחה. |
| T-Security_Provider_Initialization | Security_Provider_Initialization | מוודאים שספק האבטחה מאותחל בהפעלת האפליקציה בשירותי Google Play. |
רכיבי WebView
| מזהה | תכונה | תיאור |
|---|---|---|
| T-WebView_Asset_Loader | WebView_Asset_Loader | בודקים את הגדרות אבטחת הרשת של האפליקציה. מוודאים שכל בדיקות ה-lint בהגדרה עוברות בהצלחה. |
| T-WebView_JavaScript | WebView_JavaScript | לכל WebView, עוברים לדף שנדרש בו JavaScript. |
| T-WebView_Navigation | WebView_Asset_Loader, WebView_JavaScript |
בכל WebView, מנסים לנווט לאתרים ולתוכן שלא נטענים ישירות על ידי האפליקציה. |
ביצוע
| מזהה | תכונה | תיאור |
|---|---|---|
| T-App_Bundles | App_Bundles | מוודאים שהאפליקציה משתמשת בקובצי Android App Bundle ולא טוענת קוד באופן דינמי מחוץ ל-APK של האפליקציה. |
קריפטוגרפיה
| מזהה | תכונה | תיאור |
|---|---|---|
| T-Cryptographic_Algorithms | Cryptographic_Algorithms | צריך לוודא שהאפליקציה משתמשת באלגוריתמים קריפטוגרפיים חזקים ובמחולל מספרים אקראיים שסופקו על ידי הפלטפורמה. חשוב גם לוודא שהאפליקציה לא מטמיעה אלגוריתמים בהתאמה אישית. |
Google Play
מוודאים שהאפליקציה מוכנה לפרסום ב-Google Play.
מדיניות
| מזהה | תכונה | תיאור |
|---|---|---|
| T-Play_Content_Policies | Play_Content_Policies, Play_Content_Rating, Play_User_Reviews |
נכנסים אל Google Play Console כדי לבדוק את פרופיל המפתח, תיאור האפליקציה, צילומי המסך, גרפיקה של פריט, סיווג התוכן ומשוב המשתמשים. |
דף פרטי האפליקציה
| מזהה | תכונה | תיאור |
|---|---|---|
| T-Play_Feature_Graphic | Play_Feature_Graphic | מורידים את הגרפיקה של פריט ואת צילומי המסך, ומקטינים אותם כך שיתאימו לגדלי המסכים במכשירים ובגורמי הצורה שמטרגטים. |
| T-Play_Graphic_Assets | Play_Feature_Graphic, Play_Device_References, Play_Misleading_Content |
בודקים את כל הנכסים הגרפיים, המדיה, הטקסט, ספריות הקוד ותכנים אחרים שנכללים בחבילת האפליקציה או בהורדה של קובץ ההרחבה. |
העברה לארכיון
גרסאות קודמות של הנחיות האיכות העיקריות לאפליקציות: