blockchain testing techniques