1. Code
  2. Coding Fundamentals
  3. Testing

Menggunakan Faker untuk Menghasilkan Data Pengisi untuk Pengujian Otomatis

Faker adalah pustaka open-source yang dibuat oleh Francois Zaninotto yang menghasilkan data pengisi buatan untuk aplikasi Anda dan kebutuhan pengujiannya.
Scroll to top
This post is part of a series called Building Your Startup With PHP.
Building Your Startup: Approaching Major Feature Enhancements
How to Build a User Tour With Shepherd in JavaScript

Indonesian (Bahasa Indonesia) translation by ⚡ Rova Rindrata (you can also view the original English article)

Final product imageFinal product imageFinal product image
What You'll Be Creating

Faker adalah pustaka open-source yang dibuat oleh Francois Zaninotto yang menghasilkan data pengisi buatan untuk aplikasi Anda dan kebutuhan pengujiannya.

Faker dapat digunakan dalam aplikasi PHP biasa, framework seperti Yii atau Laravel, atau di dalam pustaka pengujian seperti yang kami singgung dengan Codeception di tutorial Envato Tuts+ sebelumnya.

Dalam tutorial hari ini, saya akan meninjau instalasi dasar dan penggunaan Faker beserta kemampuannya. Seperti yang dikatakan Zaninotto:

"Apakah Anda perlu melakukan bootstrap database Anda, membuat dokumen XML yang bagus, mengisi ketekunan Anda untuk pengujian stres, atau menganonimkan data yang diambil dari layanan produksi, Faker adalah untuk Anda."

Dan, secara keseluruhan, ini memberikan berbagai kemampuan sederhana yang berguna untuk setiap cara pengujian.

Sedikit pengingat sebelum kita memulai, saya juga ikut serta dalam thread komentar di bawah ini. Saya sangat tertarik jika Anda memiliki pemikiran tambahan atau ingin menyarankan topik untuk tutorial di masa depan. Jika ada pertanyaan atau saran topik, silahkan posting di bawah ini. Anda juga bisa menghubungi saya di Twitter @reifman secara langsung.

Memulai

Menginstal Faker

Saya mulai dengan membuat pohon kode baru dan menambahkan fzaninotto/faker ke composer.json di bawah ini:

1
{
2
    "name": "Faker Demonstration",
3
    "description": "for Envato Tuts+",
4
    "keywords": ["faker","php","jeff reifman"],
5
    "homepage": "https://www.lookahead.io/",
6
    "type": "project",
7
    "license": "BSD-3-Clause",
8
    "minimum-stability": "stable",
9
    "require": {
10
        "php": ">=5.6.0",
11
        "fzaninotto/faker" : "*"
12
            }    
13
}

Kemudian, saya memperbarui composer:

1
$ composer update
2
Loading composer repositories with package information
3
Updating dependencies (including require-dev)
4
  - Installing fzaninotto/faker (v1.6.0)
5
    Loading from cache
6
7
Writing lock file
8
Generating autoload files

Faker is installed into the vendor directory. Jadi, kemudian saya memuat di bagian atas file index.php:

1
<?php
2
    // require the Faker autoloader

3
    require __DIR__ . '/vendor/autoload.php';

Selanjutnya, saya ingin mencoba beberapa skenario contoh sederhana dari menghasilkan data.

Contoh sederhana

Saya memperluas contoh Faker sebagai berikut dan menjalankannya dari http://localhost:8888/faker:

1
<?php
2
// require the Faker autoloader

3
require __DIR__ . '/vendor/autoload.php';
4
5
// use the factory to create a Faker\Generator instance

6
$faker = Faker\Factory::create();
7
8
// generate data by accessing properties

9
echo $faker->name;
10
  // 'Lucy Cechtelar';

11
  spacer();
12
echo $faker->address;
13
  // "426 Jordy Lodge

14
  // Cartwrightshire, SC 88120-6700"

15
  spacer();
16
echo $faker->text;
17
  // Dolores sit sint laboriosam dolorem culpa et autem. Beatae nam sunt fugit

18
  // et sit et mollitia sed.

19
  // Fuga deserunt tempora facere magni omnis. Omnis quia temporibus laudantium

20
  // sit minima sint.

21
  spacer();
22
23
  function spacer() {
24
    echo '<br />';
25
  }
26
?>

Dengan refresh cepat, saya disajikan dengan berbagai hasil seperti:

1
Ruthie Beier
2
37851 Gusikowski Flat Suite 594 Port Keithmouth, NM 06110
3
Reprehenderit eos suscipit sit modi architecto necessitatibus. Error maiores qui vero non omnis. Quaerat mollitia dolore deserunt quia quidem beatae.

Dan:

1
Darron Hessel
2
657 Elijah Lock Suite 202 Nitzschemouth, AZ 11166
3
Culpa dolorum quidem distinctio eius necessitatibus. Mollitia ut nostrum et ut quas veniam et. Unde iure molestiae aperiam fuga voluptatibus quo.

Dan:

