Blog

Test data: Một trong bốn thành phần quan trọng tạo nên test automation

Dữ liệu thử nghiệm (test data) quan trọng trong kiểm thử tự động (automation testing) cũng như kiểm thử thủ công (manual testing). Với việc cân nhắc kiểu dữ liệu ngay từ đầu cho test data: dữ liệu động hay dữ liệu tĩnh sẽ giúp test code rõ ràng, dễ dàng mở rộng và maintain về sau.

Cybozu Vietnam sử dụng framework WebdriverIO để thực hiện việc tự động hóa. Về tổng thể triển khai chúng ta sẽ đi qua 4 thành phần: test spec, test flow, page object và test data. Trong bài viết này chúng ta tìm hiểu về test data, sử dụng đồng thời dạng JSON object và Entity data model.

Nội dung trong bài này được viết dựa trên sản phẩm Garoon: phần mềm hỗ trợ làm việc nhóm, một trong các sản phẩm chủ lực của tập đoàn Cybozu. Bạn có thể thử trải nghiệm online để biết thêm về sản phẩm.

Test data là gì?

Để hiểu rõ về test data là gì, chúng ta sẽ cùng xem kịch bản test “Thêm một cuộc hẹn (appointment) vào lịch (schedule)“ thuộc module Schedule dưới đây:

[step 1] Login vào sản phẩm Garoon của Cybozu.

Tại step này bạn cần chuẩn bị test data là tài khoản sử dụng để login vào Garoon. Cụ thể ở đây là:

  • login name: “brown”
  • password: “brown”

→ Như vậy đến đây ta có thể hình dung rằng test data là hai giá trị dùng để đăng nhập Garoon, “cụ thể” và “xác định trước”

test data 1

[step 2] Truy cập vào module Schedule, click thêm appointment.

Tại step này bạn cần chuẩn bị test data là thông tin về appointment mà bạn muốn thêm vào. Cụ thể ở đây là:

  • Start-time: “Sat, April 17, 2021 8:00 AM”
  • End-time: “Sat, April 17, 2021 9:00 AM”
  • Subject: “Training automation“
  • Attendees: “Foster Brown, Sheldon Ricky“
  • Facilities: “Reception Room“
  • Notes: “This is an important meeting“

Sau khi điền test data, click Add button để hoàn thành việc thêm mới appointment.

test data 2

[step 3] Tại màn hình Appointment details, bạn cần xác thực (verify) lại appointment được thêm vào thông tin đúng hay không?

Tại step này bạn cần chuẩn bị data để verify. Cụ thể ở đây là:

  • Start-time: “Sat, April 17, 2021 8:00 AM”
  • End-time: “Sat, April 17, 2021 9:00 AM”
  • Subject: “Training automation“
  • Attendees: “Foster Brown, Sheldon Ricky“
  • Facilities: “Reception Room“
  • Notes: “This is an important meeting“

Trong trường hợp của test case này, data cho bước verify này giống với dữ liệu để thêm appointment ở step 2.

test data 3

Trên đây là một kịch bản test mà chúng tôi đã thực hiện automation tại Cybozu.

Test data chính là các giá trị đã được xác định cụ thể sử dụng trong test case, như: “brown“, “Sat, April 17, 2021 8:00 AM”, “Training automation“…

Bạn có thể thấy test data xuất hiện xuyên suốt quá trình thực hiện test: từ bước chuẩn bị đến bước verify.

Thử đặt bạn trong tình huống cần hiện thực automation cho kịch bản này, bạn sẽ bố trí các test data này như thế nào trong source code?

Tại đây, chúng tôi trình bày cách mà test data được triển khai tại Cybozu:

Công thức

Test data = Data-credential(*1) + Data-test-case(*2) [+ Data-system-settings(*3)] [+ Data-initialization(4*)]

Mô tả

*1: Data-credential là các dữ liệu về user account dùng để login vào sản phẩm test (Product under test).

*2: Data-test-case là các dữ liệu sử dụng trong từng bước thực hiện test case

*3: Data-system-settings. Đối với đặc thù của sản phẩm Garoon của Cybozu, đôi khi chúng tôi cần thay đổi những system setting trước khi chạy test case. Đây là những data phục vụ cho hành động này.

*4: Data-initialization. Data này không chỉ sử dụng ở một hoặc một vài test case, mà nó có thể dùng tất cả những test case có nhu cầu. Nó được khởi tạo tập trung trước khi tất cả test case được khởi chạy. Ví dụ: facility, attendees…. là những dữ liệu có thể sử dụng ở tất cả test case thuộc về Schedule module.

Tóm lại, tùy thuộc vào đặc thù của sản phẩm chúng ta thực hiện automation testing mà test data có thể được tổ chức theo những cách khác nhau. Việc tổ chức data tốt sẽ giúp cho việc thực thi kịch bản test diễn ra mạch lạc hơn.

Các loại cấu trúc của test data

Hiện tại, Cybozu sử dụng 2 loại cấu trúc dữ liệu để khởi tạo data:

JSON objects

Chúng ta dễ dàng khởi tạo data bằng cách truyền vào các cặp {"key": "value"}. Ví dụ dưới đây là data cho test case thêm vào Schedule một appointment bên trên:

Copy

{
  "Start-time": "Sat, April 17, 2021 8:00 AM",
  "End-time": "Sat, April 17, 2021 9:00 AM",
  "Subject": "Training automation",
  "Attendees": "Foster Brown, Sheldon Ricky",
  "Facilities": "Receiption Room",
  "Notes": "This is important meeting"
}

Như bạn đã thấy ở trên thì cách tạo data bằng JSON objects thực sự đơn giản. Bạn tạo ra bộ test data nhanh chóng và trực quan.

