件测试基础知识简介什么是软件测试
软件测试是软件需求分析、测试计划分析、测试用例分析、测试用例设计、测试用例执行等一系列过程活动。 它必须在整个软件测试周期内,在软件项目的各个阶段,进行针对性不同的内容测试活动,保证各个阶段的正确性。
为什么要进行软件测试
如果安装的软件是未经测试的软件,则在使用过程中可能会出现软件堵塞、帐户被盗或资金被挪用的情况。 软件测试工程师的出现是为了避免这个问题。
一、开发模式
1、瀑布模型
计划——需求分析——设计——代码——测试——http://www.Sina.com/
线性化研发模型各阶段具有里程碑特性、文档驱动困难的阶段评审机制特点
有利于人员在大型软件开发过程中的组织和管理有利于开发方法和工具的使用提高了软件的质量和效率优点
不灵活的缺点
用户需求——需求分析——概要设计——详细设计——代码——单元测试3354集成测试——系统测试——验收测试
2、V模型
软件测试分为几个层次,提高软件质量的软件测试和开发水平一对一优点
软件测试的对象不仅是程序,文档验收测试也是最后阶段,需求分析阶段的问题只能在验收测试中发现。
缺点在开发活动测试活动的同时进行软件测试的对象不仅是程序,还包括文档,可以通过提前投入测试来降低开发成本。
不可重复(相对的、非绝对的)
3、W模型
首先引入探索性测试的研发模式,将软件分为几个领域,集成形成最终的软件
优点
非线性研发模型引入风险管理进行评价
缺点
非线性开发模型,也称为原型定义,主要适用于小公司,客户最后了解软件的情况,首先制作demo (模型或风格),为客户进行产品预演示
二、开发方式
4、X模型
每次只设计和实现一小部分产品,逐步完成的方法叫迭代开发,每次设计和实现的阶段叫迭代
5、螺旋模型
降低需求更改成本通过早期用户反馈进行持续集成和测试
6、快速原型
敏捷开发以用户需求的进化为中心,以反复的、逐次的方法进行软件开发
敏捷开发的核心价值观:
个人交流比流程和工具重要(个人交流主要指人与人之间的交流)可用软件比完整文档重要,客户合作比合同谈判响应的变化重要,计划
1、迭代开发
敏捷确实是项目进入了实质性的开发迭代阶段,用户很快就能看到基线框架版的产品,敏捷注重市场的快速反应能力
优点
注重敏捷的交流忽视了文档的重要性。 项目出行者过多会给维护带来很多困难,项目有很多初学者会让资深员工疲惫不堪
tips :
敏捷和迭代不同,但他们不能分离。 迭代开发与敏捷开发相结合,既保证了产品质量,又在项目产品持续改进中具有一定优势,吸取精华,剔除其糟粕。 只有这样,项目才能接近完美。
这里给大家准备了我从大学到大厂工作的软件测试资料,无偿分享给大家,需要的可以点击自取
三、项目中成员
1、项目经理(PM )。
2、架构师
3、程序员
4、软件测试工程师
5、资料工程师
6、配置管理员(CMO )。
7、QA
8、产品经理(BA )。
9、用户界面设计
10、数据库管理员(DBA )。
四、软件生命周期要求——设计——代码3354测试3354维护——升级——淘汰
五、软件测试流程需求分析——测试计划——测试方案——测试用例3354测试运行——测试报告
六、软件测试定义是在规定条件下操作程序,发现缺陷,评估软件质量
七、软件测试的目的是尽可能多地发现软件缺陷,预防缺陷,评估软件质量,提高软件质量
八、测试范围或对象程序、文档、数据
九、软件测试原则1、所有测试应追溯到用户需求
需求是软件测试的依据2、应该以尽快测试、不断测试为测试者的座右铭
早期测试可以降低开发成本,持续测试可以提高软件质量3、不能进行完整测试,测试需要中止
成本和现实的考虑4、测试不能反映程序的潜在缺陷
缺陷可能只在特定的情况下出现5、避免程序员检查自己的程序
开发要沿袭以前的开发想法来寻找问题,很难发现问题点
>6、充分留意程序缺陷的富集
二八定律,80%的缺陷会出现在20%的模块中
7,、避免出现测试的随机性
测试需要计划,节约成本和人力 十 、软件测试分类
按照开发阶段划分(开发中阶段)
单元测试
单元测试也叫模块测试,是针对软件测试设计最小单位————程序模块进行正确性检验的测试工作。其目的在于检查每个程序单元能否正确实现详细设计说明中的模块功能、性能、接口和设计约束等要求,发现各模块内部可能存在的各种错误。单元测试需要从内部结构出发设计测试用例。多个模块可以平行的独立进行单元测试。(这也是开发人员在开发过程中用的最多的一种方法。
测试依据:详细设计
测试人员:90%都是开发人员
集成测试
集成测试也叫组装测试,通常是在单元测试的基础上,将所有的程序模块进行有序的、递增的测试。集成测试是检验程序单元或部件的接口关系,逐步成为符合概要设计要求的程序部件或整个系统。
测试依据:概要设计
测试人员:软件测试工程师集成的分类:非增量式集成:一次性集成
增量式集成:
自顶向下增量式集成:测试桩
自下而上的增量式集成:驱动程序
( 开发完成阶段)
确认测试
确认测试也叫有效性测试,在模拟环境下,验证软件所有功能和性能以及其他特性是否与用户的预期要求一致(也就是前面确认的概念,确定软件是否实现功能。一般都是正向测试(也叫冒烟测试)一般不是正式的测试阶段。)
系统测试
系统测试是在真实的系统运行环境下,检查完整的程序系统是否和系统正确配置、连接,并最终满足用户的所有需求
1、这也是系统所有功能正式的,全面的测试。
2、模拟所有的软件用户的操作。
3、全方位的测试,包括承载硬件、外设、网络和软件系统、支持平台,与其他的软件的关系。
4、系统测试的分类和范围:
功能测试:测试系统功能是否实现
性能测试:测试系统所消耗的时间和资源
压力测试:系统在什么情况下会达到基线
容量测试:测试系统的最大访问用户数
安全测试:验证系统是否会被攻击
可用性测试:验证系统是否容易使用
GUI测试:界面测试
安装测试:安装和卸载是否正常
异常测试:检查系统对异常情况下的处理
配置测试:测试系统软件和硬件的最优配置
备份测试:测试系统的数据备份
健壮性测试:用于检测系统出现故障时,能否自行恢复或者忽略故障继续运行
文档测试:测试帮助文档
在线帮助测试:联系产品的售后客服
网络测试:在不同网络环境下进行测试(2G,3G,4G,5G,WiFi等)
稳定性测试:软件长时间运行,测试系统是否能够长时间运行
验收测试
是软件测试的最后一个环节。按照项目的任务书或者合同、供需双方约定的验收依据文档进行的对整个系统的测试与评审,决定是否接收或者拒收系统。
1、一般是由供求双方达成的,一般有两种种及验收测试主体。
α测试:软件开发商自己进行的交付前的测试。(非正式验收测试)
β测试:软件需求方自己进行的测试。(正式验收测试)
α测试与β测试的区别:1、α测试是由公司内部人员测试,β测试由典型用户测试
2、α测试发现的BUG可以控制,β测试发现的BUG不可控
3、α测试使用的是测试环境,β测试使用的是 现网环境
4、α测试发现的问题可以及时修复,β测试发现的问题只能集中统一修复
按照代码运行划分
静态测试
指不实际运行被测对象,而只是静态的检查程序代码、界面或者文档中可能存在错误的过程。
1、代码测试:主要测试代码是否符合相应的标准和规范。
2、界面测试:主要测试软件的实际界面与需求中的说明是否相符。
3、文档测试:主要测试用户手册和需求说明是否真正符合用户的实际需求。
动态测试
指实际运行被测对象,输入相应的测试数据,检查实际输出结果和预期结果是否相符的过程。
所以我们判断一个测试属于动态测试还是静态测试,唯一的标准就是看是否运行程序
按照测试技术分类
黑盒测试
通过软件的外部表现来发现其缺陷和错误。黑盒测试法把测试对象看成一个黑盒子,完全不考虑程序内部结构和处理过程。黑盒测试实在程序界面处进行测试,它只是捡查程序是否按照需求规格说明书的规定正常实现。
白盒测试
通过对程序内部结构的分析,检测来寻找问题,白盒测试法把测试对象看成一个透明盒子,检查是否所有的结构以及路径都是正确的,检查软件内部动作是否按照设计说明的规定正常进行。白盒测试也叫结构测试。
灰盒测试
介于白盒黑盒之间的测试,关注输入的正确性;同时也关注内部表现,但这种关注不像白盒测试那样详细、完整,只是通过一些表征性的现象、事件、标志来判断程序内部的运行状态。
其他测试
回归测试
是指对软件新版本测试时,重复执行之前某一个重要版本所有测试用例。
目的:
1、验证之前版本产生的所有缺陷已经全部被修复
2、确认修复这些缺陷没有引发新的缺陷
冒烟测试
是指在对一个新版本进行系统大规模测试之前,先验证一下软件的基本功能是否实现,是否具备可测性。
随机测试
是指测试人员基于经验和直觉的测试,发现一些边缘性的错误。
猴子测试
把自己当作不懂产品的用户。随意乱点,没有任何主观意识和规律的点击,让一些意想不到的操作造成错误的结果。
这里给大家准备了我从大学到大厂工作的软件测试资料,无偿分享给大家,需要的可以点击自取