سبد (0)

آموزش Testing اندروید

آموزش Testing اندروید

فریموورک اندروید شامل یک فریموورک Testingجامع می شود که به شما کمک می کند تا برنامه ی خود و ابزار SDK را از همه ی جنبه ها، شامل ابزاری برای تنظیم و اجرای برنامه های تست، امتحان کنید. اینکه شما در Eclipse با ADT کار می کنید یا در حال کار از روی خط دستور می باشید، SDK در یک شبیه ساز یا دستگاه مورد هدف به شما کمک می کند تا تست های خود را تنظیم و اجرا کنید.

ساختار تست

ساختمان اندروید و ابزار تست پذیرفته اند که پروژه های تست در یک ساختار استاندارد از تستها، کلاس های مورد تست، پروژه های تست و پکیج های تست سازماندهی شده اند.

ابزار Testing در اندروید

ابزار بسیاری می توانند برای Testing برنامه های اندروید استفاده شوند. برخی از آنها رسمی هستند مانند Junit,Monkey  و برخی ابزار گروه سوم هستند که می توانند برای تست برنامه های اندروید استفاده شوند. در این فصل قصد داریم این دو ابزار را برای تست برنامه های اندروید توضیح دهیم.

  1. JUnit
  2. Monkey

JUnit

شما می توانید از JUnit TestCase برای انجام Testing های واحد روی کلاسی که Android APIs را فرا نمی خواند، استفاده کنید. مورد تست نیز کلاس پایه برای AndroidTestCase می باشد که می توانید برای تست شئ های وابسته ی اندروید از آن استفاده کنید. علاوه بر ارائه ی فریموورک JUnit، مورد تست اندروید موارد دیگری همچون تنظیمات خاص اندروید، teardown و متد های کمکی ارائه می دهد.

برای استفاده از TestCase، کلاس خود را با کلاس TestCase گسترش داده و متدی را به نام setUp() اجرا کنید، که ترکیب آن به شکل زیر می باشد.

 

public class MathTest extends TestCase {
   protected double fValue1;
   protected double fValue2;

   protected void setUp() {
      fValue1= 2.0;
      fValue2= 3.0;
   }
}

برای هر تست متدی را اجرا کنید که با عضو ثابت به شکل متقابل عمل می کند. نتایج قابل انتظار را با بیانیه هایی بررسی کنید که با فراخوانی assertTrue(String, boolean) با یک Boolean مشخص شده اند.

 

public void testAdd() {
   double result= fValue1 + fValue2;
   assertTrue(result == 5.0);
}

این متد مقادیر قابل انتظارتان را از یک تست با نتایج واقعی مقایسه می کند و اگر مقایسه ناموفق باشد، یک استثنا وارد می کند.

زمانی که روش ها تعریف شدند، می توانید آن ها را اجرا کنید. ترکیب آن را می توانید درزیر ببینید.

 

TestCase test= new MathTest("testAdd");
test.run();

UI/Application Exerciser Monkey که معمولا monkey نامیده می شود، یک ابزار command-line (فرمان خطی)  می باشد که جریان های ساختگی- تصادفی از فشار دادن کلیدها، لمس کردن ها و حرکات مربوط به یک دستگاه را ارسال می کند. شما می توانید آن را با ابزار Android Debug Bridge (adb) اجرا کنید.

شما از آن برای stress-test  برنامه ی خود و گزارش خطاها استفاده می کنید. می توانید جریانی از رویدادها را با اجرای ابزار، هر زمان با همان شماره ی تصادفی، تکرار کنید.

ویژگی های Monkey

Monkey دارای ویژگی های زیادی می باشد، اما همه ی آنها می توانند در این چهار مولفه خلاصه شوند.

1)     گزینه های پیکره بندی اصلی

2)     محدودیت های عملیاتی

3)     نوع رویدادها و تکرار آنها

4)     گزینه های عیب یابی

کاربرد monkey

