单元测试的意义 是啥( 二 )


转移到另一个模块内部,一个模块使用另一个模块的内部数据,都会产生内容耦合。内容耦合是最高程度的耦合,是应该避免的。
(2)独立路径测试。
独立路径主要测试程序的运行路径是否存在错误,对基本执行路径和循环进行测试容易发现大量的错误,设计测试用例查找由于错误的计算、不正确的比较或不正常的控制流而导致的错误。主要包括以下几个方面的内容:
1)运算的优先次序不正确或误解了运算的优先次序:如+和-运算符的优先级高于\u0026gt;\u0026gt;和\u0026lt;\u0026lt;操作符。
2)运算的方式错误:如本来希望a=++b,而错误地写成了a=b++。
3)不同数据类型的比较:如a为unsigned类型,b为int类型,执行while(a\u0026gt;b)语句时很容易出现死循环,因为a为无符号类型。
4)“差1错”,即循环的次数多了一次或少了一次:如for(i=0;i\u0026lt;=100;i++),本来只希望循环100次,结果循环了101次。
5)错误的或不可能的循环终止条件:如while(|a|\u0026lt;0)这个条件永远不可能正确。
6)关系表达式中不正确的变量和比较符:如将等号写成了赋值符,if(a==1)写成了if(a=1)。
7)当遇到发散的迭代时不能终止循环。
8)循环变量修改错误:while(i){循环体中错误地修改i的值,使得循环次数错误}。
(3)出错处理测试。
比较完善的单元设计要求能预见出错的条件,并设置适当的出错处理,以便在程序出错时,能对出错程序重新做安排,保证其逻辑上的正确性。主要包括以下几个方面的内容:
1)出错的描述难以理解:如用户登录失败提示“Errorcode001”,该提示信息不易理解。
【单元测试的意义 是啥】 2)出错的描述不足以对错误定位和确定出错的原因:如网络无法连接时,提示“网络连接失败”。
3)显示的错误与实际的错误不符:如用户名输入错误时,提示“密码错误”。
4)对错误条件的处理不正确:如注册邮箱,提示输入的用户名格式错误,但还能正确地注册一个账号。
5)在对错误进行处理之前,错误条件已经引起系统的干预等。
(4)边界条件测试。
边界条件测试主要测试函数对循环条件、控制条件、数据流等临界值的处理情况,主要包括以
下几个方面的内容:
1)在n次循环的第n次,取最大值或最小值时容易发生错误。
2)特别要注意数据流、控制流中等于、大于、小于确定的比较值时出现错误的可能性。
(5)局部数据结构测试。
局部数据结构测试主要测试对数据定义是否存在错误,包括以下几个方面的内容:
1)检查不正确或不一致的数据类型说明:如将a的类型设置为unsighedint类型,如果将a\u0026lt;0设置为结束的条件,那么一定会进入死循环,因为a永远不可能为负数。
2)使用尚未赋值或尚未初始化的变量。
3)错误的初始值或错误的缺省值:如inta=65536,会导致a实际的值为0。
4)变量名拼写错误或书写错误。
5)不一致的数据类型:如inta和floatb,如果运行a=b,那么会导致精度丢失。


■网友
反正都要手动测试,所以不如代码自动化,长久的好处还有:1. 在联调前对代码有信心2. 出现的问题都在单测中覆盖避免重复犯错,这样每次修改都有信心3. 避免新人之后的更改无意中 break 一些事情,对别人的更改也有信心4. 重构时候有信心总而言之就是有信心改代码,不害怕了
■网友
开发程序就像是盖房子
盖房子的话必须所有的用料都是合格的,比如钢筋、砖头、水泥等,就要每一条每一块没一公斤都要合格,要不然盖起来的房子就可以某个地方有问题。
程序是由函数组成的,每个函数都要健壮,这样才能保证程序的整体质量。
单元测试就是测试函数是否合格的。


推荐阅读