练习 26:hexdump
译者:飞龙
自豪地采用谷歌翻译
你已经用xargs完成了热身,现在正在代码/审计的循环中。你现在将尝试以“测试优先”方式完成下一个挑战。这就是,你编写测试,它描述你的预期行为,然后实现该行为,直到通过测试。你将要复制hexdump工具,并尝试将你的版本的输出与真实版本匹配。这是“测试优先”开发真正有帮助的地方,因为它自动化了模仿另一个软件的流程。
当你需要编写一个糟糕的软件的替代品时,这种技术非常有用。软件中的一个常见工作是处理一个项目,它的目的是使用更新的实现替换旧系统。一个例子是用一个新的、热门的 Django 系统来替换旧的 COBOL 银行系统。动机通常是,通过使用比旧系统更容易使用的东西,来使其更容易维护和扩展。如果你可以编写一组自动测试来验证旧系统的行为,然后将该测试套件用于新系统,那么你可以通过一种方法,来确认你的替换品几乎正常。相信我,这些替代工作几乎是不可能的,通常不会成功,但自动测试是有帮助的。
这个练习中,你会向你的流程添加下面这些:
在你需要实现的场景中,编写一个测试用例,运行原始的hexdump。让我们假设-C选项。你将需要使用subprocess启动它,或者简单地提前运行它,并将结果保存到加载的文件。
通过测试你的hexdump版本,然后比较结果,编写使测试工作的代码。如果他们不等价,那么你就做错了。
然后审计测试代码和你的代码。
我选择了hexdump,因为难度在于,复制其奇怪的输出格式来查看二进制数据。它的工作方式不是特别复杂。它只是匹配你需要的正确输出。这有助于你练