,软件测试分析题
软件测试简介软件测试的目的是发现软件中的缺陷和错误。
当软件缺陷满足以下五条规则中的至少一条时,它就被认为发生了:
1.软件没有实现产品手册要求的功能。缺少——个函数。
2.软件中存在不应出现在产品规格中的错误——错误和缺陷。
软件实现了产品描述中没有提到的功能,——的功能是多余的。
4.虽然产品手册中没有明确提到,但是软件没有实现应该达到的目标。3354把握隐性需求,同时发现需求遗漏。
5.该软件难以理解,难以使用,运行缓慢。——用户体验角度
为什么软件规格说明书是软件缺陷最多的地方?
原因:软件产品没有经过设计开发,系统的实现结果完全靠想象描述,所以有些功能不够清晰,需求不断变化,规范不够重视,沟通不够。软件测试的根本目的是提高软件质量,降低软件风险。
软件风险分为内部风险和外部风险。
内部风险:如在即将到来的销售中发现重大错误,推迟发布,失去市场机会。
外部风险:产品上线后,用户发现问题,引发索赔、法律纠纷、客户拒付费用,甚至客户流失。
软件测试关键:如何合理设计测试用例?
测试用例是为特定目标编译的一组测试输入、执行条件和预期结果。
软件测试不等于程序测试。
回归测试:黑盒,白盒
冒烟测试:单元、集成、系统和验收。
随机测试:功能、性能
黑盒测试:完全忽略程序的内部结构和内部特征。只要进行一些输入,就可以得到某种输出结果。
白盒测试:软件测试人员可以访问程序员的代码,并通过检查代码来协助测试。
静态试验
特点:无需运行程序,无条件,易于扩展。方法:代码检查(与设计的一致性、标准性、可读性、逻辑表达、结构的合理性)代码检查(类似于检查,但没有检查广泛)桌面检查(读取自己的程序,效率低)静态分析(借助测试工具)数据流、控制流、接口分析、表达式分析动态测试特性要求测试要在代码实现的前提下运行。
尽早及时地准备测试数据和预期结果。输入数据包括合理输入条件和不合理输入条件。软件需求验证需求验证概述需求验证是软件需求的最后一个环节。目标:尽可能找出存在的错误。主要手段:需求评审。需求验证是指需求规格说明完成后,对需求规格说明文档的验证活动。需求验证的主要方法是评估。
黑盒测试用例是为特定目的设计的一组测试输入、执行条件和预期结果。测试用例是被执行的最小实体。
测试用例设计元素:
ID用例概述:描述这个用例设计的目的。用例优先级的先决条件(可选):用例必须满足的先决条件。操作步骤。测试数据。预期结果。备注(可选)BUG-ID测试用例评审
目的:保证用例更全面,结构更清晰,提高用例评估时间:用例初步设计完成,所有用例完成后进行黑盒测试的目的。
根据需求说明书检查程序功能是否能正常使用,测试各功能是否有遗漏,检查性能等特性要求是否满足。检查人机交互是否出错,数据结构或外部数据库访问是否出错,程序能否正确接收输入数据产生正确的输出结果,保持外部信息(如数据库或文件)的完整性,检查程序初始化和终止时的错误。优势:
有针对性的寻找问题,定位更准确。黑盒测试可以证明产品是否符合用户的要求,是否满足用户的工作要求。可以执行相同的操作
需要充分了解产品使用的技术,测试人员需要有更多的经验。在测试过程中,很多都是手工测试操作。测试人员负责汇编和整理大量的文档和报告。静态黑盒测试:文档测试
动态黑盒测试:功能测试、验收测试和性能测试。
黑盒测试方法:PPT03等价类划分方法
划分等价类:寻找输入条件,划分成多个等价类,形成不相交的子集。示例:
边界值分析边界值分析是一种黑盒测试方法,用于测试输入或输出的边界值。通常,边界值分析法是等价类划分方法的补充,在这种情况下,测试用例来自等价类的边界。
边界分析法使用输入变量的最小值、略大于最小值、输入范围内的任意值、略小于最大值和最大值来设计测试用例。
示例:
类等价划分:
边界值分析:
决策表测试在所有的黑盒测试方法中,基于决策表的测试是最严格、最符合逻辑的测试方法。
决策表由四部分组成,即条件堆、动作堆、条件项、动作项和规则。
桩:条件动作桩:问题中指定的可能的运算条件:条件下取值动作项:条件下要采取的运算规则:判断表中贯穿条件项和动作项的一栏是规则。有n个条件的决策表有2个规则的n次方。
示例:
因果图定义:用图解法分析输入的各种组合来设计测试用例的方法。
因果图中的四种基本关系
在因果图的基本符号中,左节点ci代表输入状态(或原因),右节点ei代表输出状态(或结果)。ci和ei的值为0或1,0表示某个状态不出现,1表示某个状态出现。
常数:如果c1为1,则e1也为1,否则e1为0否:如果c1为1,则e1为0,否则e1为1或:如果c1或c2或c3为1,则e1为1,否则e1为0和:如果c1和c2都为1,则e1为1,否则e1为0。因果图中的约束
在实际问题中,输入状态和输出状态之间可能存在某种依赖关系,这种依赖关系称为“约束”。输入条件有E、I、O、R四种约束,输出条件只有M种约束。
e(互斥):原因A和原因B最多可能有一个为真,即A和B不会同时为真。I(包含):A、B、C三个原因中至少有一个必须为真。o(唯一):原因A和B都有且只有一个成立。r(要求):当原因A出现时,原因B也必须出现。m(强制):如果结果A为1,则结果B强制为0。当a为0时,b的值是不确定的。
案例:
错误推理方法的定义:列出程序中所有可能出现的错误和容易出现错误的特殊情况,并据此选择测试用例。
正交试验指数:通常,判断试验结果好坏的标准称为试验的指数因子。影响测试指标的条件称为因子因子的状态。影响测试因子的情况:
场景案例:
白盒测试的基本路径测试根据程序的控制流程图找出一个模块的基本路径,并根据这些基本路径设计和构造相应的测试用例。
设计步骤:
根据模块逻辑构造控制流图(如上图),计算控制流图的循环复杂度,列出包括起始节点和结束节点的基本路径,检查列出的基本路径是否超过控制流图的循环复杂度,设计覆盖这些基本路径的测试用例的循环复杂度:用V(G)表示,用来度量一个模块的判断结构的复杂度, 并且在数量上用独立路径的数量来表示,这是要测试的基本路径数量的上限。
计算公式:V(G)=封闭区域数V(G)=边数-节点数2情况:
为了达到测试目的,白盒测试方法必须遵循以下原则:
确保模块中的所有独立路径至少测试一次。所有的逻辑值都需要测试真假。检查程序的内部数据结构,确保其有效性。在上下限和可操作范围内运行所有循环。白盒测试3354覆盖率测试覆盖率测试覆盖率:用于确定测试所执行的覆盖率项目的百分比。的覆盖范围是指作为测试基础的条目或属性,如语句、分支、条件等。
$$
覆盖率=至少执行一次的项目数/项目总数。
$$
一个程序的总代码是100行,使用一次测试用例,执行75行代码,代码覆盖率是75%。
测试覆盖包括功能点覆盖和结构覆盖。
点覆盖:用于表示软件已经实现的功能与软件需要实现的功能之间的比例关系。结构覆盖包括语句覆盖、分支覆盖、循环覆盖、路径覆盖等等。根据覆盖对象的不同,逻辑覆盖可分为句子覆盖、判断覆盖、条件覆盖、判断/条件覆盖、组合覆盖和路径覆盖。
语句覆盖:选择足够多的测试用例,使程序中的每个可执行语句至少执行一次。判断覆盖:通过执行足够多的测试用例,程序中的每一个判断都会至少得到一次“真”值和“假”值,即程序中的每一个真分支和假分支都会至少经历一次,也称为“分支覆盖”。条件覆盖:设计足够多的测试用例,使得程序中每个判断所包含的每个条件的可能值(真/假)至少满足一次。判断/条件覆盖:设计足够多的测试用例,使得程序中每个判断所包含的每个条件的所有情况(真/假)至少出现一次,每个判断本身的判断结果(真/假)也至少出现一次。满足判断/条件覆盖的测试用例必须同时满足判断覆盖和条件覆盖。
组合:通过执行足够多的测试用例,程序中每个决策的条件值的所有可能组合至少出现一次。满足组合覆盖的测试用例必须满足决策覆盖、条件覆盖和决策/条件覆盖。
路径覆盖:设计足够的测试用例来覆盖程序中所有可能的路径。
报表覆盖的优点:直观、简单、易于自动化。
缺点:发现错误的能力弱。
判断覆盖的优势:发现错误的能力强于语句覆盖。
缺点:对于复合条件的判断,只判断整个最终结果,忽略了每个条件的值,难免会遗漏一些测试路径。
条件覆盖的优势:发现错误的能力强于语句覆盖。
缺点:条件覆盖不能保证判断覆盖。对于复合条件,条件覆盖只能保证每个条件至少有一次为真,不考虑所有的判断结果。
条件覆盖$ $
条件覆盖率=至少评估一次的条件操作数值或判断结果的数量/(条件操作数值和判断结果的总数)
$$
覆盖$ $
组合覆盖率=条件操作数值结果组合的数量/条件操作数值组合的总数。
$$
路径覆盖根据路径覆盖的基本思想,路径覆盖可以通过修改其中一个满足组合覆盖的测试用例来实现。
满足路径覆盖的测试用例不一定满足组合覆盖。
逻辑覆盖不可能真的完整。
测试数据流如果程序中一个语句I的执行可以改变一个程序变量V的值,据说V是由语句I定义的,可以记为Def(V,I)。
如果语句J的执行引用了变量V在内存中的值,就说变量V被语句J使用了,可以记为Use(V,J)。
案例:
变量只有在被赋值时才被定义。
测试用例的最小数量
常见的白盒测试方法包括基本路径测试、分支条件测试和循环测试。
覆盖标准可用作测试停止或/和测试数据选择标准。
基于控制流的覆盖准则是业界广泛采用的覆盖标准之一。按照覆盖率从低到高的顺序,基于控制流的覆盖率标准包括语句覆盖率、分支覆盖率、条件覆盖率、分支条件覆盖率和多条件覆盖率。
单元测试定义:是对软件基本组件的测试。它是检查程序的最小单位,即检查模块是否有错误。是编码完成后必须进行的测试工作。
目的:验证此代码的行为是否与我们的预期一致。
步骤:编译运行程序(看能否正确运行)静态测试(检查代码是否符合规范)动态测试(检查代码的正确性、容错性、边界值等。)
单元测试通过标准(1)功能与设计说明一致;
(2)性能达到软件设计指标;
(3)命名和编码符合规定;
(4)逻辑测试达到规定的覆盖率,如果未能达到规定的指标,应在测试报告中给出合理的说明;
(5)发现的问题已修改并通过回归测试。
单元测试的主要任务单元测试是针对每个程序的模块,主要测试以下五个方面:模块接口、本地数据结构、边界条件、路径测试和错误处理。
模块接口:
测试模块接口,检查进出程序单元的数据流是否正确。必须在其他测试之前进行。主要关注单位内的投入和产出。
本地数据结构:
测试模块内部的数据是否能保持完整性,包括内部数据的内容、形式和关系是否没有错误。路径测试:测试程序路径。
边界条件:边界值分析法用于测试。
错误处理:当模块工作中出现错误时,错误处理设施是否有效。
单元测试执行过程驱动模块:模拟被测模块上层的模块,相当于被测模块的主程序。堆模块:被调用来模拟被测模块工作过程的模块。一般他们只做很少的数据处理。——箱驱动模块和堆纸台模块
集成测试的定义:集成测试又称组装测试,是在单元测试的基础上,将所有模块按照设计要求组装成子系统或系统的测试活动。也称为子系统测试和联合测试。
目的:保证所有单元组合在一起后能按照既定意图协同操作,保证增量行为正确。测试内容包括单元之间的接口和集成功能。
整合中需要考虑的问题:
模块连接时,通过模块接口的数据是否会丢失;各种子功能的组合是否能满足母功能的预期要求;一个模块的功能是否会对另一个模块的功能产生不利影响;全局数据结构有问题吗?个别模块的误差会不会累积放大,从而达到无法接受的程度。集成水平:
模块内集成测试。分系统内集成测试:首先测试分系统中的功能模块,然后对功能模块进行组合,确认分系统的功能是否达到预期要求。子系统间集成测试:被测单元是子系统间的接口。子系统是可以独立运行的程序或进程。综合测试方法
静态测试技术3354轮廓设计的动态测试技术3354灰箱测试灰箱测试的优点:
能够进行基于需求的测试和基于路径的覆盖测试。可以深入被测对象,便于误差识别、分析和解决。确保设计的黑盒测试用例的完整性,防止遗漏功能或功能组合。它可以减少需求或不完整设计对测试有效性的影响。整合策略:
非增量集成策略:一步到位(适用于小系统)优点:方法简单允许多个测试人员同时并行工作,人力物力利用率高。缺点:需要为每个模块准备相应的驱动模块和桩模块,测试成本高;一旦整合,就包含很多错误,很难改正。在非增量集成测试期间,应该识别关键模块
自上而下的增量测试深度优先模式:首先,将结构中一条主路径下的所有模块进行集成,主路径的选择是任意的。广度优先:首先,沿水平方向将每一层中直接隶属于上层的所有模块进行整合,直至底层。优点:主要控制和判断点验证较早;该功能已在前面得到确认;只需要一个驱动程序;支持故障隔离;缺点:桩发展量大;基础验证被延迟;底层组件测试不充分;自底向上的增量测试
优点:底层组件行为的早期验证;工作一开始可以并行集成;减少了桩的工作量;能更好的锁定软件故障的位置;缺点:驱动的开发工作量大;高层验证延迟,设计错误不能及时发现;夹层增量测试(混合增量测试)
优点:结合自顶向下和自底向上策略的优缺点:案例1:案例2:中间层测试不充分
3起案件
集成策略框图
系统测试方法:黑盒测试
目的:找出软件与系统定义的不一致或矛盾之处,按照需求分析指令设计测试用例,并在实际使用环境中运行。
对象:项目级软件(可能还有硬件)产品级软件和硬件
系统测试水平:
用户层测试用户支持测试用户界面测试安全性测试可维护性测试应用层测试系统性能系统可靠性、稳定性版本兼容性系统安装升级功能层测试指标/协议层测试功能测试定义:功能测试是系统测试中最基础的测试。
分类:
功能测试界面测试可用性测试安装测试兼容性测试性能测试定义:系统发布后,产品性能能够满足用户要求。
软件性能指数
响应时间并发用户吞吐量资源占用率分类:
一般性能测试:被测系统在正常的软硬件环境下运行,没有任何压力的性能测试。稳定性测试:持续运行被测系统,并检查系统在运行过程中的稳定性。负载测试:通过在其可承受的压力范围内连续运行被测系统来测试系统的稳定性。压力测试:通常是对被测系统持续加压,直到被测系统崩溃,以测试系统所能承受的最大压力。测试目的:确保软件系统能够正式投入运行。
智力测验
目的:评估软件产品的功能、本地化、可用性、可靠性、性能和支持。Beta测试:软件的多个用户在一个或多个用户的实际使用环境中进行的测试。
版权归作者所有:博主薛定谔的猫原创作品,转载请联系作者授权,否则将追究法律责任。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。