Overcoming Hard Problems in Software Testing with Testing as a Service