
《软件测试52讲》1、测试基础知识篇——0~11讲2、GUI自动化测试篇——12~21讲3、API自动化测试篇——22~24讲4、代码测试篇——25~27讲5、性能测试篇——28~34讲6、测试数据准备篇——35~38讲7、测试基础架构篇——39~42讲8、测试新技术篇——43~47讲9、测试人员的互联网架构核心知识篇——48~52讲代码测试篇25——掌握代码级测试的基本理念与方法常见代码错误类型1、语法特征错误错误是语法特征方面的那种, 是能够从编程语法之上找寻出来的错误, 举例来说, 像是跟编程语言语法不相符合的语句这类情况。2、边界行为特征错误边界行为特征错误被这样定义, 即代码在执行进程当中出现异常现象, 进而发生崩溃状况或是出现超时情形。它之所以被称作“边界”, 原因在于此类错误往往是在一些边界条件之上发生的。3、经验特征错误经验特征错误是指根据过往经验发现代码错误。4、算法错误算法错误所指的是, 代码达成的计算, 或者功能, 与先前预先规划设计好的计算结果, 亦或是功能, 并不相符。5、部分算法错误有这样一种情况被称作部分算法错误, 即在特定的某些条件之下, 或者是特定的输入情形之中, 算法无法精准无误地达成业务要求去实现相应功能。代码级测试常用方法1、静态方法人工静态方法, 是借助人工阅读代码, 去查找代码里隐藏着的错误的办法 , 平常得以运用的手段中, 有开发人员代码走查方式 , 还有结对编程方式 , 以及同行评审方式等等。自动静态方法, 是一种代码分析技术, 它是指, 在不采用代码运行这种状况下, 借助词法分析、语法分析、控制流分析等技术手段, 并且结合各类预定义以及自定义相应代码规则, 以此对于程序代码给予静态 , 发现语法错误, 找出潜在语义错误, 以及识别部分动态错误的一种技术。自动静态方法工具Sonar、2、动态方法, 人工动态方法是这样一种方法, 它指的是这样的情况, 先设计用于代码的那输入以及针对其预期的正确输出的集合, 随后去执行代码, 接着判断实际输出是不是符合预期。单元测试框架JavaJunit和、拥有自动动态特征的方法, 此方法也被叫做自动边界测试方法, 它是一种通过代码自动生产边界测试用例然后执行, 进而去捕获可能出现的异常、崩溃以及超时状况的方法。这四类之中的测试方法所具备的特征, 还有能够涵盖的错误种类, 能够归纳总结如下:有一种方法名为人工静态方法, 它在本质方面, 是借助开发人员代码走查, 以及结对编程, 还有同行评审去予以完成的, 从理论层面来讲, 它是能够发现所有代码错误的, 然而, 它却由于对“测试人员”存在过渡依赖的状况, 所以其局限性会显得十分大。那所谓的自动静态方法, 其主要运用的手段是代码静态扫描, 它能够发现三类有着特定特征的错误, 具体来说就是语法特征方面的错误, 还有边界行为特征方面的错误, 以及经验特征方面的错误。人工动态方法, 此种方法属于传统意义上那种单元测试, 它是为了发现算法错误的方法, 亦属于发现部分算法错误极为优等的方式。自动动态的那种方法, 实际上就是带有自动化属性的边界测试内容, 集中涵盖的是边界行为所展现出的特征方面的错误。26——深入浅出之静态测试方法人工静态方法1代码走查Code 2结对编程Pair 3如下这般同行评审Peer, 要是你所在的项目以特定方式管理代码, 且运用特地的分支管理策略, 那么在送交代码或是进行分支合并之际, 就得先去递交 Pull PR, 唯有此 PR 通过了所有评审者的审查, 以后方可被合并。这同样是同行评审的具体实践行为, 当下, 只要采取了的分支管理策略, 基本上都会运用这种方式。自动静态方法自动静态工具 Sonar现今, 自动静态扫描一般而言均会与持续集成的流水线进行绑定, 最为常见的应用场景在于当你提交代码之后, 持续集成流水线便会自动引发自动静态扫描, 此一功能乃是借助以及上的插件来予以达成的。当中你于之内安装了之时, 且把服务器连带相关的配置之信息予以录入之后, 你便能够在当中Job的配置里增添Sonar静态扫描的步骤了。27——深入浅出之动态测试方法人工动态方法——单元测试单元测试用例“输入参数”的复杂性1、被测试函数的输入参数2、被测试函数内部需要读取的全局静态变量3、被测试函数内部需要读取的类成员变量4、函数内部调用子函数获得的数据5、函数内部调用子函数改写的数据6、嵌入式系统中在中断调用中改写的数据单元测试用例“预期输出”的复杂性1、被测函数的返回值2、被测函数的输出参数3、被测函数所改写的成员变量和全局变量4、被测函数中进行的文件更新、数据库更新、消息队列更新等关联依赖的代码不可用采用桩代码来模拟不可用的代码并通过打桩补齐未定义部分自动动态方法具有自动生成边界测试用例, 且能基于代码执行, 以此来捕捉潜伏着的异常、崩溃以及超时情况的测试方法, 便是自动动态方法。想要解决这个问题, 较为简单直接的办法是, 依据被测函数的输入参数, 去生成有可能的边界值。