软件测试基础知识
1.软件测试的目的是尽可能多的找出软件的缺陷。
代码评审员一般由开发人员担任。
2.自底向上集成是从最低层的模块开始集成,因测试到较高层模块时, 所需求的下层模块功能均已具备,所以不再需要桩模块,测试用例的设计也相对简单,缺点是程序最后一个查勘块加入时才具有整体形象.
自底向上集成测试的步骤为:
1.把低层模块组织成实现某个子功能的模块群;
2.开发一个测试驱动模块,控制测试数据的输入和测试结果的输出;
3.对每个模块群进行测试;
4.删除测试使用的驱动模块,用较高层模块把模块群组织成为完成更大功能的新模块群.
自底向上集成需要测试员编写驱动程序。
3.(1)单元测试:
单元测试又称为模块测试,是针对软件设计的最小单位程序模块进行正确性检查的测试工作,单元测试需要从程序内部结构出发设计测试用例,多个模块可以平行地独立进行单元测试。
(2)集成测试
又称为组装测试或联合测试,在单元测试的基础上,需要将所有模块按照概要设计说明书和详细设计说明书的要求进行组装。
(3)确认测试
确认测试的目标是验证软件的功能和性能以及其他特性是否与用户的要求一致。确认测试一般包括有效性测试和软件配置复查。一般有第三方测试机构进行。
(4)系统测试
软件作为计算机系统的一部分,与硬件、网络、外设、支撑软件、数据以及人员结合在一起,在实际或模拟环境下,对计算机系统进行测试,
目的在于与系统需求比较,发现问题
(5)验收测试
以用户为主的测试,软件开发人员和质量保证人员参加,由用户设计测试用例。
不是对系统进行全覆盖测试,而是对核心业务流程进行测试。
所以软件测试类型按开发阶段分为单元测试,集成测试,确认测试,系统测试,验收测试。
4.α测试是指软件开发公司组织内部人员模拟各类用户对即将面市软件产品(称为α版本)进行测试,试图发现错误并修正。α测试的关键在于尽可能逼真地模拟实际运行环境和用户对软件产品的操作并尽最大努力涵盖所有可能的 用户操作方式。经过α测试调整的软件产品称为β版本。 β测试是由软件的多个用户在实际使用环境下进行的测试,这些用户返回有关错误信息给开发者。测试时,开发者通常不在测试现场。因而,β测试是在开发者无法控制的环境下进行的软件现场应用。在β测试中,由用户记下遇到的所有问题,包括真实的以及主观认定的,定期向开发者报告。β测试主要衡量产品的FLURPS,着重于产品的支持性,包括文档,客户培训和支持产品生产能力。 只有当α测试达到一定的可靠程度时,才能开始β测试。它处在整个测试的最后阶段。同时,产品的所有手册文本也应该在此阶段完全定稿。
alpha测试与beta的区别:
alpha测试是在用户组织模拟软件系统的运行环境下的一种验收测试,由用户或第三方测试公司进行的测试,模拟各类用户行为对即将面市的软件产品进行测试,试图发现并修改错误。
Beta测试是用户公司组织各方面的典型终端用户在日常工作中实际使用beta版本,并要求用户报告异常情况,提出批评意见。
beta测试的环境是不受开发方控制的,谁也不知道用户如何折磨软件,用户数量相对比较多,时间不集中。
5.条件覆盖CC(Condition Coverage),设计足够多的测试用例,运行被测程序,使得每一判定语句中每个逻辑条件的可能取值至少满足一次。条件覆盖率的公式:条件覆盖率=被评价到的条件取值的数量/条件取值的总数X100%1 条件覆盖的缺点:只考虑到每个判定语句中的每个表达式,没有考虑到各个条件分支(或者涉及不到全部分支),即不能够满足判定覆盖.
条件组合覆盖,也称多条件覆盖MCC (Multiple Condition Coverage),设计足够多的测试用例,使得每个判定中条件的各种可能组合都至少出现一次(以数轴形式划分区域,提取交集,建立最少的测试用例)。这种方法包含了“分支覆盖”和“条件覆盖”的各种要求。满足条件组合覆盖一定满足判定覆盖、条件覆盖、判定条件覆盖。条件组合覆盖率的公式:条件组合覆盖率=被评价到的条件取值组合的数量/条件取值组合的总数条件组合覆盖的缺点:判定语句较多时,条件组合值比较多。
语句覆盖 SC(Statement Coverage),就是设计若干个测试用例,运行被测程序,使得程序中每一可执行语句至少执行一次。这里的“若干个”,意味着使用测试用例越少越好。语句覆盖在测试中主要发现缺陷或错误语句。
判定条件覆盖CDC(Condition/ Decision Coverage),设计足够多的测试用例,使得判定中的每个条件的所有可能(真/假)至少出现一次,并且每个判定本身的判定结果也至少出现一次。1 判定条件覆盖率的公式:条件判定覆盖率=被评价到的条件取值和判定分支的数量/(条件取值总数+判定分支总数).判定条件覆盖的缺点:没有考虑单个判定对整体结果的影响,无法发现逻辑错误。
条件组合覆盖的测试覆盖最强!
6.测试设计员的职责有:设计测试用例,设计测试过程、脚本。
7.测试驱动开发,英文全称Test-Driven Development,简称 TDD ,是一种不同于传统 软件开发流程 的新型的开发方法。它要求在编写某个功能的代码之前先编写测试代码,然后只编写使测试通过的功能代码,通过测试来推动整个开发的进行。这有助于编写简洁可用和高质量的代码,并加速开发过程。
TDD的原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码。
TDD的基本思路就是通过测试来推动整个开发得进行,但测试驱动开发并不只是单纯的测试工作,而是把需求分析,设计,质量控制量化的过程。
TDD的重要目的不仅仅是测试软件,测试工作保证代码质量仅仅是其中一部分,而且是在开发过程中帮助客户和程序员去除模棱两可的需求。
TDD首先考虑使用需求(对象、功能、过程、接口等),主要是编写测试用例框架对功能的过程和接口进行设计,而测试框架可以持续进行验证。
8.软件测试计划评审会需要参加的人员有:项目经理,SQA 负责人,配置负责人,测试组。
9.软件验收测试的合格通过准则是:
1、软件需求分析说明书中定义的所有功能已全部实现,性能指标全部达到要求。
2、所有测试项没有残余的一级二级三级的错误。
3、立项审批表、需求分析文档、设计文档和编码实现一致。
4、验收测试工件齐全(测试计划,测试用例,测试日志,测试通知单,测试分析报告).
10.设计系统测试计划需要参考的项目文挡有:软件测试计划,软件需求规范,迭代计划。
11.边界值法既可以用于黑盒测试用例,也可以用于白盒测试用例。
基本路径法用于白盒测试。
正交试验设计法用于黑盒测试。
逻辑覆盖法用于白盒测试用例设计。
12.系统测试计划属于项目阶段性关键文档,因此需要同行评审。
同行评审目的:发现小规模工作产品的错误,
13.软件测试一般分α、β、λ三个阶段,α是第一阶段,一般只供内部测试使用;β是第二个阶段,已经消除了软件中大部分的不完善之处,但仍有可能还存在缺陷和漏洞,一般只提供给特定的用户群来测试使用;λ是第三个阶段,此时产品已经相当成熟,只需在个别地方再做进一步的优化处理即可上市发行。
β测试就是在软件公司外部展开的测试,可以由非专业的测试人员执行的测试 α测试就是在软件公司内部展开的测试,由公司专业的测试人员执行的测试
14.测试用例是测试程序正确性与否的关键。一个覆盖完全的测试用例可以测试出程序是否正确运行,是否有bug等等,是最重要的。
测试的关键问题是如何选择测试用例.
15.CMM是指“能力成熟度模型”,其英文全称为Capability Maturity Model for Software,英文缩写为SW-CMM,简称CMM。它是对于软件组织在定义、实施、度量、控制和改善其软件过程的实践中各个发展阶段的描述。CMM的核心是把软件开发视为一个过程,并根据这一原则对软件开发和维护进行过程监控和研究,以使其更加科学化、标准化、使企业能够更好地实现商业目标。此外还是化妆品的名字。CMMI(Capability Maturity Model Integration,能力成熟度模型集成)将各种能力成熟度模型(即:Software CMM、Systems Eng-CMM、People CMM和Acquisition CMM)整合到同一架构中去,由此建立起包括软件工程、系统工程和软件采购等在内的诸模型的集成,以解决除软件开发以外的软件系统工程和软件采购工作中的迫切需求。这两种方法属于测试驱动开发的方式。
测试驱动开发式是一种敏捷开发方法。
TDD需求开发人员学习测试相关知识。
测试驱动开发可以和结对编程结合使用。
16.网游的测试内容有:客户端性能,服务器端性能,从运行完 game.exe 打开游戏界面后可进行的各种操作、玩法,界面。
17.软件测试是使用人工操作或者软件自动运行的方式来检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别的过程。
软件测试的测试目标是发现一些可以通过测试避免的开发风险。
软件测试的原则之一是测试应该尽早进行,最好在需求阶段就开始介入。
软件测试主要工作内容是验证(verification)和确认(validation).
18.集成测试计划在概要设计阶段末提交
集成测试计划在概要设计阶段已经提交。
负载测试是验证要检验的系统的能力最高能达到什么程度。
v模型
需求分析 验收测试
概要设计 系统测试
详细设计 集成测试
编码 单元测试
V
19.负载测试(Load testing),通过测试系统在资源超负荷情况下的表现,以发现设计上的错误或验证系统的负载能力。在这种测试中,将使测试对象承担不同的工作量,以评测和评估测试对象在不同工作量条件下的性能行为,以及持续正常运行的能力。负载测试的目标是确定并确保系统在超出最大预期工作量的情况下仍能正常运行。此外,负载测试还要评估性能特征。例如,响应时间、事务处理速率和其他与时间相关的方面。目的是验证要检验的系统的能力最高能达到什么程度
- Beta测试是一种验收测试。所谓验收测试是软件产品完成了功能测试和系统测试之后,在产品发布之前所进行的软件测试活动,它是技术测试的最后一个阶段,通过了验收测试,产品就会进入发布阶段。验收测试一般根据产品规格说明书严格检查产品,逐行逐字地对照说明书上对软件产品所做出的各方面要求, 确保所开发的软件产品符合用户的各项要求。 通过综合测试之后,软件已完全组装起来,接口方面的错误也已排除,软件测试的最后一步——验收测试即可开始。验收测试应检查软件能否按合同要求进行工作,即是否满足软件需求说明书中的确认标准。
验收测试是部署软件之前的最后一个测试操作。在软件产品完成了 单元测试 、 集成测试 和 系统测试 之后,产品发布之前所进行的 软件测试 活动。它是技术测试的最后一个阶段,也称为 交付测试 。验收测试的目的是确保软件准备就绪,并且可以让最终用户将其用于执行软件的既定功能和任务。
验收测试是向未来的用户表明系统能够像预定要求那样工作。经 集成测试 后,已经按照设计把所有的模块组装成一个完整的 软件系统 ,接口错误也已经基本排除了,接着就应该进一步验证软件的有效性,这就是验收测试的任务,即软件的功能和性能如同用户所合理期待的那样。
21.测试工具:
LoadRunner-负载压力测试:预测系统性能。
JMeter+Badboy:基于JAVA的压力测试工具,Badboy用来进行脚本的录制
功能测试:通过自动录制、检测和回放用户的应用操作。将输出记录同预先给定的记录比较。
Junit:白盒测试工具:针对代码测试
测试管理工具:对测试需求、计划、用例、实施进行管理
测试辅助工具:本身不执行,可以生成测试数据,为测试提供数据准备
负载压力测试:LoadRunner:预测系统行为和性能的工业标准级负载测试工具。模拟上千万用户同时实施并发操作,来实时监控可能发生的问题。
功能测试: QTP(quicktest professional):自动测试工具
白盒测试:C++ TEST(做C和C++的白盒测试)、JUnit(Java白盒测试)
缺陷管理工具:Mantis、BugFree、QC、TD
用例管理工具:TestLink、QC
测试辅助工具:SVN
22.loadrunner 包括脚本编辑工具,测试执行工具,结果分析工具。
23.黑盒测试:黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数锯而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。黑盒测试方法主要有等价类划分、边值分析、因—果图、错误推测等,主要用于软件确认测试。
白盒测试:白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。
测试分为个人审查、抽查和审查、黑盒测试、白盒测试
黑盒测试方法有:等价类划分法、边界值分析法、因果图法、错误推测法、综合策略、正交分析法,用于软件的确认测试
白盒测试方法有:逻辑覆盖发法,主要包括语句覆盖、判断覆盖、条件覆盖、判断条件覆盖、条件组合覆盖、路径覆盖。
24.软件验收测试包括正式验收测试,alpha测试,beta测试。
软件验收测试分为三类:
正式验收测试:非正式验收测试其中包括α测试(由用户,测试人员,开发人员共同参与的内部测试.)和β测试(内测后的公测,即完全交给最终用户测试。
26.做好文档测试需要注意的是:
仔细阅读,跟随每个步骤,检查每个图形,尝试每个示例;
检查文档的编写是否满足文档编写的目的;
内容是否齐全,正确,完善;
标记是否正确;
27.负载测试:在一定的工作负荷下,系统的负荷及响应时间。
强度测试:在一定的负荷条件下,在较长时间跨度内的系统连续运行给系统性能所造成的影响。
容量测试:容量测试目的是通过测试预先分析出反映软件系统应用特征的某项指标的极限值(如最大并发用户数、数据库记录数等),系统在其极限值状态下没有出现任何软件故障或还能保持主要功能正常运行。容量测试还将确定测试对象在给定时间内能够持续处理的最大负载或工作量。容量测试的目的是使系统承受超额的数据容量来发现它是否能够正确处理。容量测试是面向数据的,并且它的目的是显示系统可以处理目标内确定的数据容量。
集成测试的过程包括构建的确认过程,系统集成测试测试组提交过程,测试用例设计过程,Bug的报告过程
28.测试过程按4个步骤进行,即单元测试、集成测试、确认测试和系统测试及发版测试。
• 开始是单元测试,集中对用源代码实现的每一个程序单元进行测试,检查各个程序模块是否正确地实现了规定的功能。
• 集成测试把已测试过的模块组装起来,主要对与设计相关的软件体系结构的构造进行测试。
• 确认测试则是要检查已实现的软件是否满足了需求规格说明中确定了的各种需求,以及软件配置是否完全、正确。
• 系统测试把已经经过确认的软件纳入实际运行环境中,与其它系统成份组合在一起进行测试。
回归测试是指修改了旧代码之后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误,它不是软件测试的步骤。
29.等价类是指某个输入域的集合。它表示对揭露程序中的错误来说,集合中的每个输入条件是等效的
有效等价类:有效等价类指的是对程序的规范是有意义的、合理的输入数据所构成的集合。在具体问题中,有效等价类可以是一个,也可以是多个。
无效等价类:无效等价类指对程序的规范是不合理的或无意义的输入数据所构成的集合。对于具体的问题,无效等价类至少应有一个,也可能有多个。
黑盒测试的方法有:边界值法、正交试验法(也称正交分析法)、等价类划分、错误推测法、综合策略法、因果图法
白盒测试的方法有:语句覆盖、逻辑覆盖、路径覆盖、条件覆盖、判断覆盖、边界值法、
其中边界值法既属于黑盒测试也属于白盒测试方法
30.对手机软件的压力测试通常可以包括存储压力、边界压力、响应能力压力、网络流量压力。
31.alpha测试它属于用户体验性测试,alpha测试是测试环境尽量真实,由软件公司内部人员模拟各类用户对即将面世的软件产品进行测试, 测试人员在一旁记录发现的问题和缺陷;对于软件项目来说,在系统测试后,有验收测试(有用户参与);对于软件产品来讲,在系统测试后,有 alpha和beta测试。
32.验收测试不是由最终用户来实施的。
验收测试有alpa测试和beta测试两种
alpha测试是由一个用户在开发环境下进行的测试,也可以是公司内部用户在模拟实际操作环境进行的受控测试
beta测试是由软件的多个用户在一个或多个实际使用环境下进行的测试
33.软件测试的对象包括源程序、目标程序、数据及相关文档。
工件是加工过程中的生产对象。项目立项前测试人员不需要提交任何工件。
34.单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。
单元测试能发现约80%的软件缺陷。