Tuy nhiên, với cách tạo data như thế này bạn dễ gặp phải tình trạng thiếu nhất quán trong source code. Ví dụ: hai người trong team thực hiện hai test case khác nhau đều liên quan đến appointment lần lượt là test case 1 và test case 2, hãy cùng xem test data họ chuẩn bị cho 2 test case như sau:

test data 4

JSON objects: mô hình dữ liệu linh động cao dẫn đến nhiều biến thể Chúng ta có thể khai báo JSON object không nghiêm ngặt, không quy chuẩn. Như ví dụ trên, bạn có thể thấy giá trị "key" ở hai file test data này khác nhau mặc dù mục đích trong chương trình là như nhau: SubjectTitleAttendeesParticipantFacilitiesRoom.

Cả hai JSON object này đều đáp ứng được việc khởi tạo test data cho test case và chương trình vẫn hoạt động bình thường trên cả hai tập giá trị. Tuy nhiên qua ví dụ này bạn có thể thấy sẽ có rất nhiều biến thể cho các giá trị key được sinh ra và dẫn đến những người tham gia vào project sau đó sẽ không biết nên sử dụng tập { "key": "value" } nào cho chính xác. Từ đó sẽ có những đoạn code xử lý riêng cho từng key khác nhau.

JSON objects: test data tái sử dụng không cao { “key”:"value" } lưu trữ dữ liệu tĩnh. Chúng ta sẽ cần liên tục đổi mới giá trị của JSON objects cho mỗi lần chạy nếu hệ thống không cho phép trùng dữ liệu trên sản phẩm test.

Ví dụ: Để sử dụng một cơ sở vật chất (facility) cho đăng ký một cuộc hẹn (appointment), chúng ta sẽ khởi tạo trước dữ liệu về facility trong hệ thống như sau:

Copy

{
  "name": "Soon Dong meeting room",
  "code": "SD-FAC",
  "note": "meeting room for 14 members"
}

Ở lần chạy đầu tiên, facility được tạo ra thành công. Tuy nhiên khi sử dụng JSON objects này để chạy lần thứ hai, hệ thống sẽ báo lỗi vì Garoon không cho phép thêm vào hai facility trùng mã "code": "SD-FAC".

Để giải quyết những điểm trừ này của JSON object, bạn có thể viết thêm source code xử lý cho việc tạo trùng "code" hoặc sử dụng một dạng cấu trúc khác để quy định test data, nghiêm ngặt và ràng buộc hơn đó là Entity data model.

Entity data model (EDM)

Copy

import {APPOINTMENT_TYPE} from "../ConstantItems";

export default class AppointmentBase {
...
    set startDay(value) {
        this._startDay = value;
    }

    get startDay() {
        return this._startDay;
    }

    set startMonth(value) {
        this._startMonth = value;
    }

    get startMonth() {
        return this._startMonth;
    }

    set startYear(value) {
        this._startYear = value;
    }

    get startYear() {
        return this._startYear;
    }
    ...
}

Đây là một ví dụ về EDM. Data được khởi tạo sẽ có các key cố định: startDaystartMonthstartYear… Nhờ vậy mà source code giữ được tính nhất quán. Để hiểu rõ hơn cơ chế tạo data từ EDM, bạn có thể tìm hiểu thêm qua bài viết về Data Generator.

Tuy nhiên EDM cũng có những hạn chế nhất định khi sử dụng: phức tạp hơn JSON objects và tốn kém thời gian ban đầu để triển khai.

Do đó, tùy theo từng trường hợp cụ thể bạn hãy lựa chọn JSON objects hay EDM để sử dụng cho thích hợp nhất.

Ví dụ cụ thể

Trong bài viết về Test spec, phần ví dụ cụ thể có đề cập đến test spec dành cho test case thêm mới một appointment. Test spec đó sử dụng những test data nào? Chúng ta cùng xem file test data dưới đây để biết thêm chi tiết:

acceptance/src/schedule/test-specs/added-new-appoiment/added-new-appointment.data.js

Copy

import DateTimeGenerator from "#e2e-core/src/shared/DateTimeGenerator";
import RegularAppointment from "#e2e-core/schedule/models/RegularAppointment";

const account = { username: "user1", password: "user1" };

const currentDate = new DateTimeGenerator().adjustDateTime({day: 0});
let currentHours = new Date().getHours();
const appointment = new RegularAppointment();

appointment.subject = `Cybozu automation testing workshop ${(new Date()).toString()}`;

appointment.startMonth = currentDate.getMonth();
appointment.startDay = currentDate.getDay();
appointment.startYear = currentDate.getYear();
appointment.startHour = (currentHours + 1).toString(); // e.g: 17
appointment.startMinute = '00'; // to emulate the end-user behavior

appointment.endMonth = currentDate.getMonth();
appointment.endDay = currentDate.getDay();
appointment.endYear = currentDate.getYear();
appointment.endHour = (currentHours + 2).toString();
appointment.endMinute = '00';

appointment.attendees = []; // ["user1","user2"];
appointment.facilities = [];
appointment.attachments = [];
appointment.visibility = 'Public';

appointment.notes = 'Please join the AWS on time';

const testData = { appointment, account };

export { testData as default }

File test data gồm khá nhiều thông tin để khai báo những data cần thiết. Bạn có thể nhận thấy test data được export ra gồm 2 thông tin chính:

const testData = { appointment, account };

account: *user account (*data *1), sử dụng để login vào hệ thống

appointment: *test data của test case (*data *2), cụ thể tại đây là những data dùng để tạo appointment

Hi vọng thông qua ví dụ cụ thể này các bạn đã hình dung rõ nét hơn về test data.

