Uji Coba Fungsional(Functional Testing)

Sebelum membaca bagian ini, Anda disarankan untuk membaca dokumentasi Selenium dan dokumentasi PHPUnit terlebih dahulu. Kita merangkum beberapa prinsip dasar penulisan sebuah functional test(percobaan fungsional) dalam Yii menjadi:

  • Seperti halnya uji coba unit(unit test), sebuah uji coba fungsional(functional test) ditulis dalam bentuk sebuah kelas XyzTest yang diturunkan dari CWebTestCase. Xyz merupakan bagian dari kelas yang diuji coba. Dikarenakan PHPUnit_Extensions_SeleniumTestCase merupakan kelas induk dari CWebTestCase, kita dapat menggunakan seluruh metode yang diturunkan oleh kelas ini.

  • Kelas uji coba fungsional disimpan dalam sebuah file PHP bernama XyzTest.php. Sesuai aturan, file uji coba fungsional disimpan di dalam direktori protected/tests/functional.

  • Kelas uji coba utamanya berisi sebuah rangkaian metode uji coba yang dinamakan sebagai testAbc. Abc merupakan nama fitur yang ingin diuji coba. Misalnya, untuk menguji fitur login pengguna, kita dapat memiliki sebuah metode uji coba yang dinamakan testLogin.

  • Sebuah metode uji coba berisi sebuah rentetan statement(pernyataan) yang akan mengeluarkan perintah ke Selenium RC untuk berinteraksi dengan aplikasi Web yang sedang diuji coba. Selain itu, juga berisi statement assertion (pernyataan tuntutan) untuk memastikan bahwa respon dari aplikasi Web sesuai harapan.

Sebelum kami menjelaskan bagaimana menulis sebuah uji coba fungsional, marilah melihat sebentar file WebTestCase.php yang dihasilkan oleh perintah yiic webapp. File ini mendefinisikan WebTestCase yang dapat berfungsi sebagai kelas dasar untuk semua kelas functional test.

define('TEST_BASE_URL','http://localhost/yii/demos/blog/index-test.php/');
 
class WebTestCase extends CWebTestCase
{
    /**
     * Pengaturan awal sebelum tiap metode uji coba dijalankan.
     * Di bawah ini set basis URL untuk uji coba aplikasi.
     */
    protected function setUp()
    {
        parent::setUp();
        $this->setBrowserUrl(TEST_BASE_URL);
    }
 
    ......
}

Kelas WebTestCase utamanya mengatur URL basis dari halaman yang diuji coba. Nantinya dalam metode uji coba, kita akan menggunakan URL relatif untuk menetapkan halaman mana yang ingin diuji coba.

Kita juga harus memperhatikan bahwa dalam URL tes dasar, kita dapat menggunakan index-test.php sebagai entry script(skrip awal) alih-alih menggunakan index.php. Satu-satunya perbedaan antara index-test.php dan index.php adalah index-test.php menggunakan test.php sebagai file konfigurasi aplikasi sedangkan index.php menggunakan main.php.

Sekarang kita akan melihat bagaimana menguji coba suatu fitur tentang menampilkan sebuah post dalam blog demo. Pertama-tama kita menulis kelas uji coba sebagai berikut. Harap diperhatikan bahwa kelas uji coba diturunkan dari kelas dasar yang baru saja kita jelaskan:

class PostTest extends WebTestCase
{
    public $fixtures=array(
        'posts'=>'Post',
    );
 
    public function testShow()
    {
        $this->open('post/1');
        // verifikasi judul sampel post ada
        $this->assertTextPresent($this->posts['sample1']['title']);
        // verifikasi form comment ada
        $this->assertTextPresent('Leave a Comment');
    }
 
    ......
}

Seperti menulis sebuah kelas uji coba unit, kita mendeklarasi fixture untuk digunakan dalam uji coba ini. Di sini kita mengindikasikan bahwa fixture Post harus digunakan. Dalam metode uji coba tesetShow, kita pertama-tama menginstruksikan Selenium RC membuka URL post/1. Perhatikan bahwa di sini digunakan URL relatif, dan URL lengkap terbentuk dari menambah URL basis yang kita set di kelas dasar ((i.e. http://localhost/yii/demos/blog/index-test.php/post/1). Kita kemudian memastikan bahwa kita dapat mencari post dengan judul sample1 dapat ditemukan dalam halaman halaman Web sekarang. Dan kita juga memverifikasi bahwa halaman ini mengandung teks 'Leave a Comment'

Tip: Sebelum menjalankan uji coba fungsional, server Selenium-RC harus dinyalakan. Untuk menyalakannya dapat dilakukan dengan menjalankan perintah java -jar selenium-server.jar di dalam direktori instalasi server Selenium.

$Id: test.functional.txt 1662 2010-01-04 19:15:10Z qiang.xue $

Be the first person to leave a comment

Please to leave your comment.