برای استفاده از monkey ، یک پیام واره ی دستور باز کرده و در مسیر زیر پیش بروید.

 

android ->sdk ->platform-tools

زمانی که در مسیر هستید، دستگاه خود را به کامپیوتر متصل کنید و فرمان زیر را اجرا کنید.

 

adb shell monkey -p your.package.name -v 500

این فرمان می تواند شامل مراحل زیر باشد.

adb - Android Debug Bridge ابزاری است که برای اتصال و ارسال فرمان ها از صفحه ی  لپ تاپ یا کامپیوتر به دستگاه تلفن اندروید شما استفاده می شود.

shell – shell یک اینترفیس روی دستگاه می باشد که دستورات ما را به زبان دستورات سیستم ترجمه می کند.

monkey – monkey ابزاری برای Testing می باشد.

V- v مخفف روش verbose می باشد.

100 عدد تکرارها و یا تعداد رویدادهایی است که قرار است برای Testing ارسال شوند.

این مسئله در تصویر هم نشان داده شده است.

 

در دستور بالا ابزار monkey را روی برنامه ی  UI پیش فرض اندروید اجرا کنید. اکنون در اینجا کارهای لازم برای اجرای آن روی برنامه ی خود را مشاهده می کنید.

ابتدا کد مثال را که در بخش مثال دستگاهتان ارائه شده، اجرا کنید. پس از اجرا مراحل کاربرد monkey را دنبال کرده و در انتها این فرمان را تایپ کنید.

این امر در شکل زیر نیز نشان داده شده است. با تایپ کردن این فرمان، در واقع شما در حال تولید 500 رویداد تصادفی برای Testing هستید.

مثال

این مثال استفاده از testing را توضیح می دهد. این مثال یک برنامه ی پایه ایجاد می کند که می تواند برای monkey استفاده شود.

برای انجام این مثال لازم است آن را روی یک دستگاه واقعی اجرا کنید و سپس مراحل monkey را که در ابتدا توضیح داده شد، دنبال کنید.

  • برای ایجاد یک برنامه ی اندروید از Eclipse IDE استفاده خواهید کرد و آن را با عنوان Test  به عنوان بسته ی com.PRG.test نام گذاری کنید. زمان ایجاد این برنامه مطمئن شوید که Target SDKو Compile With در آخرین ورژن Android SDKهستند تا از سطوح بالاتر API استفاده کنید.

  • فایل src/MainActivity.java را برای افزودن کد فعالیت تغییر دهید.

  • فایل res/layout/activity_main.xml را تغییر دهید و اگر لازم است مولفه ی GUI به آن اضافه کنید.

  • فایل src/second.java را به برنامه خود اضافه کنید

  • فایل res/layout/view.xml را اضافه کنید و اگر لازم است مولفه ی GUI به آن اضافه کنید.

  • برنامه را اجرا کنید و یک دستگاه اجرایی اندروید انتخاب کرده و برنامه را روی آن نصب کنید و نتایج را بررسی کنید.

در اینجا محتوای MainActivity.java می باشد.

 

package com.PRG.test;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;

public class MainActivity extends ActionBarActivity  {
   Button b1;
   @Override
   
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      b1=(Button)findViewById(R.id.button);
   }
   
   public void button(View v){
      Intent in =new Intent(MainActivity.this,second.class);
      startActivity(in);
   }
   
   @Override
   public boolean onCreateOptionsMenu(Menu menu) {
      // Inflate the menu; this adds items to the action bar if it is present.
      getMenuInflater().inflate(R.menu.menu_main, menu);
      return true;
   }
   
   @Override
   public boolean onOptionsItemSelected(MenuItem item) {
      // Handle action bar item clicks here. The action bar will
      // automatically handle clicks on the Home/Up button, so long
      // as you specify a parent activity in AndroidManifest.xml.
      
      int id = item.getItemId();
      
      //noinspection SimplifiableIfStatement
      if (id == R.id.action_settings) {
         return true;
      }
      return super.onOptionsItemSelected(item);
   }
}

