定义:软件可测试性是指通过测试(通常是基于运行的测试)揭示软件缺陷的容易程度。在开发设计良好的系统的成本中,至少有40%是用在了测试上。如果软件设计师能够降低此成本,则将会收到巨大的回报。
要想对系统进行正确的测试,必须能够“控制”每个组件的内部状态及其输入,然后“观察”其输出。这通常通过使用“测试工具”进行,这是一种专门设计的软件,用于执行所测试的软件。这可能会如同在各种接口上回放已记录的数据一样简单,也可能会像测试发动机的燃烧室一样复杂。
可测试性战术:可测试性战术的目标是允许在完成软件开发的一个增量后,较轻松地对软件进行测试。我们对两类用于测试的战术进行讨论:提供输入并捕获输出;内部监视。
输入输出:1.记录/回放。记录/回放是指捕获跨接口的信息,并将其作为测试专用软件的输入。在正常操作中跨一个接口的信息保存在某个存储库中,它代表来自一个组件的输出和传到一个组件的输入。记录该信息使得能够生成对其中一个组件的测试输入,并保存用于以后的比较的测试输出。
2.将接口与实现分离。将接口与实现分离允许实现的代替,以支持各种测试目的。点位实现允许在缺少被占位的组件时,对系统的剩余部分进行测试。用一个组件代替某个专门的组件能够使被代替的组件充当系统剩余部分的测试工具。
3.特化访问路线/接口。具有特化的测试接口允许通过测试工具并独立于其正常操作,来捕获或指定组件的变量值。例如,可以通过特化的接口提供元数据,测试工具利用该接口推动其活动。应该将特化的访问路线和接口与针对所要求功能的访问路线和接口分离开。使构架中的测试接口分层意味着可以在架构的任何层次上应用测试用例,并且已经具备观察响应的测试功能。
内部监视器:组件可以维持状态、性能负载、容量、安全性或其他可通过接口访问的信息。此接口可以是该组件的一个永久接口,也可以是通过instrumentation技巧临时引入的接口,如面向方面编程或预处理宏。一个常见的技巧就是当监视状态被激活时记录事件。监视状态实际上会增加测试工作,因为随着监视的关闭,可能必须重复测试。尽管额外测试需要一定的开销,但这却使组件活动的可见性得以提高,这样做是值得的。
参考链接:https://www.jianshu.com/p/344c69a14d71
来源:https://www.cnblogs.com/cuijunfeng/p/12400393.html