一、软件测试的基本概念
1、软件测试的定义
就是以发现错误为目的而运行程序的过程。
软件测试员的目标是找到软件缺陷,尽可能早一些,并确保其得以修复。
2、软件测试方法总体分类
试图验证软件是“工作的”(所谓“工作的”就是指软件的功能是按照预先的设计执行的)。
设法证明软件是“不工作的”。
两类方法的优劣对比:虽然软件测试总的目的是为了软件产品的质量,但很明显这两类测试方法在具体目标、或指导思想上截然相反。由此也决定了它们在思路、过程和测重点上有很大的差别,并各有利弊的。
3、软件测试的组成
软件项目是由文档、数据以及程序组成的,所以软件测试应该是对软件开发中形成的文档、数据及程序进行测试,目前很多人认为软件测试就是对程序的测试。
4、软件质量
ISO9126中定义的软件质量是:软件满足规定和潜在用户需求特性的总和;而2001年的软件国际标准中,把软件质量分成了:“内部质量”、“外部质量” 、‘使用质量‘三个部分。也就是说:软件满足规定和潜在用户需求的能力,要从软件在内部、外部和使用中的表现来衡量。
内部:单元测试、安全性测试等。
外部:系统功能测试、界面测试等。
使用表现:易用性测试、用户体验性测试等。
5、软件测试与质量保证的区别(QA与Tester区别)
质量保证(QA)是通过预防、检查和改进来保证软件质量,即全面的质量管理与过程改进来开展质量保证工作;软件测试是执行软件,对开发文档和源代码进行走查,以找出问题,报告质量。
6、软件测试的目的
以最少的人力、物力和时间找出软件中潜在的各种错误与缺陷,通过修正各种错误与缺陷提高软件的质量,回避软件发布后由于软件缺陷和错误造成的隐患所带来的风险。
7、软件测试的原则
1)所有的软件测试应该蒴源到用户的需求
2)尽早的将软件测试贯穿到软件开发的全过程中
3)完全测试是不可能,测试需要中止
4)测试无法保证软件中完全没有缺陷
5)充分注意测试中错误集群现象
6)应避免自己检测自己的程序
7)应避免测试的随意性
8、软件测试的分类
按软件开发阶段划分
1)单元测试:又称模块测试,对程序模块进行检验。
2)集成测试:又称组装测试,检验程序单元的接口关系。
3)确认测试:通过检验和提供客观证据,证实软件是否满足特定的预期的用途要求。
4)系统测试:确认系统是否达到目标要求,对集成的硬件,软件系统进行测试。
5)验收测试:按照项目任务书或合同。供需双方约定的验收依据文档进行的整个系统的测试与评审,决定是否接受或拒绝系统。
按测试的实施组织划分
1)开发方测试:又称验证测试,或α测试
2)用户测试:又称β测试
3)第三方测试:又称独立测试
α测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的测试。α测试的目的是评价软件产品的FLURPS(即功能、局域化、可使用性、可靠性、性能和支持)。尤其注重产品的界面和特色。α测试可以从软件产品编码结束之时开始,或在模块(子系统)测试完成之后开始,也可以在确认测试过程中产品达到一定的稳定和可靠程度之后再开始。 β测试是指软件开发公司组织各方面的典型用户在日常工作中实际使用β版本,并要求用户报告异常情况、提出批评意见,然后软件开发公司再对β版本进行改错和完善
(软件测试)交流1079636098群里会有学习路径,免费直播分享
按测试技术划分
1)白盒测试:对内部结构进行分析,检测寻找问题。
2)黑盒测试:通过软件的外部表现来发现缺陷和错误。
3)灰盒测试:介于白盒与黑盒之间,关注输出对输入的正确性;同时也关注内部表现,只通过一些表征性的现象、事件、标志来判断内部的运行状态。
9、测试类型(软件测试技术交流:1079636098推荐群)
1)功能测试
功能测试是一个试图发现程序与其外部规格说明之间存在不一致的过程。外部规格说明是一份从最终用户的角度对程序行为的精确描述。测试时按照科学方法设计的测试用例执行测试,在优先保证测试用例执行完全的前提下,再根据对业务的了解和经验性的判断进行探索性测试。
2)界面测试
界面测试简称UI测试,界面为用户与软件交互最直接的层,所以更注重用户的体验性,主要从用户的感官、交互、浏览、情感和体验出发。具体测试用户界面的功能模块布局是否合理,整体风格是否统一,各个控件的放置位置是否符合客户使用习惯,是否符合操作便捷,导航是否简单易懂,界面中文字是否正确,命名是否统一,页面美观,文字、图片组合是否完美等等。测试时可以按照最终用户具体的需求,以及通用的用户体验原则进行测试list的编写,然后测试人员根据list执行。
3)兼容测试
兼容性测试是指测试软件在特定的硬件平台上、不同的应用软件之间、不同的操纵系统平台上、不同的网络等环境中是否能够很友好的运行的测试。通常兼容性测试为软件在不同浏览器、操作系统和分辨率下的兼容测试。测试时测试人员按照软件的具体兼容性需求进行测试。
4)易用性测试
考察评定软件的易学易用性,各个功能是否易于完成,软件界面是否友好等方面进行测试。测试时可以根据用户需求,以及同类行业软件对易用性的通用原则列出测试list,然后测试人员根据list执行。
5)性能测试
性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。测试分为三个大的步骤进行:一、测试前的准备工作,包括确定用户、业务、系统需求,了解被测系统所属类别(如B/S结构),测试环境构成(系统配置基线清单),测试环境网络拓扑图,实际网络带宽情况,测试服务器及测试机配置清单,系统功能流程图及测试时间;二、测试实施,依次为制定测试计划、编写测试方案,设计测试用例,录制测试脚本,模拟测试场景及运行测试;三、测试结尾,依次为分析测试结果及定位瓶颈,编写性能测试报告,做性能测试总结。
10、系统功能测试方法
功能分解
等价类划分
边界值分析
因果图法
其他测试方法
11、测试过程是依相反顺序安排的自底向上,逐步集成的过程
二、软件测试的必要性
软件质量对软件的生产成本、上市时间和售后服务都有一定的影响,质量问题已成为影响软件产品流通的重要因素,而软件测试是软件开发过程中一个必不可少的质量检验手段。软件测试就是为了发现被测对象中的错误,避免产品使用中出现重大问题,造成不必要的损失。近些年,由于电子商务的普及应用,软件的复杂程度和交易规模急剧增加,很多软件产品没有经过专业的测试和评估就匆忙发布,从而导致软件产品存在大量问题,对企业造成很多不良的影响,如:
软件存在大量的错误,以至影响软件的正常运行;
软件的开发效率迅速降低,软件需要不断地修改、升级;
产品发布或部署后,质量缺陷的修改成本急剧上升,导致利润下降、甚至亏损;
企业用户在应用存在着大量质量缺陷的软件产品之后,对企业的信息工程失去信心等。
1、尽早测试能进行成本控制
软件缺陷的研究表明:剩余缺陷中,需求分析的缺陷最多占30.87%(0.046/0.149),需求错误是软件质量中的最大隐患。
从成本上看,把编码阶段的成本定量为1,如在需求阶段留下的错误,到了维护支持阶段去修复,其成本将是100-200倍的增加。
三、软件测试现状和要求
1、国外的现状
美国国家标准和技术研究院的调查报告称,美国软件工程项目的成功率仅占16%左右,美国大型专用软件开发的失败率高达70%,目前软件的质量问题仍然十分突出。国外软件开发企业把40%的资源花在软件测试上,软件测试费用占开发费用的30%至50%,一些要求高可靠、高安全的软件,测试费更高,是开发费用的3至5倍,在国际上软件业较发达的国家,绝大多数的软件产品的认定,都有第三方测试的介入,软件测试行业产值几乎占了软件行业总产值的1/3。国外的软件测试已发展成了一门独立的产业,体现在:
1)软件测试在软件企业中占有重要的地位;项目中测试工程师比编码工程师多得多,测试的投入也占项目总投入的2/3左右
2)软件测试理论研究的发展迅速
3)软件测试市场的繁荣。软件测试标准与测试工具的日益成熟
2、国内的现状
与国外形成鲜明对比的是,国内的企业对软件测试环节的重视程度明显不足,国内在测试服务方面,软件测试服务还处于起步和摸索阶段。不过,近两年国内出现了一个好的苗头,上海、北京、各省以及军队纷纷组建了软件测试公共服务平台,各地政府都加大了软件测试的投资力度。
1)互联网企业已开始建立自己独立的软件测试队伍,虽测试人员规模与国外的不能相比,但已有独立测试的意识。
2)2003年人事部与信息产业部职业资格认证中具有“软件评测师”的称号,国家对软件测试足以重视。
3)企业的计算机系统集成资质以及信息系统工程监理资质认证中,企业的软件测试能力被定为企业技术能力的重要指标。
4)2001年信息产业部5号令规定,凡在国内销售的软件必须进行软件登记测试,在信息产业部登记备案。
5)项目验收时,原则上不能以评代测,项目评优时原则上需要第三方公正的测试报告。
6)各级省政府授权成立了第三方公正的、非盈利的公益性软件评测机构。
7)软件测试正在成为软件学院的一门独立课程。
四、软件测试基础与标准
1、软件测试遵循标准
2、软件测试质量控制参数
五、软件测试过程与管理
1、软件测试过程
开发过程中的质量决定了软件的质量,测试过程的质量决定了软件测试的质量和有效性,软件测试过程的管理是保证测试过程的质量,控制测试风险的重要活动。
2、软件评价过程的特性
1)可重复性:同一评价人按同一评测标准对同一产品的评价是同一可以接受的结果。
2)可再现性:有不同评价人按同一评测标准对同一产品的评价是同一可以接受的结果。
3)公正性:评价不偏向任何特殊的结果。
4)客观性:依据客观的事实,不带感情色彩和主观意见。
3、软件测试生命周期
4、软件测试计划
定义测试项目的过程,以便测试项目能被正确的度量和控制:
确定测试需求
评估风险
制定测试策略
确定资源
创建时间表
生成测试计划
确定测试需求 是测试计划活动的开始。测试需求确定测试对象以及测试工作的范围和作用。测试需求还用来确定整个测试工作(如安排时间表、测试设计等)并作为测试覆盖的基础。被确定的测试需求项必须是可核实的。即,它们必须有一个可观察、可评测的结果。无法核实的需求不是测试需求。
测试策略 要使用的测试技术和工具;测试完成标准;影响资源分配的特殊考虑;如测试与外部接口或者模拟物理损坏、安全性威胁。
测试计划主要包括测试需求及优先级、测试进度安排、测试资源情况、测试风险、测试策略(如功能测试、用户界面测试、性能测试等测试策略)、测试输出等内容。
5、软件测试信息流
六、软件测试技术与工具
1、软件缺陷管理工具QC、JIRA、Bugzilla、禅道
2、功能测试工具 QTP、Selenium
3、负载测试工具 LoadRunner、Jemeter、SoapUI、Tsung
4、测试管理工具 QC、JIRA
5、安全测试工具 APPScan
微信搜一搜【程序员一凡】关注这个文绉绉的程序员,关注后回复【面试】有我准备的一线大厂面试资料和简历模板,希望大家都能找到心仪的工作,学习是一条时而郁郁寡欢,时而开怀大笑的路,加油。如果你通过努力成功进入到了心仪的公司,一定不要懈怠放松,
职场成长和新技术学习一样,不进则退。如果有幸我们江湖再见!
网友评论