الاختبارُ على بياناتٍ حقيقيّة يجد مشكلاتٍ لا تجدها بياناتُ الاختبار أبدًا. وهو يضع أيضًا كلَّ اسمِ عميلٍ وعنوانه وطلبه على خادمٍ يُحمى بعنايةٍ أقلّ — فالنسخةُ تُصنَع عن قصد، لا بنسخةٍ خامٍ صريحة.

ما تُزيله

  • بياناتُ الدفع ورموزُه — حتى الأرقام الأربعة الأخيرة.
  • بصماتُ كلمات المرور، تُستبدَل بقيمةٍ واحدة معلومة فتستطيع الدخول بأيّ حساب.
  • مفاتيحُ الواجهات البرمجيّة وأسرارُ خطّافات الوِب المخزَّنة في جداول الإعدادات.
  • وكلُّ ما كنت ستضطرّ للإبلاغ عنه لو تسرّب.

ما تُعيد كتابته

عناوينُ البريد قبل كلّ شيء. فاختبارٌ يُرسل مائةَ تأكيدِ طلبٍ إلى عملاء حقيقيّين هو أشيعُ حوادث بيئة التجربة، ولا تراجعَ عنه.
UPDATE users SET
  email = CONCAT('user', id, '@example.invalid'),
  phone = NULL,
  password_hash = '$2y$10.test.hash';

والنطاق example.invalid لا يُسلَّم إليه أبدًا — فهو محجوزٌ لهذا بعينه.

افعله في مرورٍ واحد

mysqldump --single-transaction live_db | \
  gzip > /tmp/live.sql.gz
zcat /tmp/live.sql.gz | mysql staging_db
mysql staging_db < scrub.sql   # the UPDATEs above
rm /tmp/live.sql.gz

احفظ التنظيف ملفًّا في المستودع، فيفعل الذي بعدك الشيءَ نفسه ولا يضطرّ أحدٌ لتذكّر القائمة.

ثمّ العناوين

wp search-replace 'https://yourdomain.com' 'https://staging.yourdomain.com' --all-tables --precise

تخطَّ ما لا تحتاجه

mysqldump --single-transaction --ignore-table=live_db.sessions --ignore-table=live_db.audit_log live_db

فجداولُ السجلّات والجلسات كثيرًا ما تكون أكثرَ الحجم ولا شيءَ من القيمة.

وإن كانت البيانات من الحساسيّة بحيث يُقلقك تنظيفُها فلا تنسخها. ولّد مجموعةً صغيرةً واقعيّة بدلًا منها واحفظها في المستودع.