TDD测试驱动开发+Python案例解析

简介:TDD(Test-Driven Development,测试驱动开发)是一种软件开发方法,它的核心思想是在编写实现功能的代码之前先编写测试用例。TDD的开发过程遵循以下基本原则:先编写测试用例,然后编写代码让测试通过,最后对代码进行重构以提高代码质量。这一过程被称为红-绿-重构循环(Red-Green-Refactor)。通过遵循TDD的原则和方法,可以提高软件开发的质量、效率和可维护性。

基本过程:

1、快速新增一个测试2、运行所有的测试(有时候只需要运行一个或一部分),发现新增的测试不能通过3、做一些小小的改动,尽快地让测试程序可运行,为此可以在程序中使用一些不合情理的方法4、运行所有的测试,并且全部通过5、重构代码,以消除重复设计,优化设计结构

TDD的精髓:

1、通过编写测试用例,更清晰地描述需求和目标,使开发人员更关注功能实现。2、保证代码质量,当代码修改时,可以通过运行测试用例确保现有功能不会受到影响。3、提高代码的可维护性,因为测试用例可以作为文档来描述代码的行为。

TDD的主要作用:

1、提高代码质量:通过测试,可以确保代码符合预期行为。2、降低风险:测试用例可以帮助捕捉潜在问题,避免在以后的开发过程中出现难以发现的错误。3、提高开发效率:通过先设计测试用例,可以减少需求分析和设计阶段的时间,有助于更快地完成项目。

安装和使用TDD的方法因编程语言和测试框架的不同而异。

示例:基于Python语言和unittest测试框架

编写测试用例:创建一个名为test_TDD.py的文件,编写一个简单的测试用例。

  1. # -*- coding: utf-8 -*-

  2. # time: 2023/5/5 21:48

  3. # file: test_TDD.py

  4. # 公众号: 咖啡加剁椒

  5. import unittest

  6. from TDD_demo import add

  7. class TestTDD(unittest.TestCase):

  8. def test_float_add(self):

  9. assert add(0.3, 0.5) == 0.8

  10. def test_int_add(self):

  11. assert add(1, 2) == 3

  12. def test_other_add(self):

  13. assert add("a", "b") == BaseException

  14. if __name__ == '__main__':

  15. unittest.main()

编写实现代码:在同一目录下创建一个名为TDD_demo.py的文件,编写相应的实现代码。首次编写该功能。

  1. # -*- coding: utf-8 -*-

  2. # time: 2023/5/5 23:50

  3. # file: TDD_demo.py

  4. # 公众号:咖啡加剁椒

  5. def add(num1, num2):

  6. return num1 + num2

运行测试:

python test_TDD.py

未通过测试:

 运行完成之后:针对TDD_demo.py发现其中有个用例是不符合我们实际的运行场景的,此时需要重构。

重构后:TDD_demo.py

  1. # -*- coding: utf-8 -*-

  2. # time: 2023/5/5 23:50

  3. # file: TDD_demo.py

  4. # 公众号: 程序员雨果

  5. def add(a, b):

  6. numeral_type = (int, float)

  7. if isinstance(a, numeral_type) and isinstance(b, numeral_type):

  8. return a + b

  9. else:

  10. return BaseException

  11. if __name__ == '__main__':

  12. r1 = add(0.1, 0.3)

  13. r2 = add("a", "b")

  14. print(r1)

  15. print(r2)

再次运行测试:

python test_TDD.py

测试通过:

 注意事项:

1、测试用例应尽量覆盖所有可能的情况,包括正常情况、边界情况和异常情况。2、测试用例应简洁明了,避免过于复杂的逻辑。3、保持测试与实现代码分离,避免测试代码依赖于实现细节。4、在实现新功能或修改现有功能时,始终遵循红-绿-重构循环。

 

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值