١٦
آزمايش نرم افزارهاى بين المللى
بسيارى از دوستان من مهندس آزمايش نرم افزار بوده و نسبت به تصميم من مبنى بر قرار دادن اين فصل در انتهاى كتاب معترض خواهند شد و خواهند پرسيد كه چرا آنها را به "عقب اتوبوس" فرستاده ام! من براى اين كار دو دليل بسيار خوب داشتم:
بدين سبب اين فصل به نوعى مركزيت داشته و به آن دسته از مهندسين آزمايش نرم افزارى كه تاكنون با مسائل i18N سر و كارى نداشته اند توصيه مىكنم اين فصل را به دقت مطالعه كنند. اگر برنامه نويس هستيد، باز هم پيشنهاد مىكنم نگاهى به اين فصل بياندازيد، زيرا ممكن است مهندسين آزمايش نرم افزار شما تصميم به خريد اين كتاب بگيرند و شما بخواهيد آمار اشتباهات برنامه نويسى (bug) خود را پائين نگه داريد!
بهترين نقطه شروع اين است كه تصميم بگيريد چه چيزى را مورد آزمايش قرار بدهيد.
برنامه ريزى جهت فرايند آزمايش؟
دليل و نكته اول من كه در بالا آمده است كمى زيركانه و شايد گمراه كننده است، چراكه دليلى ندارد كه آزمايش نرم افزار پس از اتمام مراحل توليد محصول آغاز شود. آزمايش نرم افزار از همان روز اول و از زمانى شروع مىشود كه مهندس آزمايش نرم افزار مشخصات محصول را بررسى كرده و زمان لازم براى آزمايش محصول توصيف شده را برآورد مىكند. اين برآورد عامل مهمى بوده و ممكن است منجر به حذف برخى از ويژگيهاى محصول به سبب ضيق وقت و يا موكول كردن آنها به نسخهه اى بعدى برنامه بشود. در اين بخش مسائلى را كه بايد مدنظر قرار داد، مورد بحث قرار مىدهيم.
انجام آزمايش نرم افزار در تنظيمهاى مختلفى امكانپذير است، در جدول ١٦.١ تلاش شده كه تنظيمات ممكن بطور خلاصه بيان گردد.
جدول ١٦.١ مدنظر قرار دادن محيط نرم افزارى آزمايش
رده |
سيستم عامل |
تنظيمات |
سختافزار |
١ |
ويندوز NT يا 2000 |
در قسمت تنظيمات منطقه اى (Resource Settings), تنظيمات كشور ديگرى فعال شود |
آمريكا/هر نوعى |
٢ |
ويندوز NT يا 2000 |
رده ١، در حالى كه صفحه كليد محلى نصب شده باشد |
آمريكا/هر نوعى |
٣ |
ويندوز 2000 |
رده ٢، در حالى كه زبان پيشفرض سيستم عوض شده است. |
آمريكا/هر نوعى |
٤ |
كليه سيستمها |
سيستم عاملى كه بطور كامل ترجمه شده (در ويندوز 2000، زبان swapبا MUI) |
آمريكا/هر نوعى |
٥ |
كليه سيستمها |
سيستم عاملى كه بطور كامل ترجمه شده |
محلى خاص |
واضح است كه انجام آزمايش در شرايط رده ٥ جدول ١٦.١ بيشترين اشتباهات برنامه نويسى (bug)مربوط به i18N را منجر خواهد شد، ولى نصب نسخه هاى مختلف سيستم عامل به زبانهاى متفاوت به منظور انجام آزمايش معمولاً عملى نيست. سه نكته را بايد همواره مدنظر قرار دهيد:
١. آزمايش برنامه تحت ويندوز 2000 عاقلانهترين و مقرون به صرفهترين روش آزمايش عملكرد برنامهتان است، چراكه مىتوانيد به راحتى زبان پيشفرض سيستم و تنظيمات منطقه اى را عوض كنيد. ضمناً با استفاده از امكانات خدمات ايستگاهى شبكه 2000 توانايى بيشترى در مقايسه عملكرد برنامه با زبانهاى مختلف داريد.
٢. با پيشرفت در هر مرحله از ٤ گزينه جدول ١٦.١ عمليات لازم براى آزمايش محصول بطور قابل ملاحظه اى افزايش خواهد يافت (تا رسيدن به رده ٥ ده برابر يا بيشتر خواهد شد).
٣. تعداد اشتباهات برنامه نويسى (bug) جديدى كه در تنظيمات قبلى جدول به آن بر نمىخورديد، بطور قابل ملاحظه اى كاهش خواهد يافت. (بطور معمول كمتر از 1% كل اشكالات ممكن در رده ٥ ملاحظه مىشوند.)
اكنون كه نكات لازم را ذكر نموده ام، به هر يك از رده ها بطور مستقل مىپردازم. تصميم گيرى در مورد ميزان پوشش آزمايش معمولاً بطور مستقيم به عهده مهندس آزمايش نرم افزار نيست، ولى نظر مسئول آزمايش در مورد عمليات لازم جهت آزمايش محصول از اهميت بسيار زيادى برخوردار است و به همين دليل اطلاعات موجود بايد به دقت بررسى شده و با عوامل ديگرى مانند نيازهاى بازار مقايسه و موازنه شوند.
رده ١: تنظيمات منطقه اى
مهمترين اشكالات برنامه نويسى (bug)ملاحظه شده در اين رده تنظيمات مربوط به مسائل پايه اى i18N بخش ١ اين كتاب مىباشند: آيا ورود اطلاعات درست و بدون اشكال انجام شده و آيا در مرحله بعدى پردازش و خروج (گزارش) اطلاعات وارد شده بدرستى صورت مىگيرد؟ آيا اين موضوع در مورد مسائل و مشكلات مربوط به داده هاى نوع تاريخ/ زمان، داده هاى عددى، و داده هاى ارزى صادق است؟ با تغيير تنظيمات تاريخ كامپيوتر چه اتفاقى مىافتد؟
اين آزمايشها بايد روى منوى تنظيمات (control panel)متمركز باشند. در بسيارى از موارد بهترين روش آزمايش نرم افزارتان تنظيم زبانهاى عجيب و منحصر به فرد در تنظيمات منطقه اى است-در برخى موارد شايد حتى انتخاب تنظيمات تركيبى خاص لازم باشد. زمان گزارش اشكالات مشاهده شده حتماً تنظيمات مورد استفاده به هنگام انجام آزمايش را دقيقاً شرح دهيد چرا كه به ياد آوردن تنظيمات زمانى كه آنها را مرتباً تغيير مىدهيد، بسيار مشكل است. كابوس هر مهندسى اين است كه يك اشتباه نرم افزارى پيدا كرده، ولى بعداً نتواند مجدداً آن را پيدا كند.
بجز آزمايش كلى تنظيمات مختلف، صرف زمان بيشترى روى آن دسته از تنظيمات واقعى كه مىدانيد كاربران مورد استفاده قرار مىدهند نيز ارزشمند است. ولى فكر نكنيد كه آزمايش كلى تنظيمات مختلف، وقت تلف كردن است؛ تنظيمات مربوط به كشورهايى كه برنامه نويس و مسئول آزمايش نرم افزار هيچيك مورد توجه خاص قرار نمىدهند، بهترين جاى ممكن براى يافتن چنين اشتباهات برنامه نويسى است. چنين آزمايشاتى سبب مىشود كه هنگام در نظر گرفتن بازارهاى جديد اعتماد به نفس بيشترى داشته باشيد.
رده ٢: بانكهاى اطلاعاتى و ورود اطلاعات به زبانهاى مختلف
البته تمامى اشتباهات برنامه نويسى رده ١ را مىتوان پيدا كرد، علاوه بر آن بايد در فرايند عمليات ورود كاراكترهاى زبانهاى خارجى و ذخيره سازى مكرر آنها نيز به دنبال چنين اشتباهاتى (bug) بگرديد. بطور كلى مىتوان گفت كه عمليات لازم جهت انجام آزمايشهاى رده ٢ قبلاً در رده ١ نيز انجام مىشوند، پس منطق حكم مىكند كه در اين موارد ابعاد وسيعترى را تحت پوشش قرار دهيم، چرا كه از نظر برنامه ريزى و برآورد هزينه تقريباً برابر خواهد بود.
البته زمانى كه پوشش ابعاد وسيعتر را بپذيريد، حالتهاى قابل بررسى نيز چند برابر خواهند شد. بنابراين بايد از وجود افرادى در گروه آزمايش خود كه حاضر و قادر به تغيير دائم تنظيماتشان به حالتهاى غير متعارف بسيار بيشترى نسبت به آزمايشهاى رده ١ باشند، اطمينان حاصل كنيد.
رده ٣: زبان پيش فرض سيستم
پيدا كردن تمامى اشتباهات موجود در رده هاى ١ و ٢ ممكن است. با جستجوى اشتباهات برنامه نويسى مربوط به كاراكترهاى زبانهاى مختلف كه در برگهاى اطلاعات كاراكتر (code page) مختلف قرار دارند، و بررسى عملكرد برنامه مورد آزمايش (AUT) در زبانهاى مذكور، يك دسته اشتباهات برنامه نويسى جديد قابل كشف مىباشند.
منطق حكم مىكند كه دسته هاى خاصى از زبانها را در آزمايش مورد استفاده قرار دهيم، كه مثالى از چنين دسته هايى در زير آمده است. (هر قلم از اقلام مندرج در اين ليست شامل انواع اشتباهات قابل مشاهده در دسته هاى ديگر نيز خواهد بود.)
طبيعتاً نيازى نيست كه تمامى اين رده ها را برگزينيد. بعنوان مثال اگر قصد صرف زمان بسيارى براى فصل ٢ اين كتاب و در حمايت از برنامه هاى چندمليتى را نداشته باشيد، كافى است فقط همان مقدار زمان نيز صرف زبانهايى كنيد كه فقط در يونيكد درج شده اند. (و آنگاه ساده تر است كه فرض كنيد آنها كار نخواهند كرد!)
رده ٤: سيستم عاملى كه تا حدى ترجمه شده (Faux-Localized)
بديهى است كه اين رده مىتواند كليه اشتباهات رده هاى ١، ٢، و ٣ را پيدا كند (البته اين كه تا چه حد از رده ٣ تحت پوشش قرار گيرد بستگى به زبانهاى انتخابى شما دارد). عموماً اشتباهات برنامه نويسى جديدى كه پيدا مىكنيد مربوط به اجزايى (شامل پيغامهاى استاندارد و اجزاى ترجمه شده مانند مرورگر وب (IE)يا (Microsoft Office) هستند كه توسط سيستم عامل عرضه مىشوند و ممكن است در زبانهاى مختلف متفاوت باشند.
واسط كاربر چندزبانه (MUI) ويندوز 2000 و بسته هاى نرم افزارى چندزبانه Office 2000 راه ايدهآل (و در واقع تنها راه) آزمايش در اين رده هستند، اما ابتدا ميزان اتكاء برنامه مورد آزمايش (AUT) شما به چنين اجزاى نرم افزارى قابل بررسى است.
رده ٥: سيستم عاملى كه كاملاً ترجمه شده (Truly Localized)
اين رده حد نهايى آزمايش بوده و قادر به يافتن اشتباهات برنامه نويسى كليه رده هاى ديگر آزمايش مىباشد (ميزان اشتباهات رده ٢ تحت پوشش بستگى به زبانهاى انتخابى شما دارد). نياز به منابع بسيار زياد جهت آزمايشهاى اين رده معمولاً در نظر گرفتن آن را غيرعملى مىسازند، مگر اينكه محصولتان به حد كافى بزرگ بوده و قصد داشته باشيد انجام آزمايشهاى آن بطور خودكار صورت بگيرد.
انتخاب رده آزمايش از جدول ١٦.١
انتخاب رده هاى آزمايش موضوعى پيچيده است و در تحليلهاى نسبت هزينه به درآمد به ندرت به مشكل پيچيده ترى بر خواهيد خورد. عموماً انجام اكثر آزمايشهاى رده ٢ به همراه برخى از كنترلهاى خاص در مورد رده ٣بهترين توازن را برقرار مىكند. هرچه تجربه بيشترى با برنامه نويسان و مسئولين آزمايش گروه خود كسب كنيد، نه تنها شما در آزمايش محصول، كاملتر و پيشرفته تر عمل مىكنيد، بلكه برنامه نويسان گروهتان نيز مسائل را بهتر درك كرده و اشتباهات برنامه نويسى i18N كمترى توليد خواهند كرد.
نصب برنامه مورد آزمايش (AUT)
اگرچه اين مرحله تكرارى و خستهكننده به نظر مىرسد، اما من به شما اطمينان مىدهم كه در واقع اين طور نيست. نصب برنامه در محيط يك سيستم عامل ترجمه شده و روبرو شدن با مسائلى مانند اين واقعيت كه شاخه هاى معمول (مثلاً (Program Files ممكن است به اسم ترجمه شده خود ثبت شده باشند، حائز اهميت است. اين موضوع مىتواند به دو نوع مشكل متفاوت اشاره كند:
اينگونه مسائل را با هر بار نصب مىتوان مورد آزمايش قرار داد.
در مورد محيط نرم افزارى زمان آزمايش يادآورى مىكنم كه بايد به هنگام راهاندازى برنامه هايى كه از سرور SQL استفاده مىكنند، سرور آزمايشى را نسبت به تغيير حروف كوچك و بزرگ حساس (case sensitive) كنيد. اين تنظيم سبب مىشود مشكلاتى مشابه مشكل مربوط به I تركى را كه در فصل ٤ "مسائل مربوط به واسط كاربر" و فصل ١٢ "جت Jet ، سرور SQL، و بانكهاى اطلاعاتى ديگر" مورد بحث قرار داده ام، كشف كنيد. انتخاب اولويتهاى ترتيبى مختلف در سرور نيز مشكلاتى را ظاهر مىكند. تنظيم مناسب سرور SQL هنگام آزمايش ممكن است مانع از روبرو شدن شما با بسيارى از مشكلاتى كه مشتريان پيش رو خواهند داشت، بشود. نصب مجدد و مكرر سرور SQL با اولويتهاى ترتيبى مختلف نيز روش خوبى براى پيدا كردن آن دسته از اشتباهات برنامه نويسى مىباشد كه در صورت عدم انجام آن قابل رويت نخواهند بود.
اجراى شرايط آزمايش بين المللى شما
موضوع انجام گريزهايى (breakout) به منظور فهرست كردن تمامى شرايط حائز اهميت كه بايد مورد آزمايش قرار بگيرند (كه به آن گريز آزمايشى نيز گقته مىشود، و شامل شرايط آزمايش است) طبيعتاً خارج از دامنه اين كتاب است. ا اين حال بسيارى از نكات مهم به هنگام ايجاد شرايط آزمايش براى AUT مورد نظر را در اينجا فهرست مىكنم.
آنچه در مورد i18N بايد به ياد داشته باشيد
در مورد نرم افزارهاى جهانى شده، نمونه اى از انواع مسائلى كه بهتر است در نظر بگيريد به اين شرح است:
آنچه در مورد L10N بايد به ياد داشته باشيد
در يك برنامه ترجمه شده، طيف وسيعى از شرايط آزمايش ديگرى نيز بايد كنترل شوند. بعنوان مثال مىتوان به موارد زير اشاره كرد:
آنچه عموماً بايد در مورد خطوط تحرير پيچيده به ياد داشته باشيد
در چه مرحله اى هستيم...
اين فصل بسيارى از مسائل آزمايش نرم افزارهاى بينالمللى را بررسى مىكند، مسائلى كه اگر قصد توسعه بازارتان و فتح بازارهاى جهانى را داريد، بايد آنها را به دقت در نظر بگيريد. مسئول آزمايش نرم افزار نبايد فراموش كند كه او از جوانب بسيارى مهمترين شخص در آن شركت رو به توسعه است. مسئولين آزمايش نرم افزار افرادى هستند كه مىتوانند به ارزيابى واقعبينانه بازارهاى مورد نظر كمك كنند، موفقيت يا شكست در بازارهاى جهانى تا حد زيادى بستگى به اين دارد كه مسئولين آزمايش نرم افزار تا چه حد خوب عمل كرده و از درستى كار برنامه نويس اطمينان حاصل كرده باشند.
نتيجه مهمى مىتوان گرفت كه براى ختم اين كتاب بسيار مناسب است-داشتن محصولى كه اطمينان مسئول آزمايش نرم افزار را جلب نموده، تيم برنامه نويسى به آن افتخار كرده، و مشتريان سراسر جهان آن را با آغوش باز مىپذيرند! اگرچه حقيقت معمولاً با نقص همراه بوده و به اين خوبى نيست، ولى با دستيابى به بينشى جهانى مىتوانيد تضمين كنيد كه محصولات بعدىتان به هدفتان بسيار نزديكتر خواهند بود.