ইন্সট্রুমেন্টেশন টেস্ট

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

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

মূল ধারণা

  • অ্যাপ্লিকেশন প্যাকেজে একটি ইন্সট্রুমেন্টেশন ঘোষণা করতে হবে, সাথে <instrumentation> ট্যাগটি অ্যাপ্লিকেশন প্যাকেজ ম্যানিফেস্টের <manifest> ট্যাগের মধ্যে নেস্ট করা থাকতে হবে।
  • একটি অ্যাপ্লিকেশন প্যাকেজ ম্যানিফেস্টে প্রযুক্তিগতভাবে একাধিক <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. জেনারেট করা apk ইনস্টল করুন:
    adb install -r ${OUT}/data/app/FrameworksCoreTests/FrameworksCoreTests.apk
    
    1. বিভিন্ন বিকল্পের সাথে পরীক্ষা চালান:

      1. apk-এর সব টেস্ট

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

        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. আপনার টেস্ট APK, ফাংশনাল টেস্ট বা মেট্রিক টেস্ট হতে পারে, তবে দুটি একসাথে ব্যবহার করা যায় না