软件测试基础知识

软件测试:使用技术手段验证软件是否满足需求。

一、测试的主流技能

功能测试:功能测试主要验证程序的功能是否满足需求。

自动化测试:使用代码或工具代替手工,对项目进行测试。

接口测试:使用代码或工具对服务端提供的接口进行测试。

性能测试:使用代码或工具模拟多人使用软件,查找服务器缺陷。

二、测试的分类 

2.1、按测试阶段划分

单元测试-->集成测试-->系统测试-->验收测试

单元测试:针对程序源代码进行测试。

集成测试:又称接口测试,针对程序的接口进行测试。

系统测试:功能和非功能测试,对整个系统进行测试包括功能兼容、文档等测试。

验收测试: 主要分为内测、公测,使用不同人群来进行测试。(不是所有的项目都需要)

2.2、按代码可见度划分

主要分为黑盒测试,灰盒测试,白盒测试。

黑盒测试:源代码不可见,UI功能可见。针对功能进行测试(系统测试)

灰盒测试:部分源代码可见(接口),UI功能不可见。针对接口进行测试(集成测试)

白盒测试:源代码全部可见,UI功能不可见。针对源代码进行测试(单元测试)

三、质量模型 

质量模型:衡量一个优秀软件的维度。主要看功能性性能兼容性易用性可靠性安全可维护性可移植性

案例:

1、开发一款网络游戏(要求:10个主功能)

2、游戏支持web(浏览器)端、App端

3、游戏上线后预计每日,20W用户玩家在线

1、功能性测试

需求:10个功能,每个功能的详情

测试:功能的数量是否为10个、功能是否正确实现、出现错误的处理情况。

2、性能测试:

需求:预估每日20W用户玩家在线。

测试:服务器每秒处理请求数、服务器硬件配置是否满足。

3、兼容性测试:

需求:游戏支持web(浏览器)端、App端。

测试:web端测试(谷歌、IE、火狐、欧朋、苹果)、操作系统(windows系统:win7、win8、win10、win11等)、手机端测试(分辨率、品牌、系统、网络、其他)。

4、易用性:

测试:是否简洁、友好、流畅、美观

5、可靠性

测试:是否出现无响应,是否出现卡顿,是否出现死机

6、安全

测试:数据的加密

7、可移植性

测试:网站数据迁移

8、可维护性

测试:核心代码的说明是否详细,是否独立,是否易于寻找

四、软件测试的流程 (生命周期)

软件测试的流程为:需求评审-->编写测试计划-->用例设计-->用例执行-->缺陷管理-->测试报告。

需求评审:确保各部门需求理解一致,知道被测项目有哪些功能模块(角色:产品经理,开发,测试)

编写测试计划:测什么、谁来测、怎么测

用例设计:验证项目是否符合需求的操作文档

用例执行:项目模块开发完成开始执行用例文档实施测试

缺陷管理:对缺陷进行管理的过程。(缺陷提交给开发,开发修改完毕,测试验证完毕,缺陷已经被修复)

测试报告:实施测试结果文档

五、测试用例

5.1、测试用例

用例:用户使用的案例的简称就是用例。

如:

是否能开机:打开手机按下电源键3秒钟,看是否能开机。
验证内存:打开手机设置查看内存是否为64G。
验证屏幕:打开手机在白屏背景下检查屏幕是否黑色点。
检查运行速度:打开手机下载吃鸡游戏,是否运行流畅。

测试用例:为测试项目而设计的执行文档 

测试用例的作用:

1、防止漏测

2、实施测试标准

用例设计的编写格式,主要包括以下八大要素:

用例编号    用力标题  项目/模块  优先级  前置条件   测试步骤   测试数据  预期结果

用例编号:项目_模块_编号。

用力标题:预期结果(测试点)。

模块/项目:所属项目或模块。

优先级:表示用例的重要程度或者影响力P0~P4(P0最高),用户使用频率越高,功能越核心,优先级越高。

前置条件:要执行此条用例,有哪些前置操作

测试步骤:描述操作步骤

测试数据:操作的数据,没有的话可以为空

预期结果:期望达到的结果

5.2、案例描述

需求:QQ登录(4条)
1、账号为空

2、账号未注册

3、密码为空
4、密码错误

用例编号用例标题项目/模块优先级前置条件测试步骤测试数据预期结果
QQ_login_001登陆失败(账号为空)登录p11、打开登陆界面
2、网络正常
1、输入账号
2、输入密码
3、点击登录按钮
1、账号:空
2、密码:123456
登陆失败,
提示:账号不可为空
QQ_login_001登陆失败(账号未注册)登录p11、打开登陆界面
2、网络正常
3、账号未注册
1、输入账号
2、输入密码
3、点击登录按钮
1、账号:未注册账号
2、密码:123456
登陆失败,
提示:账号不存在
QQ_login_001登陆失败(密码为空)登录p11、打开登陆界面
2、网络正常
3、账号已注册
1、输入账号
2、输入密码
3、点击登录按钮
1、账号:已注册账号
2、密码:空
登陆失败,
提示:密码不可为空
QQ_login_001登陆失败(密码错误)登录p11、打开登陆界面
2、网络正常
3、账号已注册
1、输入账号
2、输入密码
3、点击登录按钮
1、账号:已注册账号
2、密码:错误密码
登陆失败,
提示:密码不正确

六、测试用例怎么设计 

等价类划分法——针对穷举场景设计测试点

边界值分析法——针对限定边界规则设计测试点

判定表法——针对多条件依赖关系进行设计测试点

场景法——针对于项目业务进行设计测试点

错误推测法

6.1、等价类划分

等价类划分:在所有测试数据中,具有某种共同特征的数据集合进行划分 。主要针对穷举进行设计

分类有效等价类:符合需求范围之内;无效等价类:符合需求范围之外。

用法:有效等价类取1个,每个无效集合取1个

步骤:1、明确需求;2、确定有效和无效等价类;3、提取数据编写测试用例 

案例1:验证QQ账号的合法性(要求6-10位自然数)

1,明确需求

要求QQ账号为6-10位自然数

2,划分有效等价和无效等价类

有效等价类:8位自然数

无效等价类:3位非自然数,12位非自然数,8位非自然数,为空

3,提取数据编写用例

有效:12345678

无效:123,123456789012,1234567A,为空

测试用例设计

用例编号用例标题项目/模块优先级前置条件测试步骤测试数据预期结果
QQ001QQ合法(8位自然数)qq账号p01、打开验证QQ程序1、输入QQ号
2、点击验证
账号:12345678QQ合法
QQ002QQ不合法(3位自然数)qq账号p11、打开验证QQ程序1、输入QQ号
2、点击验证
账号:123QQ不合法
QQ003QQ不合法(12位自然数)qq账号p11、打开验证QQ程序1、输入QQ号
2、点击验证
账号:123456789012QQ不合法
QQ004QQ不合法(8位非自然数)qq账号p11、打开验证QQ程序1、输入QQ号
2、点击验证
账号:1234567AQQ不合法
QQ005QQ不合法(为空)qq账号p11、打开验证QQ程序1、输入QQ号
2、点击验证
账号:为空QQ不合法

案例2: 验证某城市电话号码正确性 

1,明确需求

1. 区号:空或者是三位数字
2. 前缀码:非“0”且非“1”开头的三位数字

3. 后缀码:四位数字

(主要包括:长度、类型、规则)

2,划分有效等价和无效等价类

3,提取数据编写用例

等价类设计:共10个测试用例,其中:

有效等价类2个,分别为:空2341234,1232341234

无效等价类8个,及区号是无效数据需要前缀码和后缀码都是有效数据,依次组合,共有8个

参数说明有效有效数据无效无效数据
区号长度空,3位1、空
2、123
非3位12
前缀码4位234非3位23
后缀码4位1234非4位123
区号类型数字/非数字12A
前缀码数字/非数字23A
后缀码数字/非数字123A
区号规则////
前缀码非0且非1开头/0开头,1开头1、012
2、123
后缀码////

 测试用例

