软件测试知识点
一.软件测试基本概念
1.软件质量的概念
功能性:软件提供明确与隐含功能的能力
可靠性:维持规定性能的能力
易用性:被理解学习使用和吸引用户的能力
效率:相对于所用资源的数量,软件产品可提供适应性能的能力
可维护性:纠正错误,改进功能,适应环境的能力
可移植性:迁移到另一种环境的能力
2.软件测试目标和原则
目标:以最少的时间和人力,系统地找出软件潜在的各种错误和缺陷
原则:1.尽早和不断地进行软件测试;
2.测试用例应该由测试输入数据和预期输出结果构成;
3.程序员尽量避免测试自己的程序(最好是独立于开发组和客户的第三方测试组和机构)
4.测试应包括合理的和不合理的输出条件,
5。注意测试中的集群现象(测试后的程序残存的错误数目与已经发现的成正比)
6.严格执行测试计划,排除随意性7.对每一个结果做全面检查
8.妥善保管测试计划用例出错统计和分析报告
3.软件测试心理学
1)程序测试过程具有破坏性:测试是为了发现错误而执行程序的过程
2)程序员尽量避免测试自己的程序
3)程序设计组织不应测试自己的程序
4.软件测试的经济学:不能发现”所有”的缺陷和错误
1.黑盒测试(数据驱动测试/输入输出驱动测试):测试人员完全不考虑程序内部的特性,和逻辑结构,只根据程序的需求规格说明书,检查程序是否符合他的功能说明
2.白盒测试(逻辑驱动测试):对程序的逻辑结构进行检查
5.软件质量保证’
二.软件测试类型以其地位
1.软件开发阶段:
1.生存周期:制定规划(功能需求可靠性接口可行性资源,可行性报告)——系统与软件需求定义——软件设计(技术核心)——编程和单元测试——系统与集成测试——运行和维护
2.测试信息流:软件配置,测试配置,测试工具
2.规划阶段的测试:目标阐述(不太详细也不具体),需求分析,功能定义,规划阶段的测试
3.设计阶段的测试:外部设计(用户界面),内部设计(结构设计,数据设计,逻辑设计),伪代码分析
4.编程阶段的测试:白盒测试与黑盒测试,结构测试与功能测试,路径测试:覆盖准则,增量测试与大突击测试
三.代码检查、走查和评审
1.桌面检查:程序员检查自己编写的程序,是在进行单元测试之前对代码进行分析
2.代码检查:以小组为单位阅读代码,
1.协调人:主持、引导代码检查的过程
2.开发人员:检查项目的生产者
3.检查人员:检查小组每一个人都可以认为是一个检查人员,可以兼任不同的角色。
4.解说员5.记录员
项目:变量是否喂赋值或者初始化?上下标是否在界限之内?是不是整数?是否分配了数值的内存单元?变量的数据类型是否与编译器所预期的一致?
3.走查:与代码检查类似,以小组为单位进行,进行一些列规程的错误检查技术的集合
4.同行评审:通过作者的同行来确认缺陷和需要变更区域检查的方法
评审的方法和技术:
1. 临时评审:一位程序员临时请另一位花几分钟时间查找一个缺陷
2. 桌上检查或轮查:多人进行的并行桌上检查
3. 结对评审:作者请另一位同行进行桌上检查
4. 走查:5.小组评审。6.正式审查
四.覆盖率测试
1.概念:度量测试完整性的手段
覆盖率=被执行的项目数/项总数 ×100%
2.逻辑结构的覆盖测试
◇判定,□语句,○程序的开始或者结束,
1.语句覆盖率=被评价用到的语句数/可执行的语句总数 ×100%
2.指令块:不存在(会引起分支)的控制语句,IB
IB覆盖率=被执行的语句块数量/程序中的指令块总数 ×100%
3.判定覆盖率=被执行的分支数量/程序中的分支总数 ×100%
DDP覆盖率=被评价到的判定路径数量/程序中的判定路径总数 ×100%
5. 条件覆盖=被评价到的条件取值数量/条件取值总数 ×100%
3.路径测试覆盖:
1.分支结构的路径测试:①对于嵌套型分支结构,若有n个判定语句,则存在n+1条不同的路径
②对于串联型分支结构,若有n个判定语句,则有2n个路径 →减少测试用例,构造正交表P71
2.循环结构的路径测试:简单循环,嵌套循环,连锁循环,非结构循环
4.数据流测试:关注在一条路径上变量在何处赋值,在何处引用
佣金问题伪代码描述:P79
5.基于覆盖测试的数据选择
如何使用覆盖率①覆盖率不是目的,只是一种手段②不能针对所有的覆盖率指标进行测试③不能追求100%的覆盖率
五.黑盒测试
1.等价类测试:降数目极多的数据化成等价类,然后测试某类的代表值
原则:①如果确定了取值范围或者取值的个数,则可以确立一个有效等价类和两个无效等价类
②如果输入条件规定了输入值的集合,则可以有一个有效和一个无效等价类
2.边界值测试:用例:刚达到这个范围的值,比最大范围多1或者少1,如果输入输出域是有序集合,则采用边界
3.基于因果图的测试:E互斥,I包含(至少一个成立)O唯一 R要求(a→b)M屏蔽(a1则b0)
4.基于状态图的测试:P105
六.单元测试和集成测试
1.单元测试的目标和模型:
1.单元:可以编译和执行的最小软件构件、不会指派给多个设计人员开发
2.目标:验证代码是与设计相合的,跟踪需求和设计的实现和缺陷,发现编码过程中引入的错误
3.模型:(与集成,系统测试区别:P120)
2.单元测试的策略
1.自顶向下:逐层打桩 2.自底向上:自下向上打桩 3.孤立测试:为每个模块单独打桩
4.综合测试
3.单元测试分析:
1.模块接口
2.局部数据结构:保证临时存储在模块内的数据的完整正确
3.独立路径:保证每个模块的每条语句至少执行一次
4.出错处理:预见各种出错条件,进行适当的处理
5.边界条件.
4.集成测试的基本概念
1.定义:对系统接口和集成后的功能的正确性进行检验
2.与系统测试区别:
①测试对象 集成:各个模块的构件 系统:软硬件以及相关的外围设备,数据采集传输等
②测试时间 集成介于单元和系统测试之间
③ 测试方法:单元白盒,集成灰盒,系统黑盒
5.集成测试策略:
1.基于分解
①一次性集成测试②自顶向下增量式测试③自底向上的增量式集成测试④三明治集成
2.基于功能的集成:采用增量式集成测试方法
3.基于调用图的集成:成对测试,相邻测试
4.基于路径的集成 5.基于进度的集成
6集成测试分析
1.体系结构分析:
①根据需求分析,划分结构层次图
②对各个结构之间的依赖关系进行分析,确定测试模块的大小
2.模块分析 3.接口分析 4.可测试性分析
七.系统测试
1.概念:软件开发完成后,还要与系统的其他部分结合起来才能运行,系统测试的目的就是对各部分进行集成和确认测试
2.系统测试的方法:
①功能测试:是否有不正确或者遗漏的功能,能否满足系统和用户的隐式需求,能否正确接受输入
②协调一致测试
③性能测试:度量系统的性能与预先定义的目标有多大差距:压力测试:
④压力测试:测试者想要破坏程序,边界测试
⑤容量测试⑥安全性测试⑦失效恢复测试⑧备份测试GUI图形化用户接口测试⑩健壮性测试
易用性测试、安装测试、文档测试、在线帮助测试
3.系统测试的实施
①确认测试:有效性测试
②α测试和β测试:内部用户/内测
③验收测试:
④回归测试:软件变更后对其进行重新测试
八.软件性能测试和可靠性测试
1.软件性能的概念:完成某项功能时展现出来的及时性
指标:响应时间(平均,最大),吞吐量,并发用户数,资源利用率
2.性能测试的执行:
3.软件可靠性的概念:在规定时间条件内,软件不引起失效的概率
软硬件可靠性区别:
① 唯一性:软件每份拷贝都相同,硬件不能相同
② 物理退化:硬件可靠性下降
③ 逻辑复杂性:软件是纯逻辑产品,其失效也主要是逻辑错误
④ 版本更新:硬件较慢,软件较快
4.软件可靠性预计:
①软件的运行剖面与可靠性剖面一致②一旦发生故障,立即修复,不引入新的故障③故障和失效是相互独立的④每个故障发生的概率相等
九.面向对象的软件测试
1. 面向对象的软件测试的问题
1.封装:信息隐蔽,一组相关变量和方法被封装在同一个类中
2.继承:子类直接获得父类的属性和方法 充分性,误用
3.多态
2. 面向对象的软件测试模型:分析测试(OOA),设计测试(OOD)编程测试(OOP)
3. 面向对象的软件测试策略:检查分析结果是否附和相应的面向对象分析方法要求,分析检查结果是否满足软件需求
十:WEB应用测试
1. 应用服务器的分类:
① 面向的领域:通用应用服务器(提供多方面服务),专用应用服务器
② 循环的规范:
2. WEB应用的测试策略
1. 表示层的测试:拍板结构,链接结构,客户端程序,浏览器兼容性
2. 业务层的测试:单个程序(尽可能白盒测试),对一组程序
3. 数据层的测试:
3.WEB软件的测试技术:
1.功能测试:链接测试,表单测试,Cookies测试
2.性能测试:并发测试,负载测试和性能调优
3.安全性测试:服务器,客户端,Cookies,日志功能
4.接口测试:使用接口,提供接口
4.系统安全检测与防护
1.入侵检测 狭义:黑客进入一个系统 广义:窃取数据,滥用服务器,发送垃圾邮件
2.漏洞扫描 操作系统漏洞,网络漏洞,数据库漏洞
3.安全策略 ①物理破坏防护:远离火灾,人为破坏
②信息窃取防护:入网访问控制,权限控制(用户权限,操作权限),服务器和节点安全控制,网络监测控制,防火墙控制
③信息加密:保护策略,加密算法
十一.其他测试
1. 兼容性测试①不同的硬件配置影响软件性能②软件使用了硬件的特定功能
1. 软件兼容性测试:与操作系统,数据库,浏览器,中间件,其他软件 兼容性
2. 数据兼容性:不同版本数据,不同软件间兼容性
2.易用性测试
1.易安装性测试:安装手册自动化程度,灵活性,中断处理,安装和卸载,多环境安装支持
2.功能易用性测试:业务符合度,功能定制性,功能关联度,数据共享度,用户约束的合理性
3.用户界面测试:界面整体(合理一致规范),界面元素,输入测试
3.构件测试:
4.极限测试:
1.极限编程:①特性:简单的分析设计,频繁的客户交流,增量式开发,连续的测试
②优点:随时应对新增或改变的需求
2.极限测试①单元测试:最重要的发现错误的手段,由编码人员完成,在编程之前测试
②极限测试的实施:单元测试用例的生成
5.文档测试:只能以文档审查的方式进行
内容:宣传和包装材料,用户许可说明书,手册,在线帮助,示例和模板
文档的测试
软件测试是做什么的?
软件测试就是利用测试工具按照测试方案和流程对产品进行功能和性能测试,甚至根据需要编写不同的测试工具,设计和维护测试系统,对测试方案可能出现的问题进行分析和评估。执行测试用例后,需要跟踪故障,以确保开发的产品适合需求。
使用人工或者自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别. 它是帮助识别开发完成(中间或最终的版本)的计算机软件(整体或部分)的正确度(correctness) 、完全度(completeness)和质量(quality)的软件过程;是SQA(software quality assurance)的重要子域。
Grenford J.Myers曾对软件测试的目的提出过以下观点: (1)测试是为了发现程序中的错误而执行程序的过程; (2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案; (3)成功的测试是发现了至今为止尚未发现的错误的测试。
然而,这种观点指出测试是以查找错误为中心,而不是为了演示软件的正确功能.但是只从字面意思理解,可能会产生误导,认为发现错误是软件测试的唯一目的,查找不出错误的测试就是没有价值的测试,实际上并非如此!
(1)测试并不仅仅是为了找出错误.通过分析错误产生的原因和错误的发生趋势,可以帮助项目管理者 发现当前软件开发过程中的缺陷,以便及时改进;
(2)这种分析也能帮助测试人员设计出有针对性的测试方法,改善测试的效率和有效性;
(3)没有发现错误的测试也是有价值的,完整的测试是评定软件质量的一种方法 软件测试完整分类,参见:软件测试的完整分类
以上的都是官话!其实说白了,软件测试就是在开发人员做出软件投放市场前,尽可能早的找出软件当中所存在的BUG!因为任何软件在理论上来说都是存在问题的,都不是完美的!尽早的找出漏洞,公司的损失也就越低!这也就是软件测试人员越来越受重视的原因!
其实软件测试是一种相当乏味枯燥的工作,一般面公司都比较偏向稍微内向的人,另外测试人员还要具备相当的口才,方便与开发人员还有客户交流!
软件测试具体是做什么的
1 什么是软件测试
举过一个很形象的例子,就像一些工厂的质检员。他们负责产品是否合格或者找出产品的缺陷;那我们就是软件产品的质检员,负责检查产品是否符合客户要求和功能缺陷。
2 软件测试工程师的职责是什么
我们的终极使命就是:找出bug(缺陷),如果一些bug没有被找到,导致产品上线推向市场的时候,引发一系列问题,你的饭碗也就保不住了。简单来说软件测试工程师的职责也就是软件测试的目的,分为以下几点:
1)检查软件产品是否符合用户的需求。
如果用户提出的各种功能和需求,你们产品没有满足的话,也就根本提不上交付产品了,因为根本达不到交付程度,所以我们的职能非常必要。
2)检查程序的业务逻辑和代码逻辑。
即使在同一个项目组,开过同样的需求会议,每个人对需求的理解也许是存在一点点偏差的。所以我们适当的时候也要去检查程序猿哥哥写的代码是否有业务逻辑错误和代码逻辑错误,当然小白目前是没法达到检查程序的,我们是通过手工测试去检查。
3)提高产品的易用性。
这点也很重要,如果一个软件产品不好用,用户的学习成本太高,那么产品的接受满意度就会下降,更别说产品的市场占有率了,所以你是代表广大用户来测试这个产品,易用性也非常重要。
4)一些其他的错误。
凡是导致你的软件产品不能正常使用的,功能被阻塞的,我们都要提交bug,让程序员哥哥去进行一下修改和完善,不能视而不见哟!
软件测试包含什么内容啊?
软件测试的工作内容主要包括“验证”和“确认”,具体内容如下。
一、验证:保证软件正确地实现了一些特定功能的一系列活动, 即保证软件以正确的方式来做了这个事件。
1、确定软件生存周期中的一个给定阶段的产品是否达到前阶段确立的需求的过程。
2、程序正确性的形式证明,即采用形式理论证明程序符合设计规约规定的过程。
3、评审、审查、测试、检查、审计等各类活动,或对某些项处理、服务或文件等是否和规定的需求相一致进行判断和提出报告。
二、确认:一系列的活动和过程,目的是想证实在一个给定的外部环境中软件的逻辑正确性,即保证软件做了用户所期望的事情。
1、静态确认,不在计算机上实际执行程序,通过人工或程序分析来证明软件的正确性。
2、动态确认,通过执行程序做分析,测试程序的动态行为,以证实软件是否存在问题。
扩展资料
一、软件测试的原则
1、测试应该尽早进行,最好在需求阶段就开始介入,因为最严重的错误不外乎是系统不能满足用户的需求。
2、程序员应该避免检查自己的程序,软件测试应该由第三方来负责。
3、设计测试用例时应考虑到合法的输入和不合法的输入以及各种边界条件,特殊情况下还要制造极端状态和意外状态,如网络异常中断、电源断电等。
4、应该充分注意测试中的群集现象。
5、对错误结果要进行一个确认过程。严重的错误可以召开评审会议进行讨论和分析,对测试结果要进行严格地确认,是否真的存在这个问题以及严重程度等。
6、制定严格的测试计划。一定要制定测试计划,并且要有指导性。测试时间安排尽量宽松,不要希望在极短的时间内完成一个高水平的测试。
7、妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便。
二、软件测试的主要目标
1、发现一些可以通过测试避免的开发风险。
2、实施测试来降低所发现的风险。
3、确定测试何时可以结束。
4、在开发项目的过程中将测试看作是一个标准项目。
参考资料来源:百度百科——软件测试
软件测试是干什么的?
软件测试,在专业上区分,也是有所区分的,分黑盒和白盒测试两种,白盒测试一般在一些大的软件工程项目里面使用得到,要求的技术层次相对较高,基本上是半个以上研发人员的技术水平要求。(具体两者区分可以自行百度)这里具体说说软件测试中,两种测试工种的工作内容。
白盒测试,往往要直接接触程序的源代码,所以白盒测试人员任职的一个很重要的条件就是读懂对应开发语言,最好是半个以上的开发人员。
黑盒测试,则没有要能读懂程序源代码要求(当然有软件开发这方面知识的更佳),黑盒测试人员的要求往往更侧重测试人员对软件测试理论和对应行业了解。
现在很多的测试人员对于白盒测试这个工作近乎有一种膜拜的心态,个人觉得没有必要。做你喜欢做的,做你最擅长做的,坚持你所做的,我想最后被人膜拜的人就是你。
两者在工作的内容上存在相同之处也存在不同之处。
相同之处在于:都要进行测试用例设计,也都要执行测试用例,报告缺陷。
不同之处在于:白盒测试人员是在能看到程序内部实现、及程序需求的情况下进行的测试用例设计,而黑盒测试人员只能通过程序的需求文档进行测试用例设计;往往黑盒测试用例的量相对白盒测试而言要多一些。
软件测试
高收入就先别想了,先把你的软件测试的理论基础打扎实一点,熟悉软件测试流程吧。
参考资料:测试窝
什么是软件测试?
软件测试定义是:为了发现程序中的错误而执行程序的过程
它是帮助识别开发完成(中间或最终的版本)的计算机软件(整体或部分)的正确度(correctness) 、完全度(completeness)和质量(quality)的软件过程;是SQA(software quality assurance)的重要子域。
软件测试的目标:
(1)测试是为了发现程序中的错误而执行程序的过程;
(2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;
(3)成功的测试是发现了至今为止尚未发现的错误的测试。
软件测试的内容:
软件测试主要工作内容是验证(verification)和确认( validation ),下面分别给出其概念:
验证(verification)是保证软件正确地实现了一些特定功能的一系列活动,即保证软件做了你所期望的事情。(Do the right thing)
1.确定软件生存周期中的一个给定阶段的产品是否达到前阶段确立的需求的过程;
2.程序正确性的形式证明,即采用形式理论证明程序符号设一计规约规定的过程;
3.评市、审查、测试、检查、审计等各类活动,或对某些项处理、服务或文件等是否和规定的需求相一致进行判断和提出报告。
确认(validation)是一系列的活动和过程,目的是想证实在一个给定的外部环境中软件的逻辑正确性。即保证软件以正确的方式来做了这个事件(Do it right)
1.静态确认,不在计算机上实际执行程序,通过人工或程序分析来证明软件的正确性;
2.动态确认,通过执行程序做分析,测试程序的动态行为,以证实软件是否存在问题。
软件测试的对象不仅仅是程序测试,软件测试应该包括整个软件开发期问各个阶段所产生的文档,如需求规格说明、概要设计文档、详细设计文档,当然软件测试的主要对象还是源程序。
从不同的角度出发,软件测试可以划分为不同的分类:
从是否关心软件内部结构和具体实现的角度划分
A.白盒测试
B.黑盒测试
C.灰盒测试
从是否执行程序的角度
A.静态测试
B.动态测试。
从软件开发的过程按阶段划分有
A.单元测试
B.集成测试
C.确认测试
D.验收测试
E.系统测试
软件测试需要学什么
你可以自己抽时间看看基本的基础课 比如C语言 SQL 数据库知识 网络等方面的课程 浏览各大技术网站如ltesitng 可以自学 也可以培训
转载请注明出处51数据库 » 软件测试百度 软件测试
壞蛋250

