文章目录
1.什么是测试
(找出软件中存在的bug,提高产品的质量,提升用户的体验)软件测试就是利用测试工具按照测试方案和流程对产品进行功能和性能测试,甚至根据需要编写不同的测试工具,设计和维护测试系统,对测试方案可能出现的问题进行分析和评估。执行测试用例后,需要跟踪故障,以确保开发的产品适合需求。
2.测试流程
一、**测试需求分析阶段:**阅读需求,理解需求,主要就是对业务的学习,分析需求点。
参与需求评审会议
二、测试计划阶段:主要任务是编写测试计划,参考软件需求规格说明书、项目总体计划,内容包括测试范围(来自需求文档)、进度的安排,人力物力的分配,整体测试策略的制定,和风险的评估与规避措施有一个制定,一般有测试负责人编写,当然我们也会参与相关的评审工作。
三、测试设计阶段:主要任务是编写测试用例,会参考需求文档(原型图)、概要设计、详细设计等文档,有不明确的也会及时和开发、产品经理沟通。用例编写完成后会进行评审。
四、**测试执行阶段:**首先搭建测试环境,执行预测(冒烟),以判定当前版本可测与否,如果预测通过,正式进入系统测试,遇到问题提交Bug到缺陷管理平台,并对bug进行跟踪,直到被测软件达到测试需求要求,没有重大bug,测试结束。
五、**测试评估阶段:**出测试报告,对整个测试的过程和版本质量做一个详细的评估。确认是否可以上线。
3.测试方法有哪些
1、按是否查看程序内部结构分为:
(1)黑盒测试(black-box testing):只关心输入和输出的结果
(2)白盒测试(white-box testing):去研究里面的源代码和程序结构
2、按是否运行程序分为:
(1)静态测试(static testing):是指不实际运行被测软件,而只是静态地检查程序代码、界面或文档可能存在的错误的过程。
静态测试包括:
对于代码测试,主要是测试代码是否符合相应的标准和规范。
对于界面测试,主要测试软件的实际界面与需求中的说明是否相符。
对于文档测试,主要测试用户手册和需求说明是否真正符合用户的实际需求。
(5)动态测试(dynamic testing),是指实际运行被测程序,输入相应的测试数据,检查输出结果和预期结果是否相符的过程
3、按阶段划分:
(1)单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。
桩模块(stud)是指模拟被测模块所调用的模块,驱动模块(driver)是指模拟被测模块的上级模块,驱动模块用来接收测试数据,启动被测模块并输出结果。
(2)集成测试(integration testing),是单元测试的下一阶段,是指将通过测试的单元模块组装成系统或子系统,再进行测试,重点测试不同模块的接口部门。
集成测试就是用来检查各个单元模块结合到一起能否协同配合,正常运行。
(3)系统测试(system testing),指的是将整个软件系统看做一个整体进行测试,包括对功能、性能,以及软件所运行的软硬件环境进行测试。
系统测试的主要依据是《系统需求规格说明书》文档。
(4)验收测试(acceptance testing),指的是在系统测试的后期,以用户测试为主,或有测试人员等质量保障人员共同参与的测试,它也是软件正式交给用户使用的最后一道工序。
验收测试又分为a测试和beta测试,其中a测试指的是由用户、 测试人员、开发人员等共同参与的内部测试,而beta测试指的是内测后的公测,即完全交给最终用户测试。
4、黑盒测试分为功能测试和性能测试:
1)功能测试(function testing),是黑盒测试的一方面,它检查实际软件的功能是否符合用户的需求。
包括逻辑功能测试(logic function testing)
界面测试(UI testing)UI=User Interface
易用性测试(usability testing):是指从软件使用的合理性和方便性等角度对软件系统进行检查,来发现软件中不方便用户使用的地方。
兼容性测试(compatibility testing):包括硬件兼容性测试和软件兼容性测试
2)性能测试(performance testing)
软件的性能主要有时间性能和空间性能两种
时间性能:主要指软件的一个具体事务的响应时间(respond time)。
空间性能:主要指软件运行时所消耗的系统资源。
软件性能测试分为:
一般性能测试:指的是让被测系统在正常的软硬件环境下运行,不向其施加任何压力的性能测试。
稳定性测试也叫可靠性测试(reliability testing):是指连续运行被测系统检查系统运行时的稳定程度。
负载测试(load testing):是指让被测系统在其能忍受的压力的极限范围之内连续运行,来测试系统的稳定性。
压力测试(stress testing):是指持续不断的给被测系统增加压力,直到将被测系统压垮为止,用来测试系统所能承受的最大压力。(Validate the system or software can allowed the biggest stress.)
5、其他测试类型:
回归测试(regression testing)是指对软件的新的版本测试时,重复执行上一个版本测试时的用例。(When a new build or release is deployed, repeat all the test cases which has executed in the last build or release.)
冒烟测试(smoke testing),是指在对一个新版本进行大规模的测试之前,先验证一下软件的基本功能是否实现,是否具备可测性。(validate the major function is deployed or not in software of system when a new build or release is implement.)
随机测试(random testing),是指测试中所有的输入数据都是随机生成的,其目的是模拟用户的真实操作,并发现一些边缘性的错误。(means or all the test data is random, to validate the some edge bugs.)
4.测试用例编写方法(另一个参考链接 几个常用设计测试用例的方法总结 - 简书 (jianshu.com))(黑盒测试方法)
一、等价类、边界值
等价类分为:
有效等价类–在取值范围内
无效等价类—在取值范围外
边界值:错误更可能出现在输入的附近趋势 +1和-1,用此边界值需考虑三点:上点,离点,内点 一般会选择6个数据进行测试
总结:编写测试用例需要从各方面考虑并根据我们测试用例方法来编写,测试用例的设计都是循序渐进的过程并不能一步到位。
二、因果图
- 1、什么是因果图;通过画图的方式进行表达输入条件和输出结果之间的关系
- 2、因果图的核心:
1.因–原因–输入条件 果–结果—输出结果 2.确定原因,根据用户的需求来确定原因,因为这些原因会导致一些结果和影响 3.我们测试人员就要理解被测系统的判断逻辑过程 4.通常因果图是判定表的一个前置过程
5.一般 a.输入与输出的关系 b.输入与输入的关系
- 3、因果图的基本符号
恒等 a=b 当输入条件发生时,结果一定会出现
非 a!=b 当输入条件发生时,结果不发生
或 a v b 当输入条件有一个为真的,输出结果就为真
与 a ^ b 当输入条件有一个为假的,输出结果就为假
- 4、因果图的约条件
互斥(异):如果选择只能选择一个,但可以不选
包含(或):至少选择一个,可以多选但不能不选
唯一: 必须选择一个,唯一与互斥的区别:唯一必须选择一个,互斥可以选一个也可以都不选
因果图设计测试用例步骤
- 找出所有输入条件
- 明确所有输出结果
- 明确所有输入条件之间的制约关系与组合关系 a.哪些条件可以组合 b.哪些条件不可以组合
- 找出什么样的输入条件会产生哪些输出结果
- 明确输出结果之间的相互制约关系
- 根据因果图写判定表
- 根据判定表设计测试用例
**小结:**1、因果图主要考虑控件之间条件的组合关系
2、控件过多,组合量大的情况下不宜使用因果图法
三、判定表
- 前言: 判定表建立在因果图的基础上
- 定义: a.分析和表述若干输入条件下,被测对象针对这些输入条件做出的响应工具,判定表属 于工具,是由开发设计方式方法延伸到测试领域 b.遇到复杂的业务逻辑可以使用该表理 清业务逻辑
- 重要概念: a.条件------条件桩------需求说明书定义被测对象的所有输入条件 条件项------针对 条件桩所有可能输入数据的真假值 b.动作----动作桩----针对条件对象可能采取的所有操作 动作项-----针对动作桩被测对象响应的可能取值结果 规则:动作项和条件项组合在一起,形成业务逻辑处理规则
- **判定表应用步骤:**a.理解需求确定条件桩和动作桩 条件桩=输入条件 动作桩=输出结果 动作项=结果的状态 b.设计优化我们的判定表 c.填写动作项 也就是业务逻辑 d.根据我们的判定表输出结果的表现,进行判定表的合并(选操作) e.抽取测试用例:判定表给出的只是规则,不像边界值,等价类可以直接给出测 试用例 f.编写测试用例
- **小结:**a.判定表的优缺点 优点:能够将复杂的问题按照各种可能的情况列举出来,简明并避免遗漏,能够通过正式计算出测试用例的条数 缺点:输入条件之间限制条件不好表达,解决方案,挑些备注,描述限制关系 当输入次数过多,规则以2的你n次方剧增时,判定表就会庞大,这是还会造成逻辑缺失,业务混乱,所以需细致分析,尽可能划分多个需求项 b.电商项目使用居多 c.因果图、判定表 适合测试控件的组合情况,而且适合测试组合数量比较少的情况 常见控件有(按钮、单选按钮、复选框、下拉框) d.判定表的特点:输入条件的顺序无关紧要 输出结果顺序无关紧要 先测哪种组合,后测哪种组合无关紧要 每种组合互相独立
- 判定表的计算公式:条件有7种 结果状态有2种 则条件数为27
四、正交排列表
**A.定义:**一种特制的表一般正交表记为LnMk
n代表行数 也就是需求侧卧时组合的行数
k代表列数 表述控件的个数(因素的个数或因子的个数)
M 每个控件包含的取值个数(各因子的水平数即各因素的状态数)
L 正交表的代号
B.因子:所有参与试验影响结果的条件
C. 影响实验结果因子的取值或输入
特点:分布均匀,整齐可比
L9(34)表示 有4个因子 每个因子有3个取值 9是需求测试组合的个数 n=k*(m-1)+1 n为序号
D.小结:正交表中的因子,判定表种的条件桩
优 点:可以把最优的部分筛选出来
缺点:经常遗漏一些测试
五、场景法
A.定义:模拟用户操作软件的场景 常用于冒烟测试
B.核心概念:
a.基本流-–按照正确的业务流程来实现的仅有一条操作路径
b.备选流—导致流程出现错误的操作流程(模拟错误的操作流程)
基本流:
1、开始→插入银行卡→卡合法→提示输入密码→用户输入密码或取消→密码正确→提示输入金→用户输入金→用户确认→输入100单位金额→余额足够→不超过取款限额→输出超屏给用户,退卡→用户取走现金,取走银行卡→界面回复初始状态
备选流:
2、开始→输入银行卡→卡不合法→提示error1,退卡
3、开始→输入银行卡→卡合法→提示输入密码→用户输入密码或取消→取消→退卡
4、开始→输入银行卡→卡合法→提示输入密码→用户输入密码或取消→密码不正确→输入错误3次→吞卡
5、开始→输入银行卡→卡合法→提示输入密码→用户输入密码或取消→密码不正确→输入错误不超过3次→输入正确→提示输入金额→用户输入金额→用户确认→输入100单位金额→余额足够→提示error3,退卡
6、开始→输入银行卡→卡合法→提示输入密码→用户输入密码或取消→密码不正确→输入错误不超过3次→输入正确→提示输入金额→用户输入金额→用户确认→输入100单位金额→提示error2→输入金额→确认金额→输入100单位金额→提示error3,退卡
7、开始→输入银行卡→卡合法→提示输入密码→用户输入密码或取消→密码不正确→输入错误不超过3次→输入正确→提示输入金额→用户输入金额→用户确认→输入100单位金额→余额足够→不超过取款限额→提示error4,退卡
8、开始→输入银行卡→卡合法→提示输入密码→用户输入密码或取消→密码不正确→输入错误不超过3次→重新输入正确→提示输入金额→用户输入金额→用户确认→输入100单位金额→提示error2→输入金额→确认金额→输入100单位金额→不超过取款限额→提示error4,退卡
9、开始→输入银行卡→卡合法→提示输入密码→用户输入密码或取消→密码不正确→输入错误不超过3次→重新输入正确→提示输入金额→用户输入金额→用户确认→输入100单位金额→提示error2→输入金额→确认金额→输入100单位金额→不超过取款限额→输出钞票,退卡→用户取走现金,取走银行卡→界面恢复初始状态
10、开始→输入银行卡→卡合法→提示输入密码→用户输入密码或取消→密码正确→→提示输入金额→用户输入金额→用户确认→输入100单位金额→提示error2→输入金额→确认金额→输入100单位金额→提示error3,退卡
11、开始→输入银行卡→卡合法→提示输入密码→用户输入密码或取消→输入正确→提示输入金额→用户输入金额→用户确认→输入100单位金额→余额足够→不超过取款限额→提示error4,退卡
12、开始→输入银行卡→卡合法→提示输入密码→用户输入密码或取消→输入正确→提示输入金额→用户输入金额→用户确认→输入100单位金额→提示error2→输入金额→确认金额→输入100单位金额→不超过取款限额→提示error4,退卡
13、开始→输入银行卡→卡合法→提示输入密码→用户输入密码或取消→输入正确→提示输入金额→用户输入金额→用户确认→输入100单位金额→提示error2→输入金额→确认金额→输入100单位金额→不超过取款限额→输出钞票,退卡→用户取走现金,取走银行卡→界面恢复初始状态
六、状态转换图
**A.定义:**关注被侧对象的状态变化,在需求规格中是否有不可到达的状态和非法状态
B.状态:在被测对象待定输入的条件下能不能保持响应形式
C.方法流程:a、分析需求划状态节点 b、画状态树 c、写测试用例
D.小结:先写主要操作 为减少测试用例数量 沿着状态转换图一条路径
七、大纲法
A.定义:检查窗口与窗口之间的联系 每一个窗口有对歌动作,为了弄清楚窗口之间的关系,或说动作之间 的联系,可以使用测试大纲法
**B.步骤:**a、找所有窗口以及每个窗口的输入动作,注意先后顺序
b、找到各个窗口之间的关系,并依据此编写测试用例
适用于软件安装程序测试,检查界面测试要点以及窗口之间的变化
QQ五笔输入法
1、点击取消,若不下载,则点“是” 否则点“否”
2、搜索qq五笔输入法,下载安装包 点击下一步
3、阅读协议后,点击上一步,返回2步骤
4、点击取消,则步骤1
5、点击我接受,
6、点击浏览,选择安装目录
7、选择上一步,返回步骤5
8、点击取消,则执行步骤1
9、点击“安装”
安装页面,等待安装
10、无法点击“上一步”和“取消”
11、默认,系统初始值,点击“下一步
12、安装完成,点击“完成”
测试用例:
1、下载→取消→是
2、下载→取消→否→返回下载
3、下载→下一步→取消→是
4、下载→下一步→取消→否→返回上一步
5、下载→下一步→返回上一步
6、下载→下一步→我接受→取消→是
7、下载→下一步→我接受→取消→否→返回人接受
8、下载→下一步→我接受→浏览→储存目录选择
9、下载→下一步→我接受→上一步→返回我接受
10、下载→下一步→我接受→安装→下一步→完成
八、错误推断法
A.定义:基于经验和直觉推断程序中所有可能存在的各种错误,从而出针对性设计测试用例
三点要素:经验,知识,直觉
九、测试方法总结
十、白盒测试及其基本方法
-
概述
白盒测试也称结构测试或逻辑驱动测试,它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作。 这一方法是把测试对象看作一个打开的盒子,测试人员依据程序内部逻辑结构相关信息,设计或选择测试用例,对程序所有逻辑路径进行测试,通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。
-
基本方法
强度由低到高:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。
(1)语句覆盖:就是设计若干个测试用例,运行被测程序,使得每一可执行语句至少执行一次。
(2)判定覆盖:使设计的测试用例保证程序中每个判断的每个取值分支至少经历一次。
(3)条件覆盖:条件覆盖是指选择足够的测试用例,使得运行这些测试用例时,判定中每个条件的所有可能结果至少出现一次,但未必能覆盖全部分支
(4)判定条件覆盖:判定-条件覆盖就是设计足够的测试用例,使得判断中每个条件的所有可能取值至少执行一次,同时每个判断的所有可能判断结果至少执行,即要求各个判断的所有可能的条件取值组合至少执行一次。
(5)条件组合覆盖:在白盒测试法中,选择足够的测试用例,使所有判定中各条件判断结果的所有组合至少出现一次,满足这种覆盖标准成为条件组合覆盖。
(6)路径覆盖:是每条可能执行到的路径至少执行一次。
补充:(1)语句覆盖在所有的测试方法中是一种最弱的覆盖。
(2)判定覆盖和条件覆盖比语句覆盖强,满足判定/条件覆盖标准的测试用例一定也满足判定覆盖、条件覆盖和语句覆盖(3)路径覆盖也是一种比较强的覆盖,但未必考虑判定条件结果的组合,并不能代替条件覆盖和条件组合覆盖。
- 优缺点
\1. 优点
a.迫使测试人员去仔细思考软件的实现
b.可以检测代码中的每条分支和路径
c.揭示隐藏在代码中的错误
d.对代码的测试比较彻底
e.最优化
\2. 缺点
a.代价昂贵
b.无法检测代码中遗漏的路径和数据敏感性错误
c.不验证规格的正确性