用例编号用例标题项目/模块优先级前置条件测试步骤测试数据预期结果
tel_001合法(区号为空+其他正确)电话p0打开验证电话程序1、输入区号
2、输入前缀码
3、输入后缀码
4、点击验证
1、区号:空
2、前缀码:234
3、后缀码:1234
合法
tel_002合法(区号为3位数字+其他正确)电话p1打开验证电话程序1、输入区号
2、输入前缀码
3、输入后缀码
4、点击验证
1、区号:123
2、前缀码:234
3、后缀码:1234
合法
tel_003不合法(区号为2位数字+其他正确)电话p1打开验证电话程序1、输入区号
2、输入前缀码
3、输入后缀码
4、点击验证
1、区号:12
2、前缀码:234
3、后缀码:1234
不合法
tel_004不合法(2位非0且非1前缀码+其他正确)电话p1打开验证电话程序1、输入区号
2、输入前缀码
3、输入后缀码
4、点击验证
1、区号:空
2、前缀码:23
3、后缀码:123
不合法
tel_005不合法(后缀为3位数字+其他正确)电话p1打开验证电话程序1、输入区号
2、输入前缀码
3、输入后缀码
4、点击验证
1、区号:空
2、前缀码:234
3、后缀码:123
不合法
tel_006不合法(区号为非3位数字+其他正确)电话p1打开验证电话程序1、输入区号
2、输入前缀码
3、输入后缀码
4、点击验证
1、区号:12A
2、前缀码:234
3、后缀码:1234
不合法
tel_007不合法(前缀为非0且非1的非3位数字+其他正确)电话p1打开验证电话程序1、输入区号
2、输入前缀码
3、输入后缀码
4、点击验证
1、区号:空
2、前缀码:23A
3、后缀码:1234
不合法
tel_008不合法(后缀为非4位数字+其他正确)电话p1打开验证电话程序1、输入区号
2、输入前缀码
3、输入后缀码
4、点击验证
1、区号:空
2、前缀码:23A
3、后缀码:123A
不合法
tel_009不合法(前缀为0开头的三位数字+其他正确)电话p1打开验证电话程序1、输入区号
2、输入前缀码
3、输入后缀码
4、点击验证
1、区号:空
2、前缀码:012
3、后缀码:1234
不合法
tel_010不合法(前缀为1开头的三位数字+其他正确)电话p1打开验证电话程序1、输入区号
2、输入前缀码
3、输入后缀码
4、点击验证
1、区号:空
2、前缀码:123
3、后缀码:1234
不合法

适用场景 

针对:需要有大量数据测试输入,但是没法穷举测试的地方
如,输入框、下拉列表、单选复选框
典型代表:页面的输入框类测试

6.2、边界值分析法

使用边界值解决位数限制的问题。 

边界范围节点

选取正好等于、刚好大于、刚好小于边界的值作为测试数据
上点:边界上的点(正好等于)
离点:距离上点最近的点(刚好大于、刚好小于)

内点:范围内的点(区间范围内的数据,一般取居中,方便与离点区别)

提示:
1、有关范围限制,最多7条用例 (暂时未优化)
2、边界值能解决位数限制问题,但是不能解决类型问题(要结合等价类)

 边界值分析法设计用例的步骤

1、明确需求
2、确定有效和无效等价类

3、确定边界范围值
4、提取数据编写测试用例

案例1 :通过边界值法验证标题长度的合法性

1、明确需求

标题长度大于0,小于等于30个字符
2、确定有效和无效等价类(类型)

有效等价:标题长度大于0,小于等于30个字符

无效等价:标题长度大于0,小于等于30个数字

3、确定边界范围值

上点:0位,30位

离点:-1位(长度不可能为负),1位,29位,31位

内点:15位

4、提取数据编写测试用例

用例编号用例标题项目/模块优先级前置条件测试步骤测试数据预期结果
title_001不合法(标题15位纯数字)标题P1打开验证标题程序1、输入标题
2、点击验证
标题:15位数字不合法
title_002不合法(标题为空)标题P1打开验证标题程序1、输入标题
2、点击验证
标题:空不合法
title_003合法(标题30位字符)标题P0打开验证标题程序1、输入标题
2、点击验证
标题:30位字符合法
title_004合法(标题1位字符)标题P0打开验证标题程序1、输入标题
2、点击验证
标题:1位字符合法
title_005合法(标题29位字符)标题P0打开验证标题程序1、输入标题
2、点击验证
标题:29位字符合法
title_006不合法(标题31位字符)标题P1打开验证标题程序1、输入标题
2、点击验证
标题:31位字符不合法
title_007合法(标题15位字符)标题P0打开验证标题程序1、输入标题
2、点击验证
标题:15位字符合法

案例2:通过边界值法验证QQ号码的合法性

1、明确需求

QQ号码为6~10位自然数
2、确定有效和无效等价类(类型)

有效等价:6~10位自然数

无效等价:6~10位非自然数

3、确定边界范围值

上点:6位,10位

离点:5位,7位,9位,11位

内点:8位

4、提取数据编写测试用例

用例编号用例标题项目/模块优先级前置条件测试步骤测试数据预期结果
qq_001不合法(8位非自然数)qqP1打开qq验证程序1、输入qq
2、点击验证
账号:1234567a不合法
qq_002合法(6位自然数)qqP0打开qq验证程序1、输入qq
2、点击验证
账号:123456合法
qq_003合法(10位自然数)qqP0打开qq验证程序1、输入qq
2、点击验证
账号:1234567890合法
qq_004不合法(5位自然数)qqP1打开qq验证程序1、输入qq
2、点击验证
账号:12345不合法
qq_005合法(7位自然数)qqP0打开qq验证程序1、输入qq
2、点击验证
账号:1234567合法
qq_006合法(9位自然数)qqP0打开qq验证程序1、输入qq
2、点击验证
账号:123456789合法
qq_007不合法(11位自然数)qqP1打开qq验证程序1、输入qq
2、点击验证
账号:12345678901不合法
qq_008合法(8位自然数)qqP0打开qq验证程序1、输入qq
2、点击验证
账号:12345678合法

