Monkey补丁修补和映像仅仅是一些测试复杂系统的方法。
在这个测试复杂系统三部曲系列的第一部分,我覆盖了深入测试的实际角度(方面)并且展示了怎样测试代码的困难块,例如用户界面,网络连接和异步代码。第二部分,讨论一些我曾经成功测试过的C++复杂系统。
在本文的最后安装部分,讨论类似的复杂系统测试方法像Python(和Swig C++/Python 绑定)和C++,.NET高容量,高可得性的Web服务。
Python
Python是强输入和动态输入的语言。它也是一门演绎的语言(即时编译)。这意味着打字错误会在运行时显现,而不是编译时。举个例子,如果你传递一个INT(整型)值给期望得到字符型值的函数,你的程序将仍然可以运行,也许还会成功运行到最后如果你的代码从未遇到不好的调用:
defsayHello(name): defsayHelloToMyLittleFriend(): sayHello('Jebediah') |
输出:
Hello,Jebediah
这个sayHelloToMyLittleFriend()函数包含的不好的调用sayHello(5)从未被召唤,所以这个程序运行正常。因此,你是不是应当在用静态输入的语言写程序时做点不同的事情?不!如果你没有发现那个不好的调用,就代表你没有测试代码路径。
……………………
查看全文请点击下载:http://www.51testing.com/html/73/n-849173.html
Monkey补丁
测试Python 代码(和其他动态语言)是件愉快的事情。没有必要去为你的代码设计可测试性,或者去创建特殊的界面,或者跟旧的代码打架。用Python, 你可以到达任何对象的内部,替换它的成员以你喜欢的任何东西。你甚至可以替换函数。再没有比这个更好的了。这个历史悠久的惯例被称作monkey patching。即使在你不用依赖性注入,monkey patching也可以工作,因为你可以在任何时候替换掉那些依赖。在以下的代码例子中,类A实例化了它自己的Dependency依赖: