单元测试(一)

测试方法:

	按照是否执行进行分类:静态测试,动态测试
	
	按照测试手段分类:手工测试,自动化测试
	
	按照测试对象进行分析:
					黑盒测试 -对象:系统功能测试
                    		-优点:简单
                    		-缺点:介入时间短,发现重大bug时难以修复
                    		-评估标准:需求覆盖率100%
							
					灰盒测试 -对象:系统模块间接口
					 		-优点:介入时间早于黑盒测试
					 		-缺点:需要测试有相应的代码能力
					 		-评估标准:接口覆盖率(不一定100%)
					 		
					白盒测试 -对象:代码,函数
							-优点:介入时间早
							-缺点:测试人员需要代码能力	
                            -评估标准:逻辑覆盖率
单元测试目的

为什么要做单元测试,以及适用项目

价值:提前介入测试,发现代码级别bug

适用项目:大型的,项目周期长

​ 新系统,新团队

​ 涉及财产,生命的项目

UT开展流程

UT计划
1 确定单元测试范围

​ 依据标准:二八原则(20%的代码中隐藏80%的缺陷)

​ 如何确定20%的代码:使用频率-高

​ 复用性-全新的,部分复用,全部复用(全新的即需要单元测试)

​ 开发人员背景-技术背景,业务背景

​ 复杂度-一般认为复杂度在七级以上的20%的代码

在这里插入图片描述

2 确定评估标准
逻辑覆盖率
  • 语句覆盖率

    • 什么是语句:非分支判断

    • 练习:输入一个数字,判断是否大于0,如果大于0,对该数字-1,否则+1

    • 计算方式:被测的语句/全部的语句

开始
输入代码
判断
执行+1操作
执行-1操作
结束

语句分别为:B[输入代码],D1[执行+1操作],D2[执行-1操作]
输入数字3:语句覆盖率为2/3
输入数字-1:语句覆盖率为2/3
整体覆盖率为100%

分支覆盖率
  • 分支if语句的2个分支
  • 计算方式:被测试的分支

输入数字5,分支覆盖率1/2

条件覆盖率
  • 什么是条件:结果为true或false

  • 计算方式:被测条件数/全部条件数

开始
输入代码
if num>0
执行+1操作
执行-1操作
结束
   > 输入数字3,条件覆盖率为1/2

在这里插入图片描述

输入admin,123456,条件覆盖率为为2/4 --username==“admin” 为true,password == "123456"为true

输入zhangyiqi,123456,条件覆盖率为为1/4 --username==“zhangyiqi” 为false,后面判断直接断路不执行

输入admin,634444,条件覆盖率为为2/4 --username==“zhangyiqi” 为true,password == "123456"为false

在这里插入图片描述

输入admin,123456,条件覆盖率为为1/4 --username==“admin” 为true,后面不执行

输入zhangyiqi,123456,条件覆盖率为为2/4 --username==“zhangyiqi” 为false,password == "123456"为true

输入admin,634444,条件覆盖率为为1/4 --username==“admin” 为true,后面不执行

在这里插入图片描述

输入a:3,b:6 ,条件覆盖率为 3/8 -->执行的语句有 a >5 false;a==5 false;c

输入a:6,b:3 条件覆盖率为 2/8 -->执行的语句有 a >5 true ;b<5 true

输入a:6,b:6 条件覆盖率为 4/8 -->执行的语句有 a >5 true ;b<5 false;a==5 false;b<10 true

在这里插入图片描述

输入:admin,123456 条件覆盖率:3/8 —> admin true,123456 true,admin false

输入:fanbinbin,123456 条件覆盖率:2/8 -->fanbinbin flase,fanbinbin flase,

路径覆盖率
  • 什么是路径:从开始到结束的过程

  • 计算公式:被测路径数/全部路径数

分支-条件覆盖率
  • 分支-条件:分支-条件的组和
  • 计算方式:被测分支数+被测条件数/全部分支数+全部条件数
测试策略

在这里插入图片描述

输入:admin,654321

语句覆盖率:4/6 -->输入用户名,输入密码,后台登录失败,前端登录失败

分支覆盖率:2/4 -->后台登录失败,前端登录失败

条件覆盖率:3/8 admin true;654321 false;admin false

分支条件覆盖率:5/12

路径覆盖概率:1/4

UT设计
测试策略
  • 自顶向上:

从最上层函数开始逐层开展测试(不怎么使用)
注意:需要对函数中调用的函数打桩(模拟调用的函数)
测试成本高

  • 自顶向下:

从最下层函数开始逐级向上开展测试
测试周期长

孤立策略:

选择需要进行的测试函数即可(一般选择这个)

UT实现
步骤

1,先将测试代码转为流程图

2,将流程图转化为流图

  • 流图只有圈和线

    • 圈:判定框中的条件或者一条或者多条语句
    • 线:带有线头指向的连接
  • 通过流程图描述的是程序的复杂度(圈复杂度)

    • 路径个数就是描述复杂程度的级别
  • 确定测试路径

  • 编写测试用例

在这里插入图片描述
在这里插入图片描述

例elif判断

在这里插入图片描述
在这里插入图片描述

例while循环

在这里插入图片描述

循环体为重复代码不需要重复测试

例三角形判断

在这里插入图片描述

在这里插入图片描述在这里插入图片描述

UT执行
借助单元测试框架unittest

编写测试用类执行测试

读取数据的方式
使用xml文件的读取方式

导包 from xml.dom import minidom
打开xml文件 root = minidom.parse(“文件路径/文件名”)
找到节点 firstnode = root.getElementsByTagName(“标签名”)[索引]
找打节点上的值 secondnode = firstnode.getElementsByTagName(“标签名”)[索引].firstChild.data

使用csv文件的读取方式

注意:csv文件以逗号隔开

读取操作:

导包 import csv
打开并读取csv文件内容 csv.reader(open(“文件路径/csv文件”, “r”))
遍历循环读取内容 数据类型为列表
但会数据待使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值