1
Fredy Fadel MD
2
53328 Eldora Isle Apt. 634 West Eleanore, CA 95798-3025
3
Eligendi eos laudantium eveniet ad. Qui a voluptatibus est quia voluptatem. Dolorum pariatur quaerat nulla.

Faker memberikan janjinya.

Penyedia Default Faker

Semua metode penghasil data di Faker dibuat dari implementasi penyedia layanan. Inilah kode yang mendaftarkan penyedia default Faker—ini dilakukan untuk Anda:

1
<?php
2
$faker = new Faker\Generator();
3
$faker->addProvider(new Faker\Provider\en_US\Person($faker));
4
$faker->addProvider(new Faker\Provider\en_US\Address($faker));
5
$faker->addProvider(new Faker\Provider\en_US\PhoneNumber($faker));
6
$faker->addProvider(new Faker\Provider\en_US\Company($faker));
7
$faker->addProvider(new Faker\Provider\Lorem($faker));
8
$faker->addProvider(new Faker\Provider\Internet($faker));

Jadi di atas, ketika saya meminta address dari Faker, ia mencari semua penyedia metode yang sesuai, akhirnya menggunakan penyedia Address().

Anda juga dapat menulis penyedia layanan Anda sendiri atau menjelajah sejumlah ekstensi untuk Faker yang tersedia di web.

Pengubah

Faker juga menawarkan pengubah khusus untuk membantu pengujian Anda, seperti unique(), optional(), atau valid(). Misalnya, Anda bisa menghasilkan angka unik:

1
// unique() forces providers to return unique values

2
$values = array();
3
for ($i=0; $i < 10; $i++) {
4
  // get a random digit, but always a new one, to avoid duplicates

5
  $values []= $faker->unique()->randomDigit;
6
}
7
print_r($values);

Berikut adalah output dari nilai-nilai unik:

1
Array ( [0] => 7 [1] => 6 [2] => 0 [3] => 2 [4] => 5 [5] => 1 [6] => 8 [7] => 4 [8] => 9 [9] => 3 )

Jika Anda menggunakan metode optional(), beberapa nomor akan dikembalikan sebagai NULL seolah-olah pengguna tidak memasukkan field pada formulir Anda. Catatan: Saya tidak dapat menerapkan metode ini dengan benar.

Dengan valid(), Anda dapat mendaftarkan fungsi yang menentukan apakah data pengisi memenuhi persyaratan tertentu atau akan mengembalikan kesalahan atau menghasilkan pesan kesalahan pada form pengguna.

Menjelajahi Para Penyedia

Faker menawarkan serangkaian metode untuk menghasilkan data acak untuk aplikasi Anda:

  • Base: metode sederhana untuk huruf acak, angka, string yang diproses dan regex
  • Lorem Ipsum Text: teks Latin acak
  • Person: nama orang
  • Address: alamat surat-menyurat
  • Phone Number: nomor telepon
  • Company: nama perusahaan
  • Real Text: teks aktual yang ditulis oleh manusia vs string Latin yang tidak bermakna
  • Date and Time: tanggal dan waktu acak
  • Internet: email, domain, dll.
  • User Agent: string browser
  • Payment: kartu kredit dan string dan nomor SWIFT
  • Color: warna acak
  • File: ekstensi file, jenis file, dan nama file
  • Image: URL gambar pengisi dari berbagai jenis
  • Uuid: ID unik
  • Barcode: berbagai jenis barcode, mis. ISBN13
  • Miscellaneous: kode enkripsi, kode negara, dll.
  • Bias: bilangan acak dengan bias

Mari bereksperimen dengan beberapa dari metode ini.

Informasi Pembayaran

Kode di bawah ini menghasilkan sepuluh orang, informasi kartu kredit dan kode keamanan mereka:

1
$faker = Faker\Factory::create();
2
for ($i=0;$i<10;$i++) {
3
  $cc = $faker->creditCardDetails;
4
  $cc['security']=$faker->numberBetween(199,499);
5
  var_dump ($cc);spacer(2);
6
}

Berikut adalah beberapa output dari kode diatas:

Using Faker Generating Payment or Credit Card detailsUsing Faker Generating Payment or Credit Card detailsUsing Faker Generating Payment or Credit Card details

Gambar

Using Faker ImagesUsing Faker ImagesUsing Faker Images

Berikut adalah contoh sederhana dari pembuatan gambar:

1
$faker = Faker\Factory::create();
2
$width=320;
3
$height=240;
4
echo '<img src="'.$faker->imageUrl($width, $height).'"/>';

Tapi Anda juga bisa menghasilkan kucing:

1
echo '<img src="'.$faker->imageUrl($width, $height, 'cats', true, 'Faker', true) .'"/>';
Using Faker Images of CatsUsing Faker Images of CatsUsing Faker Images of Cats

Ini mungkin kemampuan menghasilkan kucing yang menaklukkan saya. Saya tidak sabar menunggu pencetakan tiga dimensi dan aktivasi jiwa untuk bekerja dengan hal seperti ini.

Data Internasionalisasi

