আমি কীভাবে অডিও পরীক্ষা করতে পারি?


13

আমি একটি ছোট প্রকল্প উত্তরাধিকার সূত্রে পেয়েছি এবং আমি যুক্ত করছি এমন সমস্ত নতুন কোডের জন্য ইউনিট টেস্ট লিখে এটি একই সাথে প্রসারিত করতে এবং এটি স্থিতিশীল করতে চাই। প্রথম শ্রেণি, TypedAudioCreatorঅডিও ফাইল তৈরি করে এবং এটি প্রথম পরীক্ষা করা এবং দ্বিতীয়টির জন্য কোড লেখার পক্ষে খুব সহজ ছিল।

যাইহোক, যখন এটি লেখার সময় আসল TypedAudioPlayer, আমি কীভাবে এটি পরীক্ষা করতে পারি তা আমার কোনও ধারণা ছিল না। এটি একটি খুব ছোট শ্রেণীর শব্দ বাজানোর খুব বেসিকগুলিকে কেন্দ্র করে:

public class TypedAudioFilePlayer
{
    public event StartedPlayingHandler StartedPlaying;
    public event StoppedPlayingHandler StoppedPlaying;

    public readonly int TimeBetweenPlays;

    private Queue<TypedAudioFile> _playlist = new Queue<TypedAudioFile>(); 

    public TypedAudioFilePlayer(int timeBetweenPlays)
    {
        TimeBetweenPlays = timeBetweenPlays;
    }

    public void AddFile(TypedAudioFile file)
    {
        _playlist.Enqueue(file);
    }

    public void StartPlaying()
    {
        ThreadPool.QueueUserWorkItem(ignoredState =>
        {
            while (_playlist.Count > 0)
            {
                var audioFile = _playlist.Dequeue();

                if (StartedPlaying != null)
                    StartedPlaying(audioFile);

                audioFile.SoundPlayer.PlaySync();
                audioFile.SoundPlayer.Dispose();

                if (StoppedPlaying != null)
                    StoppedPlaying(audioFile);
            }
        });
    }

    public void StopPlaying()
    {
        if (StoppedPlaying != null)
            StoppedPlaying(null);
    }
}

আমি টিডিডিতে এখনও খুব নতুন, তবে আমি অনুশীলনের সুবিধাগুলি বুঝতে পারি এবং এটিতে আরও চেষ্টা করে দেখতে চাই। আমি কোডটি প্রথমে লিখেছি, এখানে কোনও পরীক্ষা নেই, তবে এটি সমাধানের টিডিডি পদ্ধতিটি সঠিকভাবে চিন্তা করতে আমার খুব অলস ছিল। আমার কাছে প্রশ্নটি হল, আমি কীভাবে এই ক্লাসটি পরীক্ষা করতে পারি?


2
সি # তে উপহাস-ফ্রেমওয়ার্কগুলি নেই? এটি আপনার সমস্যাগুলি সমাধান করা উচিত।
ব্যবহারকারী43552

2
@ user43552: এটি কেবল একটি উপহাস পরীক্ষা করবে ... এই দৃশ্যটি অডিও প্লেয়ারটি পরীক্ষা করার উদ্দেশ্যে intended
স্টিভেন এভার্স

5
আমি সি # তে কীভাবে অডিও করবেন তার সাথে আমি পরিচিত নই, তবে আমার কাছে মনে হয় যে আপনাকে এই শ্রেণিটি রিফ্যাক্টর করতে হবে যাতে আপনি তার জায়গায় একটি মক ইনজেকশন করতে পারেন audioFile.SoundPlayer। তারপরে এই মোক নিয়ে পরীক্ষা করুন এবং তা যাচাই করুন PlaySyncএবং Disposeসঠিক জায়গায় ডাকা হবে। আপনি যদি সম্ভব StartedPlayingHandlerহয় StoppedPlayingHandlerতবে ইঞ্জেকশন করতে সক্ষম হতেও চান ।
দাউদ বলেছেন মনিকা

2
এটি স্ট্যাকওভারফ্লোতে থাকা উচিত নয়?
আমর এইচ। আবদ এলমাজিদ

3
@ এমআরএইচ.আবদেলমজিদ - কেন? এটি কোড আছে কারণ?
ChrisF

উত্তর:


10

বেশিরভাগ সিস্টেমে "কিনারায়" এমন অনেকগুলি জিনিস রয়েছে যা ইউনিট পর্যাপ্তভাবে পরীক্ষা করা যায় না। উদাহরণস্বরূপ, গ্রাফিক্স বা শব্দ উত্পাদন করে এমন কোনও কিছুই। এই ধরণের সিস্টেমগুলির জন্য, আপনি সম্ভবত ম্যানুয়াল পরীক্ষার মাধ্যমে সেরা। এমনকি একটি স্বয়ংক্রিয় সমাধান দেওয়া হলেও এই ফলাফলগুলি মানুষের উপলব্ধির জন্য। আপনি কাঙ্ক্ষিত প্রভাব তৈরি করছেন তা জানার একমাত্র উপায় হ'ল তাদের সাথে মানুষের যোগাযোগ করা।

