چکيده
توسعه سيستمهاي نرمافزاري بزرگ يك فرايند پيچيده و مستعد خطا است. خطاها ممكن است در هرمرحله از توسعه نرمافزار رخ دهند. اين خطاها كه گاهي از آنها بهعنوان اشكال نيز ياد ميشود، درصورت عدم شناسايي و حذف بهموقع، ميتوانند ازنظر زماني و مالي ضرر زيادي بهبار آورند. نزديك به سهدهه تجربه ثابت كردهاست كه آزمون نرمافزار يك روش مؤثر براي اطمينان از كيفيت نرمافزار، ازطريق آشكارسازي خطاها است. يكي از وظايف مهم هنگام آزمون نرمافزار، توليد دادههاي آزمون مناسب است. امروزه بحث توليد دادههاي آزمون به يك حوزه تحقيقاتي بسيار داغ تبديل شدهاست. بهطوريكه در سالهاي اخير، محققان روشهاي زيادي را براي دستيابي به اين فرايند پيشنهاد كردهاند. اما اكثر اين روشها بر روي انواع دادهاي اوليه مانند اعداد صحيح و حقيقي تمركز داشتهاند. درحاليكه درعمل، انواع دادهاي پيچيدهتري مانند رشتهها، آرايهها، اشارهگرها و ساختارها نيز بهطورگسترده مورداستفاده قرار ميگيرند. در اين گزارش، سعي شدهاست تا مقوله توليد دادههاي آزمون براي اين انواع دادهاي پيچيده موردبررسي قرار گيرد.
درخصوص توليد دادههاي آزمون براي رشتهها، بايد بتوان دادههاي آزمون رشتهاي توليد كرد كه انشعابهاي برنامه كه شامل گزارههاي رشتهاي ازقبيل برابري و ترتيبدهي رشتهها هستند را پوشش دهد. درخصوص توليد دادههاي آزمون براي آرايهها، سه نوع محدوديت وجود دارد. محدوديت درمورد مقادير عناصر آرايه، محدوديت درمورد تعامل ميان عناصر آرايه و محدوديت ناشياز ويژگيهاي ضمني آرايه. درخصوص توليد دادههاي آزمون براي اشارهگرها، دو وظيفه وجود دارد. اولين وظيفه، ساخت يك حافظه ذخيرهسازي مناسب است كه اشارهگر به آن اشاره ميكند و دومين وظيفه، توليد مقدار ذخيرهشده در آن مكان حافظه است. درخصوص توليد دادههاي آزمون براي ساختارها نيز ابتدا دادههاي آزمون براي هر فيلد ساختار، بهطورجداگانه، با يكسري دادههاي تصادفي از يك نوع خاص توليد شده و سپس تمامي دادههاي آزمون فيلدها به كمك يك حافظه منطقي باهم تركيب ميشوند تا كل ساختار ايجاد گردد.