技术标签: # 软件测试
什么是软件测试?*
软件测试是在现有软件中寻找缺陷的过程。
IEEE (1983) 729 软件缺陷一个标准的定义:
从产品内部看,软件缺陷是软件产品开发或维护过程中所存在的错误、毛病等各种问题;
从外部看,软件缺陷是系统所需要实现的某种功能的失效或违背。
开发做的事情:
概要设计和详细设计->数据字典->流程图->数据字典
测试要做的事情:
测试计划->测试方案和测试用例->测试执行->测试报告
需求分析
文档评审
**测试文档:**测试计划 测试方案 测试用例 测试报告
**其他文档:**安装说明书 用户操作手册
**软件开发和软件测试的关系
V模型和W模型
软件测试V模型
**缺点:**测试进入比较晚(局限性)
**单元测试和集成测试:**检测程序的执行是否满足软件设计的要求
**系统测试:**检测系统功能是否达到系统要求的指标
**验收测试:**确定软件的实现是否满足用户需求或合同要求
软件测试W模型(双V模型)
测试人员进入阶段:
1.用户需求:了解需求范围、目的、背景,为验收测试做准备
2.需求分析与系统设计:学习并分析需求,编写测试计划,为系统测试做准备
3.概要设计:搭建测试用例框架,细化测试计划,为集成测试做准备
4.详细设计:细化测试用例框架,为单元测试做准备
5.编码:编写测试用例,进行单元测试(对一个模块进行内部测试)
6.集成’集成测试:(依据:集成测试用例,从编码阶段获取,汲取测试用例进行集成测试)
7.实施’系统测试:(1.搭建环境 2.数据准备 3.执行测试 4.缺陷管理 5.编写测试报告)
8.交付’验收测试:配合用户完成测试,指导用户使用
优点
1.测试与开发同步进行
2.测试的对象不仅是程序,还包括需求和设计
3.尽早发现软件缺陷,可降低软件开发的成本
缺点(局限性)
需求、设计、编码等活动被视为串行的;测试和开发活动也保持着一种线性的前后关系,上一阶段 完全结束,才可正式开始下一个阶段工作。无法支持敏捷开发模式。对于当前软件开发复杂多变的情况,W模 型并不能解除测试管理面临着困惑。
什么是单元测试?
单元测试是开发人员编写,用于测试自己的代码在特定条件下的检测,验证代码的正确性。
单元测试作用。
单元测试是为了保证代码的正确性,代码开发比较复杂,没有人可以保证自己的代码没有任何问题,功能也完整可用,需要通过不同的途径来验证代码的正确性。单元测试就是其中的方式之一。
集成测试,系统测试,验收测试
Alpha测试和Beta测试
**ps:**随机测试由测试经理和产品经理(验收测试)
黑白灰盒测试
按是否需要运行代码(状态划分)
按软件特性分类
按照特性划分:功能测试、性能测试、安全性测试
BA主要侧重哪方面的测试?
UI和用户体验
面试经常可能会问的:
什么是验收测试?
Alpha测试和Beta测试
V模型
测试工程师的职业通道
业务 沟通技巧 测试技能
接口测试 自动测试 性能测试 安全测试 专项测试
测试经理 BA 产品经理 猎头
售前 售后 技术支持
SQA 软件质量保证
流程优化和管理
一,测试用例的概念
测试用例主要记录了测试的过程,步骤,输入的数据,预期结果等内容。它是在执行测试之前由测试人员编写的指导测试的重要文档。
解决要测什么,怎么测和如何去衡量的问题。
测试用例的用途
防止遗漏:使软件测试的实施重点突出,目的明确,确保需求功能不被遗漏。
版本重复测试:快速正确的进行版本重复测试
监督过程:可以准确,有效的评估测试的工作量
评估结果:对产品进行评估,对测试完成情况进行评价
提高效率:避免盲目测试
缩短周期:版本更新和升级时,只需修正少部分用例,资源服用
参考相关文档
需求文档
开发文档
用户手册
如果有软件的早期版本,尽快熟悉软件的使用
与相关人员讨论
常见测试用例模板
Word格式模板
Excel格式模板
工具格式模板
常见的测试方法如下:
测试方法的选择:
1.先关注业务流程和业务逻辑是否正确,考虑场景法。
2.需要输入的地方,考虑等价类划分法,将无限测试转化为有限测试。
3.在任何情况下都要采用边界值分析法,这个测试方法发现错误的能力最强。
4.若输入有组合情况,一开始就要考虑因果图制作出判定表进行测试。
5.对于参数配置类的软件。考虑使用正交排列法,以最少的测试用例获得较大的覆盖率。
6.采用错误推断追加法增加测试用例。
1.等价类
等价类划分的基本概念
等价类划分属于典型的黑盒测试方法,根据程序对数据的要求,把程序的输入域划分若干个部分,区分出那些数据是有效的,那些数据是无效的,从每个部分中选取少数代表性数据作为测试用例。这样,每一类的代表性数据在测试中的作用都等价于这类中的其他值。
有效等价类:
对程序的规格说明有意义,合理的输入数据集合。
如果用户输入有效等价类中的数据,程序应该正确计算,执行。
无效等价类:
对程序的规格说明不合理的或无意义的输入数据集合。
如果用户输入无效等价类中的数据,程序应该给予错误提示或者根本不允许用户输入的数据。
2.边界值:
(1)如果输入条件规定了值的范围,则应取边界点数据,以及边界点两边的数据进行测试。
例如:
两位整数加法器数的范围为-99——99,则应测试-99,-98,-100和99,98,100(注意:有些公司规定需要测试边界点的数据和刚刚超过边界点的数据,即-99、-100和99、100)。
(2)如果输入条件规定了值的个数,则用最大个数及其两边的点、最小个数及其两边的点作为测试数据。
需求:
第一个数和第二个数都是只能输入-99到99之间的整数
对于输入的小于-99的数据或者大于99的数据,程序应给出明确提示
对于输入的小数、字符等非法数据,程序应给出明确提示
**有效等价类:**大于等于-99 并且小于等于99的整数一对
-99,-98,-100和99,98,100
无效等价类: 小于-99的整数、大于99的整数、小数、字符
全部覆盖(整数:超出范围; 小数; 字符;空格)
ps:
特殊字符:‘ “ 中英文全角半角数字普通字符
题目二:
**有效类:**大于等于1小于等于40字节数
**无效类:**小于1大于40字节数,字符中包含 / : * ? " " < >
题目三:
2、万年历查询软件,要求用户输入以年月日表示的日期,然后系统会换算出该日期的农历。假设日期限定在1900年1月1日到2050年13月31日。日期由8位数字字符组成,前4位表示年,中间2位表示月,最后2位表示日期。其中4、6、9、11月有30天。(excl)
二、因果图法和判定表法
1、找出所有的输入条件
2、明确所有的输出结果
3、明确所有输入条件之间的制约关系以及组合关系
哪些条件不能组合在一起
哪些条件可以组合在一起
4、明确所有输出之间的制约关系以及组合关系
哪些输出结果不能组合在一起(不能同时输出)
哪些输出结果可以组合在一起(可以同时输出)
5、找出什么样的输入条件组合会产生哪种输出结果
6、根据因果图,写出判定表
7、根据判定表设计测试用例
题目一:
某需求文档中有这样的说明: 第一列字符必须是A或者B,第二列字符必须是一个数字,在此情况下进行文件的修改。 如果第一列字符不正确,则给出信息L; 如果第二列字符不是数字,则给出信息M。
使用因果图法和判定表设计测试用例基本步骤:
题目二:
原因:
1,售货机有零钱找
2,投入1元硬币
3,投入5角硬币
4,押下橙汁按钮
5,押下啤酒按钮
结果:
21,售货机(零钱找完)灯亮
22,退还一元硬币
23,退还5角硬币
24,送出橙汁饮料
25,送出啤酒饮料
题目三:
需求如下:
交通一卡通自动充值软件系统需求
系统只接收50元或100元纸币,一次充值只能使用一张纸币,一次充值金额只能为50元或100元。
若输入50元纸币,并选择充值50元,完成充值后退卡,提示充值成功;
若输入50元纸币,并选择充值100元,提示输入金额不足,并退回50元;
若输入100元纸币,并选择充值50元,完成充值后退卡,提示充值成功,找零50元;
若输入100元纸币,并选择充值100元,完成充值后退卡,提示充值成功;
若输入纸币后在规定时间内不选择充值按钮,退回输入的纸币,并提示错误;
输入:
投50元
投100元
充值50
充值100
投纸币之后在规定时间选择充值按钮
充值之后不输入纸币
输出:
充值成功
余额不足,并退回50
充值成功,找零50
退回50,提示错误1
退回100,提示错误1
提示错误2
使用场景法编写测试用例
场景法就是模拟用户操作软件时的场景,主要用于测试系统的业务流程。当拿到一个测试任务时,我们并不是先关注某个控件的边界值、等价类是否满足要求,而是先要关注它的主要功能和业务流程是否正确实现,这就需要使用场景法来完成测试。当业务流程测试没有问题,也就是该软件的主要功能没有问题时,我们再重点从边界值、等价类等方面对控件进行测试
判定表驱动法
一、应用场合
在界面中有多个控件,控件之间有多种组合关系,如果组合的数量巨大(一般超过20种),没有必要将所有组合都测试,可以通过正交排列法将组合中最优,最少的组合进行测试。
问题:判定表和正交排列法的异同?
都可以测试控件之间的组合情况
判定表适合测试组合数量比较少(一般少于20种组合的会选择判定表)
正交排列法适合测试组合数量较多的(一般多于20种)
判定表要分析控件之间的组合和限制关系,而正交排列表只需分析控件间组合
正交排列法:
定义:正交排列法能够使用最小的测试过程集合获得最大的测试覆盖率。当可能的输入数据或者输入数据的组合数量很大时,由于不可能为每个输入组合都创建测试用例,可以采用这种方法。
正交试验设计:
思想:是研究多因素多水平的一种设计方法,它是根据正交性从全面试验中挑选出部分有代表性的点进行试验,这些有代表性的点具备了“均匀分散,齐整可比”的特点,正交试验设计是一种基于正交表的、高效率、快速、经济的试验设计方法。
正交表的行数n的计算公式为,n=k(m-1)+1*
正交表集合**
http://support.sas.com/techsup/technote/ts723_Designs.txt
正交排列法使用步骤:
例题:
23 n=4
000
011
101
110
此处0,1是对可能值的编号,
例如,我们可以将(0,1)分别映射为(女,男)(1班,2班)(及格,不及格)
按照上面的格式,
000:女 1班 及格
011:女 2班 不及格
101:男 1班 不及格
110:男 2班 及格
这就是我们所得到的正交表。
实例:确定一个人的基本信息,包括性别(男、女、未知)、年龄(老年、中年、青年)、文化程度(高等、中等、低等)、收入情况(高收入、中收入、低收入),使用正交排列法进行设计测试用例。
步骤:
1.(根据所测程序中控件的个数以及每个控件的取值个数,选取一个合适的正交排列表
):
4个控件:性别、年龄、文化程度、收入情况
每个控件有三个取值
选择合适的正交排列表(L9(34)):
2.把控件列举出来对取值进行编号。
3.把控件和取值进行填充到正交排列表中。
注意:若正交表没有需要的,则选择相对多一些的正交表。
正交表的局限性:
只能找到在附录中给出的表。
若没有正交表则使用混合正交表。
混合正交表:
使用特定工具allpairs.exe
进行改造上一个实例:实例中的性别应该只有两个值:男和女,利用allpairs.exe进行生成混合正交表,
最后依据正交表生成测试用例。
PS:属性设置测试,兼容性测试常用正交排列法
1、笔试题:
1)生命周期模型包括哪些阶段?你们开发的模型是什么?简化文字
问题定义及规划-需求分析-设计-编码测试-运行维护
敏捷开发模型
2)测试流程包含哪些阶段?
需求分析–编写测试用例-评审测试用例-搭建测试环境-等待开发研发完成,提交测试包进行测试(酱油期)-部署测试包-冒烟测试(预测)-执行测试用例-bug跟踪处理(提交及回归bug)……N轮-版本上线-面向客户使用
2、面试题
1)你们公司的开发流程是怎么样的?
了解需求概要设计详细设计编码打包提交测试部-等待测试提交bug-修复bug-等待测试回归bug-……N轮-版本上线-面向用户使用
2)你们公司的测试流程是怎么样的?各个阶段的输出是什么?
测试需求阶段:了解测试需求;
测试计划阶段:编写测试计划;
测试执行阶段:编写测试用例;
测试执行阶段:提交bug到问题库,直到没有重大bug,测试结束,完善测试用例;
测试评估阶段:确认是否可以上线,编写测试报告
文章浏览阅读196次。这一篇是前几篇功能的总结http://blog..net/qq_36688143/article/details/79007120http://blog..net/qq_36688143/article/details/79007067http://blog..net/qq_36688143/article/details/78871406http://blog..net/qq_36688143/..._ssm设置下载路径
文章浏览阅读1.4w次,点赞7次,收藏60次。下面来整理一下 TS 23.502 中的 UE or network requested PDU Session Release for non-roaming and roaming with local breakout 首先是信令流程图:接着是信令流程图的解读: 为什么会有PDU Session Release 流程呢?PDU Session..._5g信令流程详解
文章浏览阅读6.3k次,点赞10次,收藏71次。日常如果我们的个人电脑满足不了某些机器学习/深度学习程序运行需求的话,一般需要在实验室或者公司服务器上跑自己的代码,这里介绍一下如何在linux服务器上运行机器学习/深度学习python程序。首先使用SecureCRT或者Xshell这种远程登录服务器软件登录你的实验室/公司服务器。由于一般用户不会获得root权限,而且系统里的Python版本一般都比较低或者一般都会缺失某些机器学习/深度学习包,那我们就需要在自己的用户文件夹下创建属于自己的虚拟环境。首先当然是要下载安装Anaconda啦。(版本和_linux 怎么跑python ai计算
文章浏览阅读351次。layui 富文本编辑 c#_c#mvc如何获取layui的富文本编辑器
文章浏览阅读538次。http://blog.csdn.net/acorld/article/details/8860397_虚函数 c++ 分类
文章浏览阅读658次。USB Tethering keeps disconnectingUSB Tethering keeps disconnectingAsk QuestionAsked4 years, 8 months agoActive1 year agoViewed17k times147I'm trying to connect via USB tethering from my LG G4. I have Ubuntu 16.04The tethering ..._modemmanager[7773]: couldn't check support for device at '/sys/device
文章浏览阅读2k次,点赞2次,收藏7次。修改idea工具默认版本JDK_idea设置默认jdk版本
文章浏览阅读466次。曲率是描述点云局部特征的重要数值,通常在建筑物边缘以及树木位置的点云曲率较大,而在地面等平面内部点云的曲率较小。设置合理的曲率阈值可以快速区分这两部分点云,条件滤波器是PCL内部灵活的滤波器,可以人为设置滤波条件,因此将二者结合,基于曲率条件进行滤波,得到符合自己理想的点。_基于点的曲率滤波
文章浏览阅读3.3k次。1. 子窗口构造函数设置setWindowFlags(Qt::CustomizeWindowHint|Qt::FramelessWindowHint);hide();this->setParent(parent);2. 父窗口调用显示子窗口假设子窗口为ChildWidgetChildWidget *widget = new ChildWidget(this);widget-&..._qt widget大小绑定父窗体
文章浏览阅读7.7k次,点赞8次,收藏39次。GridControl创建表格1.点击VS“工具箱”的GridControl,在窗体上添加此控件;2.点击“RunDesigner”按钮,进入表格设计界面,点击“Columns”,添加列;3.在“Column properties”列属性中,“FileName”列字段(要与绑定的数据DataTable中的字段名一致),"Cation"(列显示的文字)“,设置完成则创建一个..._this.gridcontrol1.datasource
文章浏览阅读911次。今天同学的电脑坏了,在群里面喊了,并附上截图,截图长这样没遇到过这样的情况,是个妹子我就想着问问情况帮忙,我给那个同学发了个私信,同学qq电话回我,问我能否可以下去看看,我就下去了。我最近也在想将笔记本上的win10改为win7,感觉win10用着实在不顺畅,各种出毛病,加之在系统上用过office的破解软件,之后IE浏览器、onenote、outlook等就再也用不了了。笔记本是独显,最_计算机系统安装心得
文章浏览阅读5.6w次,点赞14次,收藏12次。本文主要介绍了ValueError: Unrecognized configuration class _valueerror: unrecognized configuration class