Konversi basis data produksi menjadi data uji


15

Semakin dekat suatu tes dengan produksi, semakin baik ia dapat meniru perilaku produksi. Saya ingin menyalin cadangan basis data dari produksi ke lingkungan pengujian kami, tetapi apa yang harus saya ubah agar pengujian berfungsi, dan agar tidak mengganggu produksi atau secara tidak sengaja mengirim email kepada pelanggan nyata (selain mengatur web/%secure/base_urldengan url tes)?

Cara lain untuk memikirkan pertanyaan ini adalah dengan mempertimbangkan bagaimana menghasilkan sesuatu seperti Data Sampel Magento dari data produksi saya sendiri.

Jawaban:


8

1) DB Dump

Saat Anda melakukan ekspor, Anda hanya dapat mengekspor struktur untuk tabel berikut:

core_cache
core_cache_option
core_cache_tag
log_customer
log_quote
log_summary
log_summary_type
log_url
log_url_info
log_visitor
log_visitor_info
log_visitor_online
enterprise_logging_event
enterprise_logging_event_changes
index_event
index_process_event
report_event
report_viewed_product_index
dataflow_batch_export
dataflow_batch_import

Juga core_url_rewritedapat diimpor hanya dengan struktur dan menjalankan URL Katalog Menulis ulang indeks setelah impor, kecuali Anda membutuhkan semua catatan tersebut (untuk berbagai tes).

Anda juga dapat membersihkan gerobak yang ditinggalkan (petunjuk:) sales_flat_quote, Anda juga dapat menghapus pesanan jika Anda tidak membutuhkannya dan hanya menyimpan dalam jumlah terbatas

2) Pengaturan Konfigurasi

  • web / (tidak aman | aman) / base_url
  • hubungi alamat email
  • nonaktifkan email ( system/smtp/disable) sehingga Anda tidak mengirim email karena kesalahan

3) Anonimkan informasi pelanggan

  • Anda dapat menggunakan modul Anonygento untuk Magento
  • tulis skrip Anda sendiri untuk mengaburkan informasi pelanggan / pesanan penjualan / dll

4) Pengaturan Modul

  • Anda dapat mengaktifkan mode kotak pasir untuk modul pembayaran / pengiriman dan membuat pengaturan yang tepat
  • periksa modul yang digunakan untuk berbagai integrasi (menonaktifkan atau mengaturnya ke mode kotak pasir)

Untuk dev, mengabaikan konten untuk beberapa tabel tidak masalah. Untuk QA / Staging, Anda ingin semua tabel yang diisi mencerminkan produksi sedekat mungkin.
beeplogic

@FlorinelChris: Saya pikir pertanyaannya adalah tentang menyederhanakan migrasi db dan tidak membuatnya menjadi rumit :) Bu dengan cara apa pun, jawaban yang bagus!
user487772

@Tim bagian yang sulit adalah untuk meletakkan semua di atas dalam sebuah skrip ... menjalankannya setelah itu adalah solusi sederhana.
FlorinelChis

2

Kami menulis skrip untuk menangani dump DB untuk percabangan. Baca artikel ini .

Prinsip dasarnya adalah bahwa ia membaca local.xmluntuk mengambil kredensial DB, kemudian membuang data atas dasar itu. Membagi dump menjadi dua bagian, struktur saja dan kemudian data. Tetapi kuncinya adalah mempercepat proses pembuangan konvensional dengan melewatkan data yang tidak penting , dan yang paling penting mencegah setiap kunci tabel selama dump yang akan memblokir / menggantung situs langsung Anda.

Ketika Anda mendapatkan dump MySQL, Anda dapat mengubah URL dengan sangat mudah hanya dengan menggunakan sed

sed -i 's/www.mydomain.com/staging.mydomain.com/g' ./var/db.sql

Kemudian jalankan impor mysql ke DB baru Anda.

Jadi tanpa skrip, versi yang sangat mendasar akan terlihat seperti ini.

mysqldump -hHostname -uUsername LiveDbname -p > db.sql
sed -i 's/www.mydomain.com/staging.mydomain.com/g' db.sql
mysql -hHostname -uUsername DevDbname -p < db.sql

Tidak ada alasan sama sekali untuk menghapus file local.xml, atau menjalankan kembali installer jika Anda mengubah URL dalam DB dengan cara ini.

Seluruh proses percabangan tercakup dengan baik dalam Panduan GIT Magento kami . Ini adalah proses yang baik untuk membuat cabang pengembangan, tetapi tidak mengecilkan DB langsung dengan margin yang signifikan. Jadi tes tidak akan sepenuhnya sama dengan di situs langsung.

Jadi melakukan dump DB vanilla, dan ganti, impor DB sudah cukup untuk situs pementasan. Dan akan mencerminkan / mencocokkan situs langsung sedekat mungkin.

Dalam hal mencegah komunikasi dengan pelanggan - kami tidak pernah menganggapnya sebagai keharusan, karena kami selalu membuat akun dengan sengaja untuk pengujian, tidak pernah menggunakan pesanan pelanggan nyata untuk pengujian.


1

Salah satu opsi untuk masalah email adalah mengonfigurasi situs pengembangan Anda untuk mengalihkan SEMUA email kepada Anda. Menambahkan sedikit pikiran.

Bagaimana Anda melakukannya tergantung pada lingkungan Anda - bagi kami menambahkan ini ke vhost melakukan pekerjaan:

php_admin_value sendmail_path "/usr/sbin/sendmail -i -- xyphoid@example.com,coworker@example.com"

0

Tidak ada. Mengubah URL yang aman dan tidak aman sudah cukup.

Anda juga mungkin ingin menghilangkan log_*data tabel hanya untuk membuat dump Anda lebih ringan.


1
Tetapi seandainya saya memberi tahu sistem pengujian saya, saya mengirim pesanan - bukankah ia akan mengirim email ke pelanggan sebenarnya tentang hal itu?
kojiro

Satu-satunya item lain yang perlu diubah adalah informasi pendaftaran modul pihak ketiga jika Anda menjalankan kunci yang per domain, bukan hanya kunci aktivasi. Saya juga menyertakan alamat email sehingga transaksi pesanan pengujian masuk ke akun pengujian alih-alih meja pemesanan. Ketika Anda pertama kali memulai, aman dan tidak aman baseUrls adalah semua yang diperlukan. Jika Anda berencana sering melakukan ini, kemas semuanya ke dalam file sql dan impor setelah magento db Anda impor.
Fiasco Labs

@kojiro - Tidak jika Anda menyiapkan beberapa akun pengujian. Bicaralah dengan administrator email perusahaan Anda, minta mereka membuat alias email pasangan.
Fiasco Labs

@ Kegagalan Aku bingung. Dalam skenario ini saya baru saja mengimpor database Magento produksi dengan pelanggan nyata di dalamnya. Jika saya memproses pesanan nyata dengan pelanggan nyata, apa gunanya alias email?
kojiro

@ Kojiro Anda benar, setelah mengimpor kumpulan data dari produksi maka Anda perlu menggosok / memperbarui informasi pelanggan / sensitif. Ini bukan jawaban yang baik karena tidak mengatasi situasi dengan benar.
beeplogic

0

Coba ini, ini akan mengacak email pengguna untuk membantu masalah Anda dalam mengirimkan email langsung kepada pelanggan langsung dari lingkungan pengujian

UPDATE customer_entity SET email = REPLACE(email, '@', '-test@abcxyz123-')
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.