随着越来越多的努力将软件分成独立的层并使用动态发现和依赖注入将它们解耦,确定系统中的哪个“层”导致“应用程序”的系统范围故障变得越来越困难。
单元测试通过确保构成一个层的所有“模块”按预期工作来提供帮助。但是单元测试的编写方式是通过使用诸如存根和模拟之类的技术来隔离每个“模块”。
考虑下面的简单示例:
L1。数据库-> L2。数据库层-> L3。Windows 服务 -> L4。客户端应用程序
例如,如果数据库引擎关闭,则系统将无法正常运行。很难判断数据库引擎是否真的停机或数据库层 (L2) 代码中是否存在错误。要检查,您必须启动某种数据库管理工具来检查数据库引擎是否正在运行。
我们试图实现的是一个开发者工具,可以在系统“出现问题”时启动,该工具将“查询”每一层的“完整性”或“诊断”数据。该工具将提供软件层列表及其“完整性状态”。然后它将能够立即说,X 层是问题的原因(即数据库引擎已关闭)。
当然,每一层都将负责提供自己的“诊断方法”,该工具可以查询。
我想我们在这里试图实现的是某种“集成测试”框架或可以在运行时使用的类似框架(而不是像单元测试那样的编译/构建时间)。灵感来自拥有自己的“车载诊断”的物理设备,如汽车。软件领域的一个很好的例子是每次打开计算机时都会运行的开机自检。
有没有人看到或听到过这样的事情?任何建议或指示肯定会有很大帮助!