Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да тествам MySQL транзакции?

На първо място, има грешка във вашата реализация. Ако заявка възникне грешка, текущата транзакция автоматично се връща назад и след това се затваря. Така че, докато продължавате да изпълнявате заявки, те няма да бъдат в рамките на транзакция (те ще бъдат ангажирани към DB). След това, когато изпълните Rollback , безшумно ще се провали. От документите на MySQL :

Rolling back can be a slow operation that may occur implicitly without the user 
having explicitly asked for it (for example, when an error occurs).

Изричната команда ROLLBACK трябва да се използва само ако определите в приложението, че трябва да връщате назад (по причини, различни от грешка в заявката). Например, ако приспадате средства от сметка, вие изрично ще върнете обратно, ако разберете, че потребителят няма достатъчно средства, за да завърши обмена...

Що се отнася до тестването на транзакциите, аз копирам базата данни. Създавам нова база данни и инсталирам набор от "фиктивни данни". След това изпълнявам всички тестове с помощта на автоматизиран инструмент. Инструментът действително ще извърши транзакциите и ще принуди връщане назад и ще провери дали очакваното състояние на базата данни се поддържа по време на тестовете. Тъй като е по-трудно програмно да се знае крайното състояние от транзакция, ако имате неизвестен вход към транзакцията, тестването на живи (или дори копирани от живи) данни няма да бъде лесно. Можете да го направите (и трябва), но не разчитайте на тези резултати, за да определите дали вашата система работи. Използвайте тези резултати, за да създадете нови тестови случаи за автоматизирания тестер...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. До колко MySQL заявки трябва да се огранича на една страница? PHP / MySQL

  2. Правилен начин за съхраняване на часова зона в база данни?

  3. C# параметризирана заявка MySQL с клауза „in“.

  4. Грешка в MySQL #2014 - Командите не са синхронизирани; не можете да изпълните тази команда сега

  5. вмъкване на заявка с ajax без презареждане на цялата страница