• python之先测试再编码


    1.准确的需求说明

    2.做好应对变化的准备

    3.测试四步曲

      在编译型语言中,将不断重复编辑、编译、运行的循环。在有些情况下,编译程序时就会出现问题,程序员不得不在编辑和编译之间来回切换。在python中,不存在编译阶段,只有编辑和运行阶段。

      测试就是运行程序。

      要避免代码在开发途中被淘汰,必须能够应对变化并具备一定的灵活性,因此为程序的各个部分编写测试至关重要(称为单元测试),而且是应用程序设计工作的重要组成部分。

      “测试一点点,再编写一点点代码”的理念 是胜于 “编写一点点,再测试一点点”的做法。

      测试在先,编码在后。称为 测试驱动的编程

    1.准确的需求说明

      开发软件时,必须要直到软件要解决什么问题--要实现什么样的目标;

      要阐明程序的目标,可编写需求说明;也就是描述程序必须满足何种需求的文档。

      可使用python来描述需求,并让解释器检查是否满足了这些需求。

      注意:需求类型比较多;包括诸如让客户满意度这样模糊的概念;这里描述的重点是功能需求,即可程序必须提供哪些功能。

      理念是先编写测试,再编写让测试通过的程序。测试程序就是需求说明,可帮助确保程序开发过程紧扣这些需求。

      举例:

      假设要编写一个模块,其中只包含一个根据矩形的宽度和高度计算面积的函数。动手编写代码前,编写一个单元测试,其中包含部分直到答案的例子。

    from area import rect_area
    height = 3
    width = 4
    correct_answer = 12
    answer = rect_area(height,width)
    if answer == correct_answer:
        print("test pass")
    else:
        print("test failed")

      在这个示例中,调用函数rect_area,并将参数heigth和width分别设置为3 和 4,再将结果与正确的答案进行比较。

      如果接下来,不小心将函数rect_area实现为下面这样,并尝试运行测试程序,将出现一条错误信息。

    def rect_area(heigth,width):
        return height * height  #这是不对的

      则接下来,就需要检查代码,看看问题出在什么地方,并将返回的表达式替换为 height * width

      先编写测试再编写代码并不是为了发现bug,而是为了检查代码是否管用。

    2.做好应对变化的准备

      自动化测试不仅可在编写程序时提供极大的帮助,还有助于在你修改代码时避免累积错误,这在程序规模很大时尤其重要。

      必须做好修改代码的心理准备,不是固守既有代码,但修改是有风险的,修改代码时候,常常会引入一两个意象不到的bug。如果设计良好(使用了合适的抽象和封装),修改带来的影响将是局部的,只会影响很小一段代码。这意味着你能够确定bug的范围,因此调试起来更容易。

      覆盖率:是一个重要的测试概念。

    3.测试四步曲

      测试驱动开发过程的各个阶段

    (1) 确定要实现的新功能。可将其记录下来,再为之编写一个测试。

    (2)编写实现功能的框架代码,让程序能够运行(不存在语法错误之类的问题),但测试依然无法通过。测试失败是很重要的,因为这样你才能确定它肯恩失败。如果测试有错误,导致在任何情况下都能成功,那么它实际上什么都没有测试。

            不断重复这个过程:确定测试失败后,再试图让它成功。

    (3)编写让测试刚好能够通过的代码。在这个阶段,无需完全实现所需的功能,而只要让测试能够通过即可。这样,在整个开发阶段,都能够让所有的测试通过(首次运行测试时除外),即便是刚着手实现功能时亦如此。

    (4)改进(重构)代码以全面而准确地实现所需的功能,同时确保测试依然能够成功。

            提交代码时,必须确保它们处于健康状态,即没有任何测试是失败的。

      

      

  • 相关阅读:
    js变量声明提前
    03通讯录(Block传值)
    03-Block
    03通讯录(搭建编辑界面)
    03通讯录(代理解耦)
    03通讯录(逆传)
    03通讯录
    源码0604-06-掌握-大文件断点下载(断点下载)
    源码0604-05-程序不死
    源码0604-02-了解-网页开发
  • 原文地址:https://www.cnblogs.com/FlameLuo/p/9695986.html
Copyright © 2020-2023  润新知