I like the basic strategy of creating fragmented files for testing using operations that actual programs use that tend to create fragmented files. If these fail to create fragmented files, then fragmented files may be less of an issue on the filesystem being benchmarked. On that principle, I think it might be worth trying to generate fragmentation by making a big sparse file and filling in blocks in random order.