Faker or similar libraries are good enough until you hit a certain complexity threshold. What do you use to generate data that has some complexity in it, like relationships, dependencies etc?
fakers are a good start, you can also copy "real data" after removing sensitive info. this way your test env will be very similar to production