We examine two open engineering problems in the area of testing and formal verification of internet-enabled service oriented architectures (SOA). The first involves deciding when to formally and exhaustively verify versus when to informally and non-exhaustively test. The second concerns scalability limitations associated with formal verification, to which we propose a semi-formal technique that uses software agents. Finally, we assess how these findings can improve current software quality assurance practices.Addressing the first problem, we present and explain two classes of tradeoffs. External tradeoffs between assurance, performance, and flexibility are determined by the business needs of each application, whether it be in engineering, commerce, or entertainment. Internal tradeoffs between assurance, scale, and level of detail involve the technical challenges of feasibly verifying or testing an SOA. To help decide whether to exhaustively verify or non-exhaustively test, we present and explain these two classes of tradeoffs.Identifying a middle ground between testing and verification, we propose using software agents to simulate services in a composition. Technologically, this approach has the advantage of assuring the quality of compositions that are too large to exhaustively verify. Operationally, it supports testing these compositions in the laboratory without access to source code or use of network resources of third-party services. We identify and exploit the structural similarities between agents and services, examining how doing so can assure the quality of service compositions.