ইন্সট্রুমেন্টেশন পরীক্ষা

প্রথমে developer.android.com-এ আপনার অ্যাপটি পরীক্ষা করুন। লক্ষ্য করুন, প্ল্যাটফর্ম টেস্টিং-এ ইন্সট্রুমেন্টেশন টেস্ট ব্যবহারের পদ্ধতিতে কিছু পার্থক্য রয়েছে।

সংক্ষেপে, একটি ইন্সট্রুমেন্টেশন টেস্ট am instrument কমান্ডের মাধ্যমে চালু করা একটি বিশেষ টেস্ট এক্সিকিউশন এনভায়রনমেন্ট প্রদান করে, যেখানে টার্গেট করা অ্যাপ্লিকেশন প্রসেসটি রিস্টার্ট ও বেসিক অ্যাপ্লিকেশন কনটেক্সট দিয়ে ইনিশিয়ালাইজ করা হয় এবং অ্যাপ্লিকেশন প্রসেস ভিএম-এর ভিতরে একটি ইন্সট্রুমেন্টেশন থ্রেড চালু করা হয়। আপনার টেস্ট কোড এই ইন্সট্রুমেন্টেশন থ্রেডে এক্সিকিউশন শুরু করে এবং একটি Instrumentation ইনস্ট্যান্স পায়, যা পরীক্ষাধীন অ্যাপ্লিকেশন প্রসেসটিকে ম্যানিপুলেট করার জন্য অ্যাপ্লিকেশন কনটেক্সট এবং এপিআই-গুলোতে অ্যাক্সেস দেয়।

মূল ধারণা

  • একটি ইন্সট্রুমেন্টেশন অবশ্যই একটি অ্যাপ্লিকেশন প্যাকেজের মধ্যে ঘোষণা করতে হবে, যেখানে অ্যাপ্লিকেশন প্যাকেজ ম্যানিফেস্টের <manifest> ট্যাগের অধীনে একটি <instrumentation> ট্যাগ থাকবে।
  • একটি অ্যাপ্লিকেশন প্যাকেজ ম্যানিফেস্টে প্রযুক্তিগতভাবে একাধিক <instrumentation> ট্যাগ থাকতে পারে, যদিও এটি সাধারণত এইভাবে ব্যবহৃত হয় না।
  • প্রতিটি <instrumentation> অবশ্যই থাকতে হবে:
    • একটি android:name অ্যাট্রিবিউট: এটি টেস্ট অ্যাপ্লিকেশনে অন্তর্ভুক্ত Instrumentation এর একটি সাবক্লাসের নাম হওয়া উচিত, যা সাধারণত ব্যবহৃত টেস্ট রানার হয়ে থাকে, যেমন: android.support.test.runner.AndroidJUnitRunner
    • একটি android:targetPackage অ্যাট্রিবিউট অবশ্যই সংজ্ঞায়িত করতে হবে। এর মান পরীক্ষাধীন অ্যাপ্লিকেশন প্যাকেজে সেট করতে হবে।

ধাপগুলোর সারসংক্ষেপ

  1. ফ্রেমওয়ার্ক সার্ভিসগুলোর বিরুদ্ধে হারমেটিক টেস্টের জন্য সাধারণ গন্তব্যস্থলগুলো নিচে দেওয়া হলো:

    frameworks/base/core/tests/coretests
    frameworks/base/services/tests/servicestests
    

    আপনি যদি আপনার কম্পোনেন্টের জন্য একটি একেবারে নতুন ইন্সট্রুমেন্টেশন মডিউল যোগ করেন, তাহলে দেখুন

  2. উপরের স্থানগুলির কোনো একটিতে টেস্ট যোগ করার ক্ষেত্রে প্রচলিত নিয়ম অনুসরণ করুন। আর যদি একটি নতুন টেস্ট মডিউল তৈরি করেন, তবে অনুগ্রহ করে উপরের স্থানগুলির কোনো একটিতে AndroidManifest.xml এবং Android.mk এর সেটআপ অনুসরণ করুন।

  3. একটি উদাহরণের জন্য frameworks/base/core/tests/coretests/ দেখুন। লক্ষ্য করুন, এই লাইনগুলো অতিরিক্ত অ্যাপ ইনস্টল করে:

    <option name="test-file-name" value="FrameworksCoreTests.apk" />
    <option name="test-file-name" value="BstatsTestApp.apk" />
    
  4. আপনার টেস্টটিকে @SmallTest , @MediumTest বা @LargeTest হিসেবে চিহ্নিত করতে ভুলবেন না।

  5. m ব্যবহার করে টেস্ট মডিউলটি তৈরি করুন, যেমন:

    m FrameworksCoreTests
    
  6. পরীক্ষাগুলো চালান:

    m tradefed-all
    tradefed.sh run template/local_min --template:map test=FrameworksCoreTests
    
  7. Tradefed ব্যবহার না করলে, ম্যানুয়ালি ইনস্টল করুন এবং টেস্টগুলো চালান:

    1. তৈরি হওয়া এপিকে ইনস্টল করুন:
    adb install -r ${OUT}/data/app/FrameworksCoreTests/FrameworksCoreTests.apk
    
    1. বিভিন্ন বিকল্প ব্যবহার করে পরীক্ষাগুলো চালান:

      1. এপিকে-তে সমস্ত পরীক্ষা

        adb shell am instrument -w com.android.frameworks.coretests\
          /android.support.test.runner.AndroidJUnitRunner
        
      2. একটি নির্দিষ্ট জাভা প্যাকেজের অধীনে সমস্ত পরীক্ষা

        adb shell am instrument -w -e package android.animation \
          com.android.frameworks.coretests\
          /android.support.test.runner.AndroidJUnitRunner
        
      3. একটি নির্দিষ্ট শ্রেণীর অধীনে সমস্ত পরীক্ষা

        adb shell am instrument -w -e class \
          android.animation.AnimatorSetEventsTest \
          com.android.frameworks.coretests\
          /android.support.test.runner.AndroidJUnitRunner
        
      4. একটি নির্দিষ্ট পরীক্ষা পদ্ধতি

        adb shell am instrument -w -e class \
          android.animation.AnimatorSetEventsTest#testCancel \
          com.android.frameworks.coretests\
          /android.support.test.runner.AndroidJUnitRunner
        

আপনার টেস্ট JUnit API ব্যবহার করে পাস বা ফেলের বিষয়ে সুস্পষ্ট অ্যাসারশন করতে পারে; এছাড়াও, যেকোনো আনক্যাচড এক্সেপশনও একটি ফাংশনাল ফেইলর ঘটাবে।

পারফরম্যান্স মেট্রিক্স প্রকাশ করার জন্য, আপনার টেস্ট কোড কী-ভ্যালু পেয়ারের একটি তালিকা পাঠাতে Instrumentation#sendStatus কল করতে পারে। এটি মনে রাখা গুরুত্বপূর্ণ যে:

  1. মেট্রিকগুলো পূর্ণসংখ্যা বা ফ্লোটিং পয়েন্ট হতে পারে।
  2. যেকোনো অ-সংখ্যাসূচক মান বাতিল করা হবে।
  3. আপনার টেস্ট এপিকে ফাংশনাল টেস্ট অথবা মেট্রিক্স টেস্ট হতে পারে, তবে বর্তমানে উভয়ের মিশ্রণ সমর্থিত নয়।