Dengan kode di bawah ini, saya membuat sebuah tabel dengan empat kolom nama dari Prancis, Rusia, Amerika, dan China:

1
echo '<table>

2
<thead>

3
<th>French</th>

4
<th>Russian</th>

5
<th>English</th>

6
<th>Chinese</th>

7
</thead>

8
<tr><td>';
9
$faker = Faker\Factory::create('fr_FR'); // create a French faker

10
for ($i=0; $i < 10; $i++) {
11
  echo $faker->name;
12
  spacer();
13
}
14
spacer(2);
15
echo '</td><td>';
16
$faker = Faker\Factory::create('Ru_RU'); // create Russian

17
for ($i=0; $i < 10; $i++) {
18
  echo $faker->name;
19
  spacer();
20
}
21
spacer(2);
22
echo '</td><td>';
23
$faker = Faker\Factory::create('En_US'); // create English

24
for ($i=0; $i < 10; $i++) {
25
  echo $faker->name;
26
  spacer();
27
}
28
spacer(2);
29
echo '</td><td>';
30
$faker = Faker\Factory::create('zh_CN'); // create Chinese

31
for ($i=0; $i < 10; $i++) {
32
  echo $faker->name;
33
  spacer();
34
}
35
echo '</td></tr></table>';

Inilah hasilnya:

Using Faker International Capability - Tables of names from four countriesUsing Faker International Capability - Tables of names from four countriesUsing Faker International Capability - Tables of names from four countries

Membuat Alamat Email Palsu

Berikut contoh kode untuk menghasilkan 25 alamat email palsu dari penyedia layanan gratis seperti Gmail dan Yahoo:

1
$values = array();
2
for ($i=0; $i < 25; $i++) {
3
  // get a random digit, but also null sometimes

4
  $values []= $faker->freeEmail();
5
}
6
print_r($values);
7
exit;

Inilah hasil keluarannya:

Using Faker - 25 Free Email AddressesUsing Faker - 25 Free Email AddressesUsing Faker - 25 Free Email Addresses

Menghasilkan Dokumen XML

Faker menawarkan contoh bermanfaat untuk menghasilkan XML; namun, ini mengharuskan Anda bekerja dengan framework dan memiliki arsitektur tampilan:

1
<?php
2
require_once '/path/to/Faker/src/autoload.php';
3
$faker = Faker\Factory::create();
4
?>
5
<?xml version="1.0" encoding="UTF-8"?>
6
<contacts>
7
<?php for ($i=0; $i < 10; $i++): ?>
8
  <contact firstName="<?php echo $faker->firstName ?>" lastName="<?php echo $faker->lastName ?>" email="<?php echo $faker->email ?>"/>
9
    <phone number="<?php echo $faker->phoneNumber ?>"/>
10
<?php if ($faker->boolean(25)): ?>
11
    <birth date="<?php echo $faker->dateTimeThisCentury->format('Y-m-d') ?>" place="<?php echo $faker->city ?>"/>
12
<?php endif; ?>
13
    <address>
14
      <street><?php echo $faker->streetAddress ?></street>
15
      <city><?php echo $faker->city ?></city>
16
      <postcode><?php echo $faker->postcode ?></postcode>
17
      <state><?php echo $faker->state ?></state>
18
    </address>
19
    <company name="<?php echo $faker->company ?>" catchPhrase="<?php echo $faker->catchPhrase ?>">
20
<?php if ($faker->boolean(33)): ?>
21
      <offer><?php echo $faker->bs ?></offer>
22
<?php endif; ?>
23
<?php if ($faker->boolean(33)): ?>
24
      <director name="<?php echo $faker->name ?>" />
25
<?php endif; ?>
26
    </company>
27
<?php if ($faker->boolean(15)): ?>
28
    <details>
29
<![CDATA[
30
<?php echo $faker->text(400) ?>
31
]]>
32
    </details>
33
<?php endif; ?>
34
  </contact>
35
<?php endfor; ?>
36
</contacts>

Kesimpulannya

Saya harap ini merupakan pengenalan dasar bagi Anda untuk Faker, sebuah pustaka PHP open-source yang sangat berguna.

Jika Anda ingin membaca lebih lanjut, saya sarankan Konten Pengisi: Alat, Tip dan Contoh yang Dinamis (Envato Tuts+) dari Jim Nielsen, yang menyediakan perancang aplikasi untuk menghasilkan data. Dia menyarankan agar Anda bisa lebih efektif saat menerapkan data palsu untuk menciptakan pengalaman yang lebih realistis selama proses perancangan Anda.

Jika Anda ingin mengetahui saat tutorial Envato Tuts+ berikutnya tiba, ikuti saya @reifman di Twitter atau periksa halaman instruktur saya. Saat ini, saya sedang mengerjakan dua seri yang mungkin Anda dapat menghargainya:

  1. Seri Pemrograman Dengan Yii2
  2. Membangun Startup Anda dengan PHP tentang Meeting Planner; jadwalkan pertemuan pertama Anda di sana hari ini.

Link Terkait