聊聊测试驱动开发TDD

2022年11月12日 257点热度 0人点赞 0条评论

1.1关于TDD


概念

测试驱动开发,英文全称Test-Driven Development,简称TDD,是一种不同于传统软件开发流程的新型的开发方法。它要求在编写某个功能的代码之前先编写测试代码,然后只编写使测试通过的功能代码,通过测试来推动整个开发的进行。


TDD三原则

除非为了通过一个单元测试,否则不允许编写任何产品代码。

在一个单元测试中只允许编写刚好能够导致失败的内容。

一次只能写通过一项单元测试的产品代码,不能多写。

图片


重构

代码重构(英语:code refactoring)指对软件代码做任何更动以增加可读性或者简化结构而不影响输出结果。


1.2 关于基准测试


什么是基准测试

基准测试是测量一个程序在固定工作负载下的性能。在Go语言中,基准测试函数和普通测试函数写法类似,但是以Benchmark为前缀名,并且带有一个*testing.B类型的参数;*testing.B参数除了提供和*testing.T类似的方法,还有额外一些和性能测量相关的方法。它还提供了一个整数N,用于指定操作执行的循环次数。


基准测试与压力测试

基准测试可以理解为针对系统的一种压力测试。基准测试不关心业务逻辑,更加简单、直接、易于测试,数据可以由工具生成,不要求真实;而压力测试一般考虑业务逻辑,要求真实的数据。


基准测试的作用

对于多数Web应用,整个系统的瓶颈在于数据库;原因很简单:Web应用中的其他因素,例如网络带宽、负载均衡节点、应用服务器(包括CPU、内存、硬盘灯、连接数等)、缓存,都很容易通过水平的扩展(俗称加机器)来实现性能的提高。而对于MySQL,由于数据一致性的要求,无法通过增加机器来分散向数据库写数据带来的压力;虽然可以通过前置缓存(Redis等)、读写分离、分库分表来减轻压力,但是与系统其它组件的水平扩展相比,受到了太多的限制。


而对数据库的基准测试的作用,就是分析在当前的配置下(包括硬件配置、OS、数据库设置等),数据库的性能表现,从而找出MySQL的性能阈值,并根据实际系统的要求调整配置。


1.3 完成“迭代”教程


先写测试


尝试运行测试



使用最少的代码让失败的测试能够运行



结果: 



编写可以通过测试的实现



结果: 



重构

为了规范性、简洁性、可读性等因素修改代码:



基准测试



值得一提的是goland可以快捷生成测试代码:



结果:


完成“迭代”章节练习


修改测试代码,以便调用者可以制定字符重复的次数,然后修复代码。


修改测试代码:



然后运行测试:


可见需要修改产品代码以通过单元测试:

测试通过:


写一个ExampleRepeat来完善你的函数文档。



可见符合要求。


看一下strings包。找到你认为可能有用的函数,并对它们编写一些测试。


测试Count函数


测试代码:



结果:


选择排序TDD实践报告


先写测试



尝试运行测试


使用最少的代码让失败的测试能够运行:


结果:


编写可以通过测试的代码

代码:


结果:



重构

仿照教程,进行重构:



基准测试


运行基准测试:

来源:51Testing软件测试网 Winszheng

2022第三届中国项目经理大会▼


2022首届中国敏捷大会▼


推荐阅读

1、会议日程已定—2022第三届中国项目经理大会诚邀您参加!

2、中国敏捷大会LOGO正式发布

3、2022首届中国敏捷大会(线上会议)将于12月召开

4、独家PMO和项目经理内部学习材料,欢迎阅读!

5、2022第十一届PMO大会(线上会议)成功召开

6、2022第三届中国项目经理大会(线上会议)将于11月26-27日召开

7、第二届中国项目经理线上会议成功召开

95190聊聊测试驱动开发TDD

这个人很懒,什么都没留下

文章评论