ম্যানুয়াল পরীক্ষা করা সম্ভব হতে পারে, তারপরে সেই ম্যানুয়াল পরীক্ষার আউটপুট রেকর্ড করুন এবং একটি স্বয়ংক্রিয় পরীক্ষা তৈরি করুন যা আউটপুটটি পরিবর্তন না করে তা নিশ্চিত করে। সতর্কতা অবলম্বন করুন যে এর মতো পরীক্ষাগুলি অবিশ্বাস্যভাবে ভঙ্গুর: অন্তর্নিহিত কোডে যে কোনও পরিবর্তনের জন্য ম্যানুয়াল পরীক্ষার পুনরাবৃত্তি প্রয়োজন হতে পারে এবং তারপরে স্বয়ংক্রিয় পরীক্ষার জন্য একটি নতুন রেকর্ডিং তৈরি করতে পারে।


1
'1 বেশিরভাগ সিস্টেমে "প্রান্তে" এমন অনেকগুলি জিনিস রয়েছে যা পর্যাপ্তভাবে ইউনিট পরীক্ষা করা যায় না ''

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

9

অডিও প্লেয়ারটি সত্যই অডিও চালায় এটি স্বয়ংক্রিয়ভাবে পরীক্ষা করা সহজ , তবে আপনি যেভাবেই কার্যকর ইউনিট পরীক্ষা তৈরি করতে পারেন। উদাহরণস্বরূপ, আপনি পরীক্ষা করতে পারেন যে স্টার্টপ্লায়িং () স্টার্টডপ্লেইং ইভেন্টের কারণ এবং স্টপপ্লেইং () স্টপ্পপ্লেইং ইভেন্টের কারণ হিসাবে কাজ করে। খালি প্লেলিস্ট বা নাল প্লেলিস্ট খেলার চেষ্টা করার সময় আপনি আচরণটি পরীক্ষা করতে পারেন। আপনি পরীক্ষা করতে পারেন যে অ্যাডফিলটি প্লেলিস্টে ফাইলটি যুক্ত করে। আপনি পরীক্ষা করতে পারেন যে কোনও অডিও ফাইল বাজানোর পরে এটি প্লেলিস্ট থেকে সরানো হয় (যদি এটি পছন্দসই হয়)। হয়ত ভাঙা অডিও ফাইল ইত্যাদির জন্যও কর্নের কেসেস রয়েছে যা পরীক্ষার প্রাপ্য।

এই বিষয়গুলির জন্য ইউনিট পরীক্ষা করা, আপনি নিশ্চিত হতে পারেন যে ক্লাসটি ভাল আচরণ করে, অর্থাৎ এর চুক্তিগুলি পূরণ করে। যদি এটি হয় তবে এখনও কোনও শব্দ বাজায় না, ম্যানুয়াল পরীক্ষায় এটি তুলনামূলকভাবে সহজ।


3

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

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

( http://en.wikedia.org/wiki/Unit_testing# কৌশল )

অডিও প্লেয়ারের উপাদানটি সঠিকভাবে অডিও চালায় তা পরীক্ষা করতে আপনি সহজেই ইউনিট পরীক্ষা লিখতে পারেন:

  1. আপনার স্পিকারগুলি কাজ করছে এবং ভলিউমটি আপ হয়েছে তা নিশ্চিত করুন।
  2. / আমার / পরীক্ষা / ফোল্ডারে যান।
  3. MyTestRunner অডিওপ্লেয়ারটেষ্ট.স্ক্রিপ্ট.থিনজি কার্যকর করুন।
  4. আপনার 15 মিনিটের জন্য বিথোভেনের 5 তম সিম্ফনি খেলা শুনতে হবে should
  5. আপনি যদি কিছু না শুনে থাকেন তবে অডিওটি কম বেশি 15 সেকেন্ডের বেশি বাজেছে বা কোনওভাবে বিকৃত হয়ে গেছে, পরীক্ষাটি ব্যর্থ হয়েছিল। অন্যথায়, পরীক্ষা পাস।

আপনি যা সহজেই করতে পারবেন না তা হ'ল সেই পরীক্ষাটি একটি স্বয়ংক্রিয় পরীক্ষামূলক সিস্টেমে অন্তর্ভুক্ত। অটোমেটেড টেস্টিং ইউনিট টেস্টিং একটি নির্দিষ্ট বাস্তবায়ন, কিন্তু এটা নয় শুধুমাত্র বাস্তবায়ন নয়।

আরও দেখুন: /programming/1877118/is-unit-testing-always-automated

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.