Một vài lưu ý

  • JSON object thích hợp cho trường hợp cần khởi tạo data nhanh chóng, không có nhu cầu sử dụng lại. EDM phù hợp cho việc tạo data phức tạp thường xuyên sử dụng lại trong nhiều test case.
  • Test data cho mỗi test case nên được làm sạch sau khi test case kết thúc để tránh việc đụng độ dữ liệu cho những lần chạy sau. Việc này sẽ giúp tăng tính ổn định cho chương trình của bạn.Copyafter('Remove test data', () => { new DeletingAppointment( testData.appointment ).deleteAppointmentOnDetailsPage(); });
  • Test data dành cho test case chỉ nên tạo ra trước thời điểm test case được chạy, phục vụ cho quá trình chạy test case đó. Không nên tạo sẵn tất cả test data cho các test case.
  • Trước khi chạy chương trình test, để đảm bảo tính ổn định testing site nên là một site “sạch”, không có các data rác.

Lời kết

Tính ổn định của chương trình test bị ảnh hưởng bởi nhiều yếu tố, trong đó có test data. Khi bạn làm việc đủ lâu với automation, bạn sẽ gặp phải một số test case lâu lâu mới fail một lần hay chỉ fail khi chạy chế độ song song. Một trong những yếu tố gây ra vấn đề này có thể là test data, hay cân nhắc xem liệu có sự đụng độ data nào xảy ra không khi gặp phải những tình huống này nhé.

Nói đến đây, các bạn có thể thấy được test data có vai trò như thế nào trong chương trình test rồi đó. Hãy luôn nhớ dọn dẹp data, một công việc đơn giản nhưng lại giúp chương trình test ổn định hơn rất nhiều.

Tham khảo thêm về Test Data:

Test Data là gì? Hướng dẫn thiết kế Test Data

Test Data cần biết những gì?

Leave a Reply

Your email address will not be published. Required fields are marked *

suarairama pestanada beritabandar rumahjurnal podiumnews dailyinfo wikiberita zonamusiktop musicpromote bengkelpintar liburanyuk jelajahhijau carimobilindonesia jalanjalan-indonesia otomotifmotorindo ngobrol olahraga mabar dapurkuliner radarbandung indosiar radarjawa medianews infowarkop kalbarnews ketapangnews beritabumi kabarsantai outfit faktagosip beritagram lagupopuler seputardigital updatecepat marihidupsehat baliutama hotviralnews cctvjalanan beritajalan beritapembangunan pontianaknews monitorberita koronovirus museros iklanjualbeli festajunina capoeiravadiacao georgegordonfirstnation 1reservoir revisednews

