一切过往,皆为序章,一切未知,皆为终章。

测试、调试、异常、断言

期中测试选择题

1.while循环作为主体循环时最多可以包含一个“break”语句和最多包含一个“pass”语句
    错误分析:
    while True:
        if i > 0:
            break
        elif i==0:
            break
        else:
            print(i)

测试

1.测试最重要的目的是证明错误的存在,而不是证明程序没有错误;测试的关键就是找到一组输出,可以称为测试套件;
2.测试分为两类:
    黑盒测试:基于规范探索路径的启发式方法
        好处:
            1、测试者和开发者来自不同人群
            2、避免生成测试套件时将代码的错误潜伏在其中
            3、就是实现发生变化时,测试仍适合适用
    白盒测试:基于代码路径启发式方法
        经验准则:
            1、测试所有if语句的所有分支
            2、必须测试每个except子句
            3、对于for循环,需要以下测试:未进入循环,循环体执行一次,循环体执行多次
            4、对每个while循环,包括for的所有,对应于所有跳出循环的测试用例。
            5、对于递归函数,测试用例应该包含函数没有递归调用就返回,只执行一次递归调用和执行多次递归调用的情况
3.测试分为两个阶段:
    单元测试
        测试者构建并执行测试,用来确定代码的每个独立单元是否正常工作。
    集成测试
        确定整个程序是否按照预期的运行。
    集成测试比单元测试更具有挑战性。

调试

1.运行错误按照两个维度进行分类
    显性-->隐性:显性错误有明显的表现,如程序奔溃或者运行时间异常长,隐性错误没有明显的表示,程序会正常结束不处任何问题--
除了会给出一个错误的答案 持续-->间歇:持续性错误在程序每次使用相同的输入运行时都会发生。间歇性错误仅在某些时候出现。间歇性错误是很常见的。 2.排除常见错误 1、以错误的顺序向函数传递实参; 2、拼错一个名称,如将大写字母写成小写; 3、变量重新初始化失败; 4、检验两个浮点数是否相等(==),而不是近似相等(请记住,浮点数的运 5、在应该检验对象相等(如id(L1) == id(L2))的时候,检验值相等 6、忘记了一些内置函数具有副作用; 7、忘记使用()将对function类型对象的引用转换为函数调用; 8、意外地创建了一个别名; 9、其他一些你常犯的错误

异常

1.程序因为一个异常被抛出而终止时,我们称派出了一个未处理的异常
注意:异常没有必要导致程序终止,异常被抛出时,可以也应该由程序进行处理,有时抛出异常的原因是程序中有错误,但很多时候,
异常时程序员可以也应该预料到的事情。打开一个不存在的文件等等 2.用try except来处理异常

断言

1.assert有两种形式:
assert Boolean expression或者assert Boolean expression,argument
执行assert语句时,先对布尔表达式求值,为True,程序向下运行;为FALSE,就抛出一个AssersionError异常;
2.断言是一种非常有用的防御性编程工具,可以确保函数参数具有恰当的类型;同时也是一种非常有用的调试工具,可以确保中间值符合预期,
或者确保函数返回一个可接受的值。
posted @ 2018-07-26 20:28  爱吃帮帮糖  阅读(428)  评论(0编辑  收藏  举报