边界值分析法的优化 

结论:7个优化为5个点
上点:必选(不考虑区间开闭)
内点:必选(建议选择中间范围)
离点:开内闭外(考虑开闭区间,开区间选择内部离点,闭区间选择外部离点)

对案例2的测试用例的优化

用例编号用例标题项目/模块优先级前置条件测试步骤测试数据预期结果
qq_001不合法(8位非自然数)qqP1打开qq验证程序1、输入qq
2、点击验证
账号:1234567a不合法
qq_002合法(6位自然数)qqP0打开qq验证程序1、输入qq
2、点击验证
账号:123456合法
qq_003合法(10位自然数)qqP0打开qq验证程序1、输入qq
2、点击验证
账号:1234567890合法
qq_004不合法(5位自然数)qqP1打开qq验证程序1、输入qq
2、点击验证
账号:12345不合法
qq_007不合法(11位自然数)qqP1打开qq验证程序1、输入qq
2、点击验证
账号:12345678901不合法
qq_008合法(8位自然数)qqP0打开qq验证程序1、输入qq
2、点击验证
账号:12345678合法

适用场景

单个输入框,常用的方式:边界+等价类

6.3、判定表法 

判定表:一种以表格形式表达多条件逻辑判断的工具,用于解决多条件依赖问题。

组成

条件桩:列出问题中的所有条件,列出条件的次序无关紧要

动作桩:列出问题中可能采取的操作,操作的排列顺序没有约束

条件项:列出条件对应的取值,所有可能情况下的真假值

动作项:列出条件项的、各种取值情况下应该采取的动作结果

规则
判定表中贯穿条件项和动作项的一列就是一条规则,即一个用例。
假设有n个条件,每个条件的取值有两个(0,1),全组合有2的n次方种规则。

步骤

1、明确需求
2、画出判定表
        1)、列出条件桩和动作

        2)、填写条件项,对条件进行全组合

        3)、根据条件项的组合确定动作项

        4)、简化、合并相似规则(有相同的动作)
3、根据规则编写测试用例 

案例一

1、明确需求

        1)、如果金额大于500元,又未过期,则发出批准单和提货单;

        2)、如果金额大于500元,但过期了,则不发批准单与提货单;

        3)、如果金额小于等于500元,则不论是否过期都发出批准单和提货单;

        4)、在过期的情况下不论金额大小还需要发出通知单 
2、画出判定表
        1)、列出条件桩和动作

        条件桩:金额是否大于500,是否过期

        动作桩:批准单,提货单,通知单 

        2)、填写条件项,对条件进行全组合        

        3)、根据条件项的组合确定动作项

        4)、简化、合并相似规则(有相同的动作)
3、根据规则编写测试用例 

判定表:

金额是否大于500
是否过期
批准单×
提货单×
通知单××

测试用例表:

用例编号用例标题项目/模块优先级前置条件测试步骤测试数据预期结果
order_001发通知单(大于500,过期)订单P0打开订单验证程序1、输入金额
2、输入是否过期
3、点击验证
金额:600
是否过期:过期
发通知单,不发批准单和提货单
order_002发批准单和提货单(大于500,未过期)订单P0打开订单验证程序1、输入金额
2、输入是否过期
3、点击验证
金额:600
是否过期:未过期
发批准单和提货单,不发通知单
order_003发批准单、提货单、通知单(小于500,过期)订单P0打开订单验证程序1、输入金额
2、输入是否过期
3、点击验证
金额:400
是否过期:过期
发批准单、提货单、通知单
order_004发批准单、提货单(小于500,未过期)订单P0打开订单验证程序1、输入金额
2、输入是否过期
3、点击验证
金额:400
是否过期:未过期
发批准单、提货单

 案例二

1、明确需求

        1)、输入的第一列字符必须是A或B
        2)、第二列字符必须是一个数字
        3)、如果第一列字符不正确,则给出信息L
        4)、如果第二列字符不正确,则给出信息M
        5)、如果两列字符输入正确,则修改文件成功
