测试


迭代测试-壮丽的蒙太奇

  1. TDD Pass 我们创建了测试 HTTP 务器所需的初始配置 该服务器调用
    HTTP 处理程序方法(被测方法) 由于被测方法尚不存在,测试开始时会编译失败。
    将测试资源代码添加到 createMatchHandler 方法中可以使测试通过。
  2. TDD Pass 添加断 ,判断 HTTP 返回值中是否包含 Location header
    初测试失败,因此在 location header 中添加了 个占位符
  3. TDD Pass 添加断 Location header 个正确格式的 URL ,指向由
    GUID 标识的 match 最初测试失败,随后生成 个新的 GUID 和设置正确的 location
    header
  4. TDD Pass 添加断言,判断 HTTP 返回值中 match ID location header
    中的 GUID 是否相等 最初测试失败,为了通过测试,需要在测试端添加能解析返
    回数据的代码 这意味着必须创建 个可以在服务器端返回有效数据的结构体。因
    此不在处理程序中返回“this is a test ”,而是返回 个真正的响应对象。
    68 Cloud Native Go
  5. TDD Pass 。添加断言,判断被处理函数使用的存储库是否已经包括了新创
    建的 tch 。为 ,必须 个存储库接口并实现 个内存存储库
  6. TDD Pass 。添加断言,判断服务返回的 大小和存储库中的是否相同。
    这使得我们必须为响应创建 个新的结构体,井进行更新。除此之外,我们还更新
    了另一个 gogo-engi 库,它实现了 游戏需要的最小分辨 的业务逻辑 应该
    在最大程度上与 GoGo 服务解祸。
  7. TDD Pass 添加断言 判断创建 请求时包含的游戏玩家和服务端的
    JSO 返回中的值是否相同,并且是否也相应地保存在存储库中
  8. TDD Pass 。添加断言,测试如果发送除 格式以外的数据,或者没有
    为创建 请求发送合理的值,服务器是否会返回“Bad Request 飞这些断言会失
    败,因此需要为处理程序添加检验 JSON 格式和无效请求对象的代码 Go 可以很好
    地支持 JSON 反序列化,所以通过检查反序列结构体中缺少的变量或默认值可以捕获
    大多数“ eq es ”输入。


这是测试驱动开发的实例。作为一种敏捷开发方法,可以借鉴使用。


服务发现和动态服务发现

资料更新、多版本灰度发布。


关于数据库编写



事件溯源

事件溯源在我看来是一种非常棒的伴随开发的方法论。它注重调试,修改,迭代。我认为这也是软件开发中必要的部分。


  1. 幂等

注重操作幂等,可以减少很多操作失败带来的损失

  1. 隔离

单个事件独立,对于出错操作定位来说易于分析

  1. 可测试

如果不可测试,都无法知道是否正确,就要用线上更大的成本检验。这是和开发本意不符合的。

  1. 可再现,可恢复

通过这个原则,让出错,或者故意出错的环境能够再次出现,而不是在线上因为巧合崩溃,却不知道怎么修复,重启之后莫名其妙又好了这样的稀里糊涂的维护。

  1. 大数据

我认为这里大数据指的是量化分析事件,能够屏蔽自己无法关注到的信息,直接找到被这些信息掩藏的因果关系。

最后和现实最终一致

事实上,这里有一个理念就是,编程出得程序,或者工具,它应该反应与现实一致。我认为这是约定大于配置的理念。

借用 HackNew 里的一个人所说。

当我发现,如果我只使用 Vim 的默认配置的话。我能够在所有的环境下使用 Vim 。

而不是只能在我的定制化 vim 上操作。


安全是一直考虑的问题

另外要注意的是,安全是贯彻始终的一个问题。越早维护他,之后受到的损失越小。对待开发的软件一开始就认真对待,除了安全之外,质量也会有所保证。


实践学科

无论是编程,还是单纯云原生,都是如此。

吾生也有涯,而知也无涯。以有涯随无涯,殆已。实践印证前进,而不是去了解所有的东西再着手。