Mega Sicbo Membuka Peluang Kemenangan Baccarat yang Membaca Pola dari Dalam Angka Pelajari Skema Acak RTP Bonanza Menyulut Energi Pola Baccarat Menjadi Bahasa Alam Semesta Aztec Gems Membuka Gerbang Pola Dan RTP Baccarat Menyelinap Dalam Irama Kuno Cara Mengartikan Pola Sugar Rush Bergetar Saat Baccarat Menyalakan Jalur Kejayaan Baru Mahjong Wins 3 dan Baccarat: Pola Hidup dan RTP Baru Menyatukan Satu Irama Ciptakan Seribu Kemungkinan Cara Kerja Baccarat Online Menyusun Pola Bonanza Sebagai Bahasa Baru Menuju Kemenangan Fakta Menarik Mega Sicbo Menulis Sejarah Pola Baru Dalam Dunia Baccarat Digital Mahjong Wins 3 Tentang RTP dan Pola Baccarat Sebuah Dialog Membuka Waktu Keberuntungan Mengenali Pola Buatan Sugar Rush Membuka Tabir RTP yang Terpendam Dalam Strategi Baccarat Aztec Gems Menentukan Dinamika Baccarat dan Pgsoft Tentang Ketepatan Pola dan Keseimbangan RTP Digital Fenomena Baccarat Berbisik ke Bonanza, RTP Menari Sambil Melempar Pola ke Dimensi Digital Mengenali Mega Sicbo Mengguncang Dunia, Pola Baccarat Meluncur Bersamaan RTP Berubah Jadi Aura Cara Sugar Rush Meningkatkan Popularitas RTP dan Pola Memperkuat Kartu Baccarat Aztec Gems: Cara Menjaga Keseimbangan Pola Baccarat Hingga RTP Menyala Tanpa Alasan Mahjong Wins 3: Trik Memanggil Black Scatter Menjawab Kesunyian Game Baccarat Digital Dari Mitos ke Fakta Pola Terbaik Bonanza dan Baccarat Casino yang Sebenarnya Langkah Tepat Menangkap Bayangan Mahjong Ways 3 Dengan Energi Baccarat Menyentuh Dimensi Peluang Eksplorasi Jejak Digital Black Scatter Menelusuri Pola Rahasia yang Berdenyut Dalam Kartu Baccarat Teknik Menjaga Konsistensi Andar Bahar Casino Melawan Intuisi Fokus Pemain Baccarat Online Baccarat Dalam Cermin RTP Sugar Rush Mencari Pantulan Pola Menuntun Takdir Kemenangan Mengatur Disiplin Menggunakan Pola Baccarat Menjadi Navigator Antara Sugar Rush dan Dunia Digital Cara Penafsiran RTP Mahjong Wins 3 Mengurai Pola Baru Dimensi Baccarat Online Mega Sicbo, Baccarat, dan Frekuensi RTP: Tiga Pola Elemen yang Menentukan Arah Kemenangan Teknik Bonanza dan Aliran Kartu Baccarat Memaknai Pola RTP di Tengah Arus Digital Semakin Maju Aztec Gems Menulis Ulang Pola dan Hukum Penggunaan RTP yang Sering Dipakai Pemain Baccarat Rahasia Baccarat di Balik Batu Aztec Gems Mengatur Pola Tersembunyi dan RTP Simbol Tua Analisa Gelombang Pola Baccarat Dalam RTP Sugar Rush Menemukan Ritme Menang Antara Frekuensi Penemuan Baru Jejak RTP Dalam Mega Sicbo Saat Pola Baccarat Menulis Ulang Hukum Keberuntungan Mahjong Wins 3: Berbicara Lewat Bahasa Baccarat Mengubah Keberuntungan ke Kemenangan Baru Cara Bonanza Menyulam RTP Bersama Baccarat Menciptakan Pola Energi Baru Dunia Digital Rahasia Mega Sicbo Menyapa Baccarat Menciptakan Dadu dan Kartu Menemukan Irama Yang Sama Aztec Gems Menggetarkan Dunia Baccarat Melalui Jejak Simbol Menuju Meja Digital Modern Popularitas Bonanza Sebagai Cermin Yang Menyatukan Pola, RTP, dan Dinamika Berpikir Pemain Baccarat Taktik Perhitungan RTP PG Soft Membentuk Pola Baru Mahjong Wins 3 Membuka Skema Kartu Baccarat Pelajari Teknik Baccarat Dari Pola Sugar Rush Hasilkan Frekuensi Manis Dalam Algoritma Kemenangan Aztec Gems Membuka Dimensi RTP Terbaru, Pola Baccarat Muncul Sebagai Kode Energi Digital Cara Memanfaatkan RTP Mahjong Wins 3 Menarik Gelombang Pola Lurus Baccarat Menuju Titik Terang Misteri Pola Sugar Rush Ungkap Analisa Fluktuasi RTP Menyatu Dengan Napas Pemain Baccarat Online Pakar Digital Temukan Hubungan Spesial Antara RTP Starlight Princess dan Kartu Baccarat Bernomor Kembar Rahasia Sinkronisasi RTP dan Pola Bonanza Mengarahkan Baccarat ke Frekuensi Kemenangan Baru Membaca Pola Starlight Princess Mengirim “Getaran” Rtp Misterius Baccarat Ikut Berdetak Pelajari Cara RTP Aztec Gems Membuat Pola Baccarat Menyusun Pola Spiral Tak Terlihat Mata Perubahan RTP Mahjong Ways 3 Menjadi Stabil Saat Pola Baccarat Membentuk Formasi Tersembunyi Teknik Merancang Pola Sugar Rush Membuat RTP Baccarat Menjadi Jejak Sukses di Ruang Digital Kenali Tanda Black Scatter Memanipulasi Aliran Data, Pola Baccarat Ikut Terlempar Ke Dimensi Lain Pahami Pola Mahjong Ways Mengirim Sinyal RTP Rahasia Saat Kartu Baccarat Muncul Dua Kali Pakar RTP Digital Temukan Keterkaitan Pola Aztec Gems Dengan Lonjakan Emosi Baccarat Cara Mengubah Frekuensi RTP Sugar Rush Tertengkap Stabil Lewat Pola Baccarat Online Fenomena RTP Digital Baccarat Naik Turun Sesuai Nada Suara Starlight Princess Dalam Layar Analis Pola Bonanza Menciptakan “Zona Hening” di Putaran Baccarat Selama Spin Tengah Malam Pahami Status Pola Mahjong Ways 3 Mengguncang RTP Kehidupan Dunia Baccarat Online Memahami Fenomena Psiko-Digital RTP Bonanza Bergerak Lambat Tapi Pola Baccarat Naik Tajam Transisi Pola Sugar Rush Mengatur RTP Baccarat Layaknya Dirigen Orkestra Digital Aztec Gems dan Pola RTP Terbukti Bisa Meramal Cuaca Digital Sebelum Spin Baccarat Dimulai Penemuan RTP Mahjong Wins 3 Tiba-tiba Naik Saat Pola Pikir Baccarat Menyusun “Simbol Rahasia” Pemahaman Pola dan RTP Bonanza Menyatu Dengan Kartu Baccarat Masuk Era Kejayaan Digital Pakar Mahjong Ways Menjelaskan Pola RTP Tersinkron Pada Frekuensi Baccarat Saat Scatter Turun Rahasia RTP Sugar Rush Terpantau “Histeris” Setelah Pola Baccarat Menyusun Kombinasi Simbol Langka Cara Mengatur Konsep Black Scatter Menggunakan Strategi Baru Pemain Baccarat Online Pelajari Pola Pikir Pemain Mahjong Wins yang Bertumbuh Ketika Mengenali Kartu Baccarat Rahasia Cara Filter RTP dan Pola Bonanza Lewat Taktik Baccarat Penghantar Keberuntungan Memahami Solusi Cerdas Mahjong Ways 3 Dengan Ilmu Mahal Pemain Baccarat Trik Menang Putaran Berikutnya Aztec Gems: Pelajari Respon Cepat Terhadap Perubahan RTP dan Pola Tanpa Risiko di Baccarat Cara Tepat Penggunaan RTP Starlight Princess dan Pola Baccarat Merubah Keberuntungan ke Kemenangan Pelajari Langkah Cerdas PG Soft Menggunakan Strategi Baccarat Casino Saat Putaran Bergerak Lambat Pakar Mahjong: Pendalaman RTP dan Pola Wajib Digunakan Pemain Baru Baccarat Menuju Kejayaan Perhitungan Spin Bonanza Secara Matematis Bersama Pola dan RTP Pilihan Pada Simulasi Baccarat Pahami Taktik Evaluasi Putaran Sulit Scatter Dengan RTP dan Pola Jitu Sang Pemain Baccarat Teknik Menjaga Keseimbangan RTP Naik Turun Nilai Spin Pragmatic PG Soft Terinspirasi Casino Baccarat Pelajari Cara Meraih Cepat Black Scatter Menggunakan Pola dan Analisis Tiga Kartu Baccarat Pahami Cara Bonanza Mendaur Pola dan RTP Berdampingan Dengan Struktur Meja Baccarat Teknik Mengolah RTP Lama Mahjong Ways Dengan Keseimbangan Mental Pemain Baccarat Casino Jadi Kemenangan Baru Mahjong Wins 3: Langkah Cerdas Mengatur Irama Lewat Analisis Data Ahli Baccarat Profesional Trik Belajar Cepat Membaca RTP dan Pola Baru Fokus Pada Sugar Rush dan Baccarat Rahasia Dunia Aztec Gems Dengan Mengenali Konsep Pola Analitik Pemain Baccarat Casino Pelajari Pendekatan Mahjong Wins 3 di Meja Baccarat Mengenal Hikmah Kehidupan Teknik Menahan Tempo Sugar Rush Pada Putaran Kosong Baccarat Berskala RTP Terbaru Analisa Awal Bermain Baccarat Melalui Bocoran RTP dan Pola Mahjong SUHUBET Cara Menentukan Nilai Pasang PG Soft Melewati Fase Pola Darurat Putaran Baccarat Pahami Pola Cerdas Lewat Potret Black Scatter yang Berjatuhan di Meja Baccarat Online Pahami Cara Bonanza Mendaur Pola dan RTP Berdampingan Dengan Struktur Meja Baccarat Teknik Mengolah RTP Lama Mahjong Ways Dengan Keseimbangan Mental Pemain Baccarat Casino Jadi Kemenangan Baru Mahjong Wins 3: Langkah Cerdas Mengatur Irama Lewat Analisis Data Ahli Baccarat Profesional Trik Belajar Cepat Membaca RTP dan Pola Baru Fokus Pada Sugar Rush dan Baccarat Rahasia Dunia Aztec Gems Dengan Mengenali Konsep Pola Analitik Pemain Baccarat Casino Perkembangan Teknik Perputaran Mahjong Dengan Bermodalkan RTP SUHUBET Yang Sedang Hijau, Bocoran Dari Orang Dalam Kronologi Perputaran Mahjong Yang Menghebohkan, Fakta RTP Suhubet Yang Membuat Banyak Pemain Maxwin Perkembangan Teknologi Ai Membuat SUHUBET Dalam Membuat Pola RTP Mahjong Dengan Analisis Data Akurat Dan Selalu Membuahkan Hasil Suara Dentuman Keras Dari Cafe Ternama, Ternyata Dari Perputaran Mahjong Menghasilkan Pengali Besar Di Suhubet Telah Terbukti RTP Mahjong Di Suhubet Sudah Di Akui Sisi Oleh Pemain Dunia, Cek Sekarang Pola Perputaran Terbaru Dan Paling Top Mahjong VS Gates of Olympus Pada RTP Terbaru Hasil Paling Baru Dari Analisis Data Menggunakan AI Panduan Lengkap Strategi Cerdas Pada Mahjong Yang Membuahkan Hasil Maximal Menggunakan Pola RTP Terbaru Literasi Pola Dari Panduan Terbaru Terhadap Update Mahjong Ways Agar Perputaran Tidak Berhenti Pola Sinkronisasi Antara Wild Dan Scatter Mahjong Panduan Fusion Kreatif Pada RTP Yang Akurat Sukirman Membagikan Pengalaman Seru Mendapatkan 410Juta Pada Mahjong Menggunakan Pola Bocoran RTP Suhubet Strategi Rahasia Terlarang Akhirnya Terbongkar, Taktik Terbaru SUHUBET Dalam RTP Mahjong Paling Akurat Teknik Mahasiswa Membuat Pola Terbaru Menggunakan RTP Suhubet Pada Mahjong Dengan Fusion Wild Dan Spin Turbo Prediksi Pola SUHUBET Hari Ini Bocor Kombinasi Campuran Dragon Tiger dan Mahjong Jadi Trend Baru Pencari Cuan Kisah Nyata Pemain SUHUBET Dari Modal 20 Ribu Jadi 20 Juta Berkat Pola Buyspin Tersembunyi Data Rahasia RTP Bocor! Admin SUHUBET Ungkap Pola Campuran Mahjong dan Gates of Olympus yang Jarang Diketahui Mahasiswa Lulusan Teknik Membuat Pola Perputaran Mahjong Pada SUHUBET Dengan Bermodalkan Analisa Data Tren Terbaru Dengan Pendapatan Pengali X500 Pada Starlight Princess Menggunakan Pola Perputaran SUHUBET Tren Perputaran Terbaru Menggunakan Algoritma Fusion Dari Mahjong Dan Juga Sugar Rush Pada RTP SUHUBET Kemunculkan Scatter Mahjong Langka Pada Pola Putaran Menggunakan RTP Suhubet Rahasia Terbongkar Cara Perputaran Mahjong Pada SUHUBET Untuk Para Pemain Pro dan Baru Dengan Penghasilkan 320Juta Eksperimen Pola Olympus Terbaru di SUHUBET Teknik Buyspin Rahasia yang Bikin Zeus Turun Petir X500 Data Rahasia RTP Bocor Admin SUHUBET Ungkap Pola Campuran Mahjong dan Gates of Olympus yang Jarang Diketahui Riset Pola Gila Malam Ini Kombinasi Scatter dan Fusion Wild di SUHUBET Jadi Mesin Cuan Tak Terbendung RTP Meroket Tanpa Peringatan Teknik Perputaran Aneh di SUHUBET Bikin Akun Baru Langsung Cair Zeus dan Kakek Merah Sepakat Bersamaan Bocoran RTP SUHUBET Bikin Dunia Slot Heboh Malam Ini Pola Terbaru Bocoran Data Rahasia RTP Slotsensa Pada Permainan Mahjong Dengan Taktik Strategis Strategi Perputaran Mahjong Menggali Pengali Dengan Taktik Cerdas di Slotsensa, RTP Mahjong Hasil Analisis Data Paling Akurat Taktik Teori Spin Kreatif Dengan Metode RTP Slotsensa, Husman Mendapatkan Pencerahan Ilmu Perputaran Mahjong Terbaru Taktik Terbaru Pola Kreatif Dari Fusion Wild Dan Scatter Pada Mahjong Di Slotsensa Menghasilkan RTP Tertinggi Tahun 2025 RTP Mahjong Dan Kakek Petir Sedang Berwarna Hijau, Simak Dan Pahami Pola Perputaran Slotsensa Agar Menghasilkan Jangan Terlewatkan Pola RTP Kakek Petir Zeus di Buku303, Hasil Analisis Data Perputaran ProPlayer Olympus Taktik Rahasia Paling Mudah Kuasai Pola Dan Strategi Jitu Dalam Permainan Kakek Petir di RTP Buku303 Teknik Bacarat Dari Pemain Pro Asal China Yang Jarang Diketahui, Pahami Pola Dan Analsisi Data Terbaru Yang di Klaim Anti Boncos Strategi Pasti Unggul Pada Permainan Mahjong, Cek Sekarang Jangan Sampai Terlewat RTP Sedang Hijau Di BUKU303 Panduan Hasil Analisis Ritme Perputaran Mahjong, Pahami Sekarang Dan Raih Maxwin di BUKU303 Pengertian Mahjong Pada RTP BUKU303 Yang Sedang Berwarnai Hijau Membuahkan Keberhasilan Besar Pemahaman RTP Buku303 Pada Pola Perputaran Sweet Bonanza Yang Mendapatkan Pecahan Tak Terhenti Perputaran Kreatif Dengan Gabungan Wild Dan Scatter Bersamaan Pada RTP Mahjong Buku303 Penguasaan Pola Terbaru Mahjong Aktifasi Wild Dan Scatter Beruntun Pada Teknik RTP Buku303 Teknik Harian Cuan, RTP BUKU303 Dengan Pencatatan Pola Mahjong Paling Ampuh Dan Akurat Cek Sekarang Juga Rahasia Terungkap Perputaran Kakek Petir Zeus, Ungkapan RTP Slotsensa Pada Dini Hari Memberikan Profit Menjaga Modal Dengan Maximal, Taktik Perputaran Pada RTP Slotsensa Membuat Permainan Cuan Pada Baccarat Online Bukan Fengsui Ataupun Hoki, RTP Mahjong Slotsensa Menggunakan Hasil Data Analisis Akurat Dalam Pembentukan Pola Pentingnya Membaca Pola Mahjong Secara Manual, RTP Slotsensa Menghadirkan Persentase Tinggi Hasil Analisis Data Setiap Hari Strategi Teruji Bocoran Dari Orang Dalam Slotsensa Dengan Hasil RTP Mahjong Yang Selalu Membuahkan Hasil Maxwin RTP Mahjong Dan Kakek Petir Sedang Berwarna Hijau, Simak Dan Pahami Pola Perputaran Slotsensa Agar Menghasilkan Panduan Belajar Membaca Pola RTP Mahjong Dengan Basis Ai di Slotsensa, Jangan Sampai Terlewatkan Peluang Terbaru Menghindari Kesalahan Umum Dalam Membaca Pola Mahjong, Kuasai Dan Pahami RTP Slotsensa Sebelum Terlambat Memahami Peran RTP Sebagai Peta Pola Perputaran Mahjong, Bantuan Terbaru Ai Pada Slotsensa Mempermudah Membaca RTP Taktik Pada Baccarat Online Dengan Bocoran Dari Pemain Pro di Slotsensa, Hasil Analisis Permainan Baccarat Online Terbaru Eksperimen Pola Zeus Berhasil Sukses! Petir Fusion Wild Gates of Olympus Muncul Beruntun dan Pecah Rekor Pengali RTP Gates of Olympus Tiba-Tiba Hijau! Pola Aneh Ini Bikin Banyak Pemain Ngaku Gak Bisa Berhenti Spin Zeus Turun Tangan Sendiri! Pola Baru Gates of Olympus SLOTSENSA Ini Bikin Kemenangan Datang Bertubi-tubi Suara Petir Bikin Kaget! Pola Gates of Olympus SLOTSENSA Ini Bikin Semua Pemain Auto Cair Dalam Hitungan Detik Member Senior Ungkap Pola Baru Gates of Olympus Yang Katanya Selalu Turun Scatter Di Putaran Ke-17 Awalnya Cuma Iseng Main Mahjong, Tapi Setelah Pakai Pola BUKU303 Ini, Akunnya Langsung Meledak Cuan! Pemain Lama Kaget! Pola RTP Baru di BUKU303 Ini Ubah Peruntungan Jadi Deretan Pengali Berturut-turut Dari Modal Receh Jadi Jutaan! Cerita Nyata Pemain yang Ikuti Pola Baru RTP Mahjong BUKU303 Eksperimen Pola RTP Mahjong BUKU303 yang Sempat Dirahasiakan Kini Bocor, Banyak Pemain Lupa Log Out! Zeus Ngamuk Malam Ini! RTP Gates of Olympus Naik Drastis, Pemain BUKU303 Panen Petir Tanpa Ampun Sesepuh Mahjong Membagikan Pola Taktik Terbaru Strategi Rahasia Dengan Peluang Cuan Paling Tinggi Tutorial Terbaru Mahjong Panduan Paling Hoki Pada Tahun 2025 Dengan Pola Kreatif Masa Kini Panduan Terbaru Sweet Bonanza X Mahjong Black Scatter Menggunakan Fusion Pola Terbaru Dari RTP Akurat Redenominasi Pola Mahjong Dengan Total Perputaran 12X Saja Sudah Turun Scatter Tanpa Henti Merespon Wild Dengan Cara Merangsang Scatter Mahjong Dengan Teknik Perputaran Terbaru Dengan RTP Ajaib Paling Akurat Rumus Jitu Menghitung Perputaran Modal Mahjong Dengan Teknik Spin Ala Slotsensa Yang Di Klaim Pasti Menghasilkan Kabar Baik Bagi Pengguna Mahjong, Saat Ini SUHUBET Sedang Memberikan Pola Terbaik Pada RTP Akurat Hasil Analisis Wild Dan Scatter Dalam Pola Baru RTP Mahjong Suhubet Paling Akurat Pembaharuan Pola Baru RTP Mahjong Suhubet Dengan Data Kemenangan Menghasilkan Perputaran Terbaik Analisis Data Mahjong Dari Admin Suhubet, Bocoran Perputaran Yang Dibagikan Melalui RTP Akurat Terbaru Cara Terbaik Tanpa Gagal Dalam Penggunakan RTP Mahjong Di Suhubet, Pola Bocoran Orang Dalam Detik-detik Pola Fusion Wild SUHUBET Muncul, Banyak Pemain Mahjong Langsung Teriak Maxwin di Grup Telegram Admin Bocorkan Pola Mahjong yang Dipakai Pemain Profesional, Cuma di SUHUBET yang Bisa Sebegitu Akuratnya Rahasia Pola Tersembunyi Mahjong SUHUBET Terbongkar! Perputaran RTP Malam Ini Bikin Member Auto Cair RTP Mahjong SUHUBET Naik Gila-Gilaan! Pola Baru Ini Katanya Bisa Pecah X500 Tanpa Scatter Data Bocoran SUHUBET Malam Ini Bikin Heboh: Cek Sekarang Pola Mahjong Rahasia yang Cuma Dipakai Segelintir Member VIP Bocoran Perputaran RTP Mahjong Dari Tim Teknis SUHUBET Hasil Analisa Data Terbaru Dan Strategi Berbagai User Hasil Terbaru Analisis RTP Membuat Pola Terbaru Gabungan Dari PGSOFT Dan PRAGMATIC di Mahjong Dan Olympus Keseimbangan Modal Dan Pola Perputaran Mahjong Yang Di Bagikan SUHUBET di RTP Di Kalim Hanya Menggunakan 50K Cek RTP Panduan Terbaru Mahjong Menentukan Frekuensi Perputaran Dan Jam Paling Mutu Untuk Bermain di SUHUBET Pola Mahjong Terbaru Membuat Peluang Munculnya Scatter Dan Wild Meningkat Secara Signifikan di SUHUBET Grafis Yang Memukau Desainer SUHUBET Mengubah Mahjong Dengan Tampilan Baru Pada RTP Akuratnya TakTik Terbaru Pembacaan Pola Sweet Bonanza Dengan Mengadopsi Dari Perputaran Baccarat Bocoran Data Dari SUHUBET Pahami Terbaru Etika Menahan Emosi Dalam Perputaran Mahjong Dan Juga Baccarat Adalah Strategi Paling Jitu Di SUHUBET Strategi Paling Mantap Dalam Mengelola Modal Agar Perputaran Mahjong Beserta SweetBonanza Tidak Terputus Pada RTP SUHUBET Kesadaran Stop Loss Atau Yang Dikenal Taktik Anti Boncos Pada Permainan Mahjong Selalu Membuat Pemain Tidak Pernah Kalah Pada RTP Suhubet Studi Pelajaran Terbaru Dengan Memilih Pola Anti Modal Turun Pada Mahjong Dan Juga Baccarat Yang Dibagikan Oleh Admin Pemahaman Mendalam Pada Pola RTP Mahjong, Cara Terbaru Yang Diajarkan Admin SUHUBET Agar Selalu Menghasilkan Pilihan Cerdas: 3 Pola RTP Mahjong Khusus Untuk Pagi-Siang-Malam Pada SUHUBET, Bocoran Data Rahasia Trick Terbaru Mahjong Ways Dengan Terobosan Fusion Wild Agar Setiap Putaran Memberikan Pengalaman Seru Di Suhubet Bermain Santai Dan Matikan Quick Spin Membuat Perputaran Modal Mahjong Menjadi Stabil Menggunakan Pola Ini Jangan Salah Baca Pola Mahjong, Suhubet Sekarang Menggunakan Ai Untuk Membantu Membuat Teknik Putaran Setiap Userid Taktik Mudah Pahami Pola Perputaran Mahjong Dengan Cara Menghitung Kreatif Dan Fusion Wild Dan Scatter di Suhubet Trik Terbaru Berdasarkan Pola Terbaru, Teknik Menang Dalam Mahjong Ways 2 Tercatat Sangat Mudah Trik Analisis Data dan Pola Ritmis: Pendekatan Kreatif 50-20-30 dari Riset SUHUBET dalam Membaca Sistem Mahjong Digital Teknik Mahjong Perputaran Rahasia Yang Terlarang Di Bocorkan Jasmin Pada RTP Suhubet Dengan Pola 40-25-30 Pada Setiap Perputarannya Scatter Tak Berhenti, RTP Suhubet Memberikan Pola Mahjong Terbaik Di Klaim Suhunya Dalam Putaran Mahjong Ways Taktik Terbaru Pada Bonanza Dengan Teknik Perputaran RTP Suhubet, Jangan Sampai Salah Pilih RTP Sedang Hijau Jangan Terlewatkan Taktik Peputaran Baccarat Online Di Suhubet Dengan Disuguhkannya Ai Untuk Membantu Membaca Pola Bukan Cuman Pola, Tetapi RTP SUHUBET Menyediakan Jam Terbaru Turunya X5000 Pada Spaceman Tunggu Apalagi Jangan Terlewatkan Jamnya Taktik Perputaran Mahjong Dengan Inspirasi RTP Suhubet Pada Baccarat Online Menggunakan Cara Safety Bet Baccarat dan Mega Sicbo: Pola RTP Tertinggi untuk Menang Besar di Game Online dengan Aztec Gems Mega Sicbo dan Baccarat, Game Online yang Lagi Ngetren! Pola RTP Terbaik untuk Kemenangan Maksimal Raih Cuan Setiap Hari di Mega Sicbo dan Baccarat! Pelajari Pola RTP di Game Online Mahjong Mega Sicbo dan Baccarat Menghadirkan Pola RTP Terbaru! Temukan Cara Menang di Mahjong Wins 3 Game Online Mega Sicbo dan Baccarat: Pola RTP untuk Kemenangan Maksimal di Aztec Temple Pola RTP di Mega Sicbo dan Baccarat: Cara Menang Besar di Game Online dengan Mahjong Wins Baccarat dan Mega Sicbo: Pola RTP Tertinggi di Game Online yang Menjamin Kemenangan di Mahjong Baccarat dan Mega Sicbo: Game Online Seru dengan Pola RTP Terbaik di Mahjong Ways Baccarat dan Mega Sicbo, Dua Game Online Paling Menguntungkan! Pelajari Pola RTP di Mahjong Ways Mahjong Ways 3 Kembali Bikin Heboh Pemain Pemula Raih 870 Juta Cuma Dalam 12 Menit Bermain PGSoft Siapkan Game Bertema Anime Bocoran Gambar Karakter Utama Bikin Fans Tak Sabar Pola Spin Wild West Gold Viral di Sosmed Pemain Klaim Pola Baru Bisa Gandakan Scatter Secara Acak Gates of Olympus Cetak JP 15 Miliar Pemain Asal Bandung Ungkap Awalnya Hanya Coba Baccarat Biasa Pola Wild West Gold Viral Pemain Klaim Pola Ini Muncul Setelah Bermain Baccarat Beberapa Putaran Great Rhino Deluxe Pecahkan Rekor Pola Spin Disebut Cocok Dipadukan dengan Strategi Baccarat Malam Hari Starlight Princess Bikin Heboh Pemain Raih Mega Win 2 Miliar Setelah Lanjut Main Baccarat di Lobi Sama Game Baru PGSoft Bertema Samurai Bocor Diduga Akan Terhubung dengan Mode Baccarat Versi Asia Zeus Kembali Murka di Gates of Olympus Pemain Ungkap Dapat Multiplier 500x Usai Menutup Sesi Baccarat Buffalo King Megaways Naik Daun Bocoran Fitur Baru Disebut Terinspirasi dari Algoritma Baccarat Online Ahli Ungkap Dinamika Poin Antara Mega Sicbo dan Baccarat Dalam Sistem RTP Terbaru PG Soft Pola Pikir Bertumbuh Pemain Profesional Dalam Mengelola Tempo Mega Sicbo dan Baccarat Disiplin dan Evaluasi Jadi Kunci Pemain Profesional Dalam Menjaga Pola Mega Sicbo dan Baccarat Mega Sicbo Kini Jadi Laboratorium Pola Buatan Untuk Mengukur Kendali Dan Disiplin Pemain Baccarat Pola Buatan Baru PG Soft Disebut Menjadi Penopang Konsistensi RTP Baccarat dan Mega Sicbo Konsep Pola Bertumbuh Dalam Baccarat Kini Diadopsi Oleh Desain Sistem Mega Sicbo PG Soft Mengenali Potensi Black Scatter Dalam Pola Baccarat dan Mega Sicbo Versi Update PG Soft PG Soft Rilis Pembaruan yang Menyatukan Pola Mega Sicbo dan Baccarat Dalam Sistem Adaptif Ahli Riset RTP Ungkap Kinerja Mega Sicbo dan Baccarat Meningkat Saat Pola Data Mengendur Pola Mega Sicbo dan Baccarat Jadi Indikator Stabilitas RTP Dalam Sistem PG Soft Modern Mega Sicbo Bergetar, RTP Baccarat Memantulkan Cahaya Dari Server yang Tak Tidur RTP Baccarat Berubah Jadi Irama Kosmik Saat Mahjong Ways 2 Memicu Gelombang Baru Dunia Digital Gempar, Pola Baccarat dan Mega Sicbo Disebut Punya Frekuensi Sama Dengan Data Alam Mega Sicbo dan Baccarat Menyatu Dalam Desain Futuristik PG Soft, Menjadi “Jantung” RTP Baru Mahjong Wins 3 Beresonansi Dengan Baccarat, RTP Menari di Antara Dua Dunia Saat Pola Mahjong Ways 2 Mengendur, RTP Baccarat Justru Memuncak Seperti Pasang Laut repository.tdjpublisher.com