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

সেভ করা পৃষ্ঠা গুছিয়ে রাখতে 'সংগ্রহ' ব্যবহার করুন আপনার পছন্দ অনুযায়ী কন্টেন্ট সেভ করুন ও সঠিক বিভাগে রাখুন।

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

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

মূল ধারণা

  • অ্যাপ্লিকেশন প্যাকেজ <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. একটি উদাহরণের জন্য ফ্রেমওয়ার্ক/বেস/কোর/টেস্ট/কোরটেস্ট/ দেখুন। নোট করুন এই লাইনগুলি অতিরিক্ত অ্যাপ ইনস্টল করে:

    <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. ট্রেডফেড ব্যবহার না করলে, ম্যানুয়ালি ইনস্টল করুন এবং পরীক্ষা চালান:

    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. একটি নির্দিষ্ট জাভা প্যাকেজের অধীনে সমস্ত পরীক্ষা

        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 হয় কার্যকরী পরীক্ষা বা মেট্রিক্স পরীক্ষা হতে পারে, তবে উভয়ের মিশ্রণ বর্তমানে সমর্থিত নয়