什么是软件测试?
广义概念:指软件生存周期中所有的检查、评审和确认工作。其中包括了对分析、设计阶段,以及完成开发后维护阶段的各类文档、代码的审查和确认。
狭义概念:识别软件缺陷的过程,即实际结果与预期结果的不一致。
软件生命周期的主要阶段
1.问题的定义及规划
此阶段是软件开发方与需求方共同讨论,主要确定软件的软件的开发目标及可行性。
2.需求分析
在确定软件开发可行的情况下,对软件需要实现的各个功能进行详细分析。需求分析阶段是一个很重要的阶段,这一阶段做得好,将为整个软件开发项目的成功打下良好的基础。“唯一不变的是变化本身。”,同样需求也是在整个软件开发过程中不断变化和深入的,因此我们必须制定需求变更计划来应对这种变化,以保护整个项目的顺利进行。
3.软件设计
此阶段主要根据需求分析的结果,对整个软件系统进行设计。如系统框架设计、数据库设计等等。软件设计一般分为总体设计和详细设计。好的软件设计将为软件程序编写打下良好的基础。
4.程序编码
此阶段是将软件设计的结果转换成计算机可运行的程序代码。在程序编码中必须要制定统一,符合标准的编写规范。以保证程序的可读性,易维护性,提高程序的运行效率。
5.软件测试
在软件设计完成后要经过严密的测试,以发行软件在整个设计过程中存在的问题并加以纠正。整个测试过程分单元测试、组装(集成)测试以及系统测试三个阶段进行。测试的方法主要有白盒测试和黑盒测试两种。在测试过程中需要建立详细的测试计划并严格按照测试计划进行测试,以减少测试的随意性。
6.运行维护
软件维护是软件生命周期中持续时间最长的阶段。在软件开发完成并投入使用后,由于多方面的原因,软件不能继续适应用户的要求,要延续软件的使用寿命,就必须对软件进行维护。软件的维护包括纠错型维护和改进性维护两个方面。
软件测试的目标?
最终目标是确保软件的功能符合用户的需求,把尽可能多的问题在发布或交付之前发现并改正。
⒈确保软件完成了它所承诺或公布的功能
⒉确保软件满足了性能的要求
⒊确保软件是健壮的和适应用户环境的
⒋为软件的质量评估提供依据
⒌为软件质量改进和管理提供帮助
软件测试的原则?
⒈GOOD-enough原则。一种权衡投入/生产比的原则
⒉保证测试的覆盖度,但穷举测试是不可能的
⒊所有的测试都应追溯到用户需求
⒋越早测试越好,测试过程与开发过程应是相互结合的
⒌测试的规模由小到大,从单元测试到系统测试
⒍为了尽可能地发现错误,应由独立的第三方测试
⒎不能为了便于测试擅自修改程序
⒏既应该测试软件应该做什么,也应该测试软件不应该做什么
软件测试工作有哪些重点?
测试用例的设计:
⒈测试用例的设计是整个软件测试工作的核心
⒉测试用例反映对被测对象的质量要求,决定对测试对象的质量评估
测试工作的管理:
尤其是对包含多个子系统的大型软件系统原因,其测试工作涉及大量人力和物力,有效的测试工作管理是保证有效测试工作的必要前提
测试环境的建立:
测试环境应该尽量与实际环境一致
软件测试的度量?
⒈测试覆盖率:有多少需求、代码已经被测试了
⒉缺陷发现率:缺陷是何时被发现的,且有多少缺陷已经被发现。缺陷可以根据严重性来分类。需求记录的数据有:缺陷数量,缺陷的严重化等级等
⒊测试成功率:有多少测试用例已经通过,且有多少运行正常的。需要记录的数据有:通过的测试用例数,未通过的测试用例数,已执行的测试号用例数。
什么是黑盒测试?
又称功能测试或数据驱动测试,是针对软件的功能需求/实现进行测试,通过测试来检测每个功能是否符合需求,不考虑程序内部的逻辑结构。
什么是白盒测试?
白盒测试也称结构测试或逻辑驱动测试,必须知道软件内部工作过程,通过测试来检测软件内部是否按照需求、设计正常运行。
什么是单元测试?
定义:又称模块测试,是针对软件设计的最小单位程序模块进行正确性检查的测试工作;可以从程序的内部结构出发设计测试用例,多个模块测试可以平行地独立进行测试
目的:发现模块内部可能存在的各种差错
内容:模块接口测试(数据的流入流出)、局部数据结构测试、路径测试、错误处理测试、边界测试。
步骤:利用设计文档设计测试用例;创建被测模块的桩模块或驱动模块;利用被测试模块、驱动模块和桩模块来建立测试环境,进行测试
什么是集成测试?
定义:又称组装测试或联合测试,在单元测试基础上,将所有模块按概要设计和详细设计进行组装
目的:发现模块连接中的接口可能存在的各种差错
内容:
穿越模块之间的数据是否会丢失;
一个模块组装后是否会对另一模块或其他模块存在影响;
各个子功能组装在一起是否会达到预期的父功能;
全局数据结构是否有问题;
单个模块的错误累积起来是否会放在???
组装方法:包括一次性组装方式、增值式组装方式两种组装方法
完成标志:成功地执行了测试计划中规定的所有测试用例;修正了所发现的错误;测试结果通过专门小组的评审
什么是系统测试?
目的:验证和确认系统是否达到其原始目标,而对集成的硬件和软件系统进行的测试
测试内容:在真实或模拟系统运行环境下,检查完整的程序系统能否和系统(硬件设备、网络、系统软件)正确配置、连接,满足用户需求
什么是验收测试?
目的:在用户环境中进行测试,以确定系统和产品是否能够满足合同或用户所规定的需求
测试内容:根据任务书或合同、供需双方约定的验收依据文档进行对整个系统的测试与评审,确认是否接收或拒绝系统
什么是Alpha测试?
Alpha测试是验收测试的一种,是由用户在开发者的场所来进行的,Alpha测试是在一个受控的环境中进行的
什么是Beta测试?
Beta测试是验收测试的一种,由软件的最终用户在一个或多个用户场所来进行的,开发者通常不在现场,用户记录测试中遇到的问题并报告给开发者。
什么是静态测试?
静态测试又称为静态分析技术,不执行被测试软件,对需求分析说明书、软件设计说明书、源程序做结构检测、流图分析、符号执行等找出软件的错误。
什么是动态测试?
通过输入一组预先按照一定的测试准则构造的实例数据动态运行程序,而达到发现程序错误的过程。
测试用来包含哪些关键内容?
测试用例主要包括用例编号、用例描述、前提条件、输入数据、测试步骤和期望结果6项关键内容
软件测试模型:
V模型:
W模型:
优点:
测试的活动与软件开发同步进行
测试的对象不仅仅是程序,还包括需求和设计
尽早发现软件缺陷可降低软件开发的成本
缺点:
但W模型也存在局限性。在W模型中,需求、设计、编码等活动被视为串行的,同时,测试和开发活动也保持着一种线性的前后关系,上一阶段完全结束,才可正式开始下一个阶段工作。这样就无法支持迭代的开发模型。对于当前软件开发复杂多变的情况,W模型并不能解除测试管理面临的困惑。
H模型:
软件测试是一个独立的流程,以独立完整“微循环”流程,参与产品生命周期的各个阶段,与其他流程并发地进行。H模型指出软件测试要尽早准备,尽早执行,只要某个测试达到准备就绪点,测试执行活动就可以开展,并且不同的测试活动可按照某个次序先后进行,但也可以是反复进行的。