How to create test environment for lost transactions
The easiest way is to look into the transaction log and see where there is a sequence that you can 'split'. Start by reading How to read and interpret the SQL Server log to understand what I'm talking about.

Then look into your DB log for a sequence like this:

  lsn1 BEGIN XACT xid1
  lsn2 some update
  lsn3 COMMIT xid1
  lsn4 BEGIN XACT xid2
  lsn5 some update
  lsn6 COMMIT xid2


This sequence shows two operations that occurred in the DB in two distinct transactions. You want to show what happens if xid1 commits, but xid2 rolls back. Since catching the app right in between those two updates is difficult, you can simply restore the DB with STOP AT (see Recover to a Log Sequence Number (SQL Server)) and stop the recovery after lsn3 but before lsn6 (that is, xid 1 commits but xid2 will be forced to rollback). Now you have your DB in a logical inconsistent state (the first operation succeeded, the second failed).