2、画出判定表
        1)、列出条件桩和动作

        条件桩:第一列是A或B,第二列是数字

        动作桩:输出L,输出M,修改文件成功

        2)、填写条件项,对条件进行全组合        

        3)、根据条件项的组合确定动作项

        4)、简化、合并相似规则(有相同的动作)
3、根据规则编写测试用例 

判定表:

第一列是A或B
第二列是数字
输出L××
输出M××
文件修改成功×××

测试用例表:

用例编号用例标题项目/模块优先级前置条件测试步骤测试数据预期结果
file_001文件修改成功(第一列是A或B,第二列是数字)文件P0打开文件修改工具1、输入第一列
2、输入第二列
3、点击验证
第一列:A
第二列:1
文件修改成功
file_002输出M(第一列是A或B,第二列不是数字)文件P1打开文件修改工具1、输入第一列
2、输入第二列
3、点击验证
第一列:A
第二列:a
输出M
file_003输出L(第一列不是A或B,第二列是数字)文件P1打开文件修改工具1、输入第一列
2、输入第二列
3、点击验证
第一列:C
第二列:1
输出L
file_004输出M,L(第一列不是A或B,第二列不是数字)文件P1打开文件修改工具1、输入第一列
2、输入第二列
3、点击验证
第一列:C
第二列:a
输出M,L

适用场景 

有多个输入条件,多个输出结果,输入条件之间有组合关系,输入条件和输出结果之间有依赖(制约)关系

判定表一般适用于条件组合数量较少的情况(比如4个条件以下) 

提示:
1、多条件之间有依赖关系,使用判定表来进行测试覆盖。

2、判定表一般适合4个以内条件依赖关系
3、如果条件超过4个,就不适合覆盖所有条件,应采用 (正交法) 来解决 

6.4、场景法

重点:
1、覆盖业务测试,需要使用流程图法

2、先测试业务,在测试单功能、单模块、单页面 

流程图

提示:业务用例是根据流程图来梳理的,需要先了解流程图,用于梳理业务用例

场景法

说明:
场景法也可以叫流程图法,是用流程图描述用户的使用场景,然后通过覆盖流程路径来设计测试用例。
意义:
用户使用角度:用户平时使用的不是单个功能,而是多个功能组合起来进行使用。
测试人员角度:平时测试的都是单个功能点进行测试,容易忽略多个功能的组合测试 。

根据实际的应用场景,来测试业务用例,可以使用场景法,业务用例必须先测

案例一,ATM机取款流程图:

测试用例:

用例编号用例标题项目/模块优先级前置条件测试步骤测试数据预期结果
ATM_001取款失败(非银行卡)ATMP1打开ATM验证工具1、插入卡卡:会员卡取款失败,提示非银行卡,退卡
ATM_002取款失败(密码错误三次)ATMP1打开ATM验证工具1、插入卡
2、输入密码
卡:银行卡
密码:错误密码
取款失败,提示密码错误达3次,吞卡
ATM_003取款失败(账户余额不足)ATMP11、打开ATM验证工具
2、卡余额为零
1、插入卡
2、输入密码
卡:银行卡
密码:正确密码
取款失败,提示余额不足,退卡
ATM_004取款失败(取款金额不正确)ATMP11、打开ATM验证工具
2、卡余额为10000
1、插入卡
2、输入密码
3、输入取款金额
卡:银行卡
密码:正确密码
取款金额:1
取款失败,提示不是正确金额,只能取100或100的倍数
ATM_005取款失败(ATM机余额不足)ATMP11、打开ATM验证工具
2、卡余额为10000
3、ATM余额为0
1、插入卡
2、输入密码
3、输入取款金额
卡:银行卡
密码:正确密码
取款金额:1000
取款失败,提示故障!
ATM_006取款成功(取款业务)ATMP01、打开ATM验证工具
2、卡余额为10000
3、ATM余额为20000
1、插入卡
2、输入密码
3、输入取款金额
卡:银行卡
密码:正确密码
取款金额:1000
取款成功,打印凭证,退卡

6.5、错误推荐法 

定义:通过经验推测系统可能出现的问题 

思想:根据经验列举出可能出现问题的清单,根据清单分析问题可能原因,推测发现缺陷

应用场景:

所有的用例都测验完了之后,且bug修改完毕,即将上线时,这段时间可以使用错误推荐法
1、根据之前项目类似经验找出易出错的模块重点测试

2、通过该方法列出之前出现问题较多的模块再次测试

时间紧任务量大怎么解决任务: 和产品沟通之后先测试主要的业务,把主要的业务覆盖,然后再去覆盖主要的模块,正向,逆向。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值