软件工程复习02:个人技术

作者:非妃是公主
专栏:《软件工程》
个性签:顺境不惰,逆境不馁,以心制境,万事可成。——曾国藩

在这里插入图片描述

专栏地址

软件工程专栏地址

专栏系列文章

软件工程复习01:软件工程概述

软件工程复习02:个人技术

软件工程复习03:个人软件流程

软件工程复习04:两人合作

软件工程复习05:团体软件流程

软件工程复习06:敏捷流程

软件工程复习07:软件需求

软件工程复习08:典型用户和场景

软件工程复习09:项目管理

软件工程复习10:软件设计与实现

软件工程复习11:软件测试

软件工程复习12:软件质量

软件工程复习13:软件发布

文章目录

  • 专栏地址
  • 专栏系列文章
  • 1.掌握基本的单元测试技术,能够根据给定的程序写出相应的测试案例
  • 2.了解什么是回归测试

1.掌握基本的单元测试技术,能够根据给定的程序写出相应的测试案例

对软件基本组成单元进行的测试,其测试对象是软件设计的最小单位(模块或者类)。

行覆盖(又叫语句覆盖)就是通过设计一定量的测试用例,保证被测试的方法每一行代码都会被执行一遍。

判定覆盖,就是代码里每一个判定都要走一次true,一次false。

条件覆盖和判定覆盖类似,不过判定覆盖着眼于整个判定语句,而条件覆盖则着眼于某个判断条件。
条件覆盖需要保证每个判断条件的true、false都要覆盖到,而不是整个判定语句。
例如,判定A (a > 1 || b == 0) ,只需要整个判定表达式分别取一次真假即可满足判定覆盖,而要满足条件覆盖,则需要判断条件 (a>1) 和 (b==0) 分别都取一次true false才算满足。

覆盖所有可能执行的路径。
单元测试应该覆盖所有代码路径。 单元测试应覆盖所测单元的所有代码路径,包括错误处理路径。
进一步说,“覆盖率”有下面几个层次:
1、 函数的覆盖,这个模块的每一个函数都覆盖了么?
2、语句的覆盖,这个模块的每一个语句都覆盖了么?
3、分支的覆盖,这个模块的每一个条件分支都覆盖了么?  
条件的覆盖,这个模块的每一个布尔表达式的TURE | FALSE 的所有组合都覆盖了么?

100% 的代码覆盖率并不等同于 100% 的正确性!
 代码覆盖率对于“应该写但是没有写的代码”无能为力。
 例如代码申请了内存或其他资源,但并没有释放。又如,代码中并没有处理错误情况。或者没有处理和文件、网络相关的一些异常情况,例如文件不存在、权限有问题,等等。
 代码中有效能问题,虽然代码执行了,并且也正确地返回了,但是代码效率非常低。
 有些情况下,可以针对代码效率写一个单元测试。
 多线程环境中的同步问题  这个问题和代码执行的时序、共享资源的锁定有关

好的单元测试
检查单元测试是否满足下面的条件
 单元测试应该在最基本的功能/参数上验证程序的正确性。
 单元测试应该产生可重复、一致的结果。
 单元测试应该覆盖所有代码路径。
 …

2.了解什么是回归测试

Regress 的英语定义是:return to a worse or less developed
state,是倒退、退化、退步、回归的意思。 如果一个模块或功能以前是正常工作的,但是在一个新的构建中出了问题,那么这
个模块就出现了一个“退步”(Regression),从正常工作的稳定状态退化(回归)到不正常工作的状态。

针对一个Bug Fix,我们也要做Regression Test。目的是:

  1. 验证新的代码的确改正了缺陷
  2. 同时要验证新的代码有没有破坏模块的现有功能,有没有Regression

你可能感兴趣的:(软件工程,软件工程)