در اینجا محتوای second.java می باشد.

 

package com.PRG.test;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

/**
 * Created by Sairamkrishna on 4/10/2015.
 */
public class second extends Activity{
   @Override
   
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.view);
      Button b1=(Button)findViewById(R.id.button2);
      
      b1.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
            Toast.makeText(second.this,"Thanks",Toast.LENGTH_SHORT).show();
         }
      });
   }
}

اینجا محتوای activity_main.xml را مشاهده می کنید.

 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
   android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:paddingTop="@dimen/activity_vertical_margin"
   android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
   
   <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="UI Animator Viewer"
      android:id="@+id/textView"
      android:textSize="25sp"
      android:layout_centerHorizontal="true" />
      
   <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Tutorials point"
      android:id="@+id/textView2"
      android:layout_below="@+id/textView"
      android:layout_alignRight="@+id/textView"
      android:layout_alignEnd="@+id/textView"
      android:textColor="#ff36ff15"
      android:textIsSelectable="false"
      android:textSize="35dp" />
      
   <ImageView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/imageView"
      android:src="@drawable/logo"
      android:layout_below="@+id/textView2"
      android:layout_centerHorizontal="true" />
      
   <Button
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Button"
      android:onClick="button"
      android:id="@+id/button"
      android:layout_below="@+id/imageView"
      android:layout_centerHorizontal="true"
      android:layout_marginTop="100dp" />

</RelativeLayout>

اینجا محتوای view.xml  را مشاهده می کنید.

 

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent" android:layout_height="match_parent">
   
   <Button
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="button"
      android:id="@+id/button2"
      android:layout_centerVertical="true"
      android:layout_centerHorizontal="true" />
      
   <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Tutorials point "
      android:id="@+id/textView3"
      android:textColor="#ff3aff22"
      android:textSize="35dp"
      android:layout_above="@+id/button2"
      android:layout_centerHorizontal="true"
      android:layout_marginBottom="90dp" />
      
</RelativeLayout>

اینجا محتوای Strings.xml  را مشاهده می کنید.

 

<resources>
   <string name="app_name">My Application</string>
   <string name="hello_world">Hello world!</string>
   <string name="action_settings">Settings</string>
</resources>

در اینجا محتوای AndroidManifest.xml  را مشاهده می کنید.

 

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.PRG.test" >
   
   <application
      android:allowBackup="true"
      android:icon="@mipmap/ic_launcher"
      android:label="@string/app_name"
      android:theme="@style/AppTheme" >
      
      <activity
         android:name=".MainActivity"
         android:label="@string/app_name" >
         
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
         
      </activity>
      
      <activity android:name=".second"></activity>
      
   </application>
</manifest>

اجازه بدهید برنامه ی Android Testing شما را اجرا کنیم. فرض می کنیم که دستگاه موبایل اندروید خود را به کامپیوتر متصل کرده اید. برای اجرای برنامه از Eclipse، یکی ازفایل های فعالیت پروژه را باز کرده و روی آیکن Run  از تولبار کلیک کنید.

موبایل خود را به عنوان یک گزینه انتخاب کرده وسپس آن را بررسی کنید که صفحه ی برنامه را نمایش می دهد. اکنون مراحل ذکر شده در بالا را زیر بخش monkey ،  برای اجرای Testing روی این برنامه، دنبال کنید.

تمامی محصولات و خدمات این وبسایت، حسب مورد دارای مجوزهای لازم از مراجع مربوطه می‌باشند و فعالیت‌های این سایت تابع قوانین و مقررات جمهوری اسلامی ایران است.
logo-samandehi مجوز نشر دیجیتال از وزرات فرهنگ و ارشاد اسلامی پرداخت آنلاین -  بانک ملت معرفی بیاموز در شبکه سه