输入数据和预期输出结果
)。
测试用例的八大要素:用例编号、测试项目、测试标题、重要级别、预置条件、测试输入、测试步骤、预期结果。
2、在白盒测试中,最强的覆盖准则是(路径覆盖
)
语句覆盖 < 判定覆盖 < 条件覆盖 < 语句/判定覆盖 < 条件组合覆盖 < 路径覆盖。
六种覆盖标准发现错误的能力呈由若到强的变化;
3、测试工程师小刘在对某软件项目进行疲劳强度测试过程中,最先发现(内存泄漏
)问题。
疲劳强度是指材料在无限多次交变载荷作用而不会产生破坏的最大应力,称为疲劳强度或疲劳极限。就像是寻找项目的极值,当达到极值后,会首先出现内存泄露
4、在软件开发中,我们经常要使用测试用例对程序进行检查,一次成功的测试是指运行测试用例后(发现了程序错误
)。
软件测试的目的是发现程序错误,所以一次成功的测试就是,运行程序后,发现了程序的错误。
5、确认测试以(软件系统
)作为基本测试单元。
确认测试又称有效性测试,有效性测试是在模拟的环境下,运用黑盒测试的方法,验收被测软件是否满足规格说明书列出的需求。
确认测试的目的是向未来的用户表明系统能够像预定要求那样工作。经集成测试后,已经按照设计把所有的模块组装成一个完整的软件系统,接口错误也已经排除了,接着就进一步验证软件的有效性,这就是确认测试的任务,即软件的功能和性能如同用户所合理期待的那样。
6、负载测试是验证要检验系统的能力最高能达到什么程度(错
)
系统的最高能力是压力测试,而负载测试是在超负荷的情况下的性能测试
7、编写测试用例前要准备(阅读产品规格书、阅读已有的bug列表、书写思维导图
)工作。
8、测试方法分成哪几种?(个人复查、抽查和会审、黑盒测试、白盒测试
)
软件测试可以是人工测试:如个人复查、抽查和会审
也可以是机器自动检测:又有不同的分类:
按照软件内部结构具体实现角度划分:黑盒测试、白盒测试、灰盒测试
按照软件发程按阶段划分:单元测试、集成测试、确认测试、系统测试、验收测试
9、beta测试优先于alpha测试(错
)。
α测试是指软件开发公司组织内部人员模拟各类用户对即将面市软件产品(称为α版本)进行测试,试图发现错误并修正。α测试的关键在于尽可能逼真地模拟实际运行环境和用户对软件产品的操作并尽最大努力涵盖所有可能的
用户操作方式。经过α测试调整的软件产品称为β版本。
β测试是由软件的多个用户在实际使用环境下进行的测试,这些用户返回有关错误信息给开发者。测试时,开发者通常不在测试现场。因而,β测试是在开发者无法控制的环境下进行的软件现场应用。在β测试中,由用户记下遇到的所有问题,包括真实的以及主观认定的,定期向开发者报告。β测试主要衡量产品的FLURPS,着重于产品的支持性,包括文档,客户培训和支持产品生产能力。 只有当α测试达到一定的可靠程度时,才能开始β测试。它处在整个测试的最后阶段。同时,产品的所有手册文本也应该在此阶段完全定稿。
10、测试用例的设计是测试的重要阶段。系统测试用例设计应该从什么时候开始(需求完成
)
设计测试用例越考级需求阶段,我们就能越早发现需求问题,在软件开发过程中问题越得到越早的修正,那么所花的带价就越小。
11、从测试技术角度,正确的选择是(静态测试、动态测试
)
测试技术的角度应该偏重的是测试过程,对软件运行结果(动态)和运行原理都应了如指掌。而嘿嘿、白盒偏重的是结果多一点,黑盒是整个系统的功能结果,白盒注入单元测试分布结构的功能测试。
静态测试:静态测试是指不运行被测程序本身,通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。静态测试主要包括各阶段的评审、代码检查、程序分析、软件质量度量等,用于对被测程序进行特性分析。
动态测试:通过运行被测程序来检查运行结果与预期结果的差异,并分析运行效率和健壮性等指标;这种方法包括三部分:构造测试用例、执行程序、分析程序的输出结果。
黑盒测试:(也称功能测试)是基于规格说明(需求文档)的测试。测试人员不考虑/不关心软件内部结构,只关心程序的功能是否符合他的功能说明。
白盒测试:(也称结构测试或逻辑驱动测试)基于设计文档(结构)的测试。关注软件内部结构和程序的设计实现。
11、自顶向下增量式集成测试特点(需求驱动开发模板、能及时发现设计上的错误)
12、在程序片中,所定义的变量未被使用可以通过哪种测试方法进行定位(数据流测试
)。
数据流测试用于分析程序中的数据流。它是收集有关变量如何在程序中流动数据的过程。它试图获得过程中每个特定点的特定信息。
数据流测试是一组测试策略,用于检查程序的控制流程,以便根据事件的顺序探索变量的顺序。它主要关注分配给变量的值和通过集中在两个点上使用这些值的点的点,可以测试数据流。数据流测试使用控制流图来检测可能中断数据流的不合逻辑的事物。由于以下原因,在值和变量之间的关联时检测到数据流中的异常:如果使用变量而没有初始化。如果初始化变量至少未使用一次。
13、单元测试主要技术有(驱动代码、Stub代码、Mock代码)
mock:对代码中某些不容易获取的对象创建虚拟对象来测试
stub:桩函数是代替某些被调用了但是没有编写代码,一般再增量迭代自底向上的过程中不用编写。再自顶向下的过程中需要编写
驱动函数:调用被测函数,给被测函数传参。
GUI测试手段是系统测试手段。
14、集成测试分为渐增组装测试和(非渐增组装测试)
渐增组装测试:测完一个再加上一个一起测
非渐增组装测试:是一个一个测试
15、IOS单元测试框架有(XCTest)(GHUnit)(OCMock)
OCUnit 是 OC 官方测试框架, 现在被 XCTest 所取代。
XCTest 是与 Foundation 框架平行的测试框架。
GHUnit 是第三方的测试框架。
OCMock都是第三方的测试框架。
16、(模块功能检查)和(系统压力测试属于动态分析)
动态程序分析是对计算机软件的分析,该计算机软件是通过在真实或虚拟处理器上执行从该软件构建的程序来执行的。
动态分析:代码运行结束之后。
静态分析:代码运行之前
17、系统测试计划属于项目阶段性关键文档,需要同行评审。
18、黑盒测试在设计测试用例时,主要研究(需求规格说明(系统测试
)与概要设计说明(集成测试
))
19、白盒测试强度由弱到强依次是:语句覆盖–判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖。
20、测试的关键问题是(如何选择测试用例
)
21、测试设计员的职责是(设计测试用例、设计测试过程、脚本)
测试设计人员主要负责设计测试用例以及设计测试过程。
制定测试计划是测试经理来做的;评估测试活动是测试经理组织开发人员来进行的。
22、测试用例的设计方法(等价类划分)(边界值分析)(因果图)(功能图分析)(错误推测)(判定表驱动分析)(正交试验设计)(场景设计)。
23、软件测试的目的是(发现软件的错误)
软件测试的目的:
1、测试是程序的执行过程,目的在于发现错误;
2、一个好的测试用例在于发现至今未发现的错误;
3、一个成功的测试是发现了至尽未发现的错误的测试;
24、软件测试的目的是为了发现错误而执行程序的过程,并不涉及(改正错误
)。程序调试的基本步骤有:(错误定位)、(修改设计和代码),(以排除错误)、(进行回归测试),(防止引进新的错误)。程序调试通常称为Debug,即排错。软件测试的基本准则有:所有测试都应追溯到需求
、严格执行测试计划
,排除测试的随意性
、充分注意测试中的群集现象
、程序员应避免检查自己的程序
、穷举测试不可能
、妥善保存测试计划
等文件。
25、单元测试的策略:(逻辑覆盖)(循环覆盖)(同行评审)(桌前检查)(代码走查)(代码评审)(景泰数据流分析)。
26、系统测试的16个策略(功能测试)(性能测试)(压力测试)(容量测试)(安全性测试)(GUI测试)(可用性测试)(安装测试)(配置测试)(异常测试)(备份测试)(健壮性测试)(文档测试)(在线帮助测试)(网络测试)(稳定性测试 )。
27、桩(stub)函数(在单元测试中被其他模块调用、在自定向下的集成过程中尤为有效)
28、(PureCoverage)(Purify)(Quantify)属于单元测试工具。
Rational Purify是一个面向VC, VB或者Java开发的测试Visual C/C++ 和Java代码中与内存有关的错误,确保整个应用程序的质量和可靠性。
Rational Quantify是一个面向VC、VB 或者Java开发的测试性能瓶颈检测工具,它可以自动检测出影响程序段执行速度的程序性能瓶颈,提供参数分析表等等直观表格。
Rational PureCoverage是一个面向VC、VB或者Java开发的测试覆盖程度检测工具,它可以自动检测你的测试完整性和那些无法达到的部分。
29、系统测试的内容:((安全测试)(性能测试)(压力测试)(功能测试)(回归测试))。
30、单元测试主要依据(详细设计文档);集成测试主要依据(概括设计文档); 系统测试主要依据(系统设计文档)
31、软件测试工具
LoadRunner:负载压力
测试:预测系统性能。
JMeter+Badboy:基于JAVA的压力测试工具,Badboy用来进行脚本的录制
功能测试:通过自动录制、检测和回放用户的应用操作。将输出记录同预先给定的记录比较。
Junit:白盒测试工具:针对代码测试
测试管理工具:对测试需求、计划、用例、实施进行管理
测试辅助工具:本身不执行,可以生成测试数据,为测试提供数据准备
负载压力测试:LoadRunner:预测系统行为和性能的工业标准级负载测试工具
。模拟上千万用户同时实施并发操作,来实时监控可能发生的问题
。
功能测试: QTP(quicktest professional):自动测试工具
白盒测试:C++ TEST(做C和C++的白盒测试)、JUnit(Java白盒测试)
缺陷管理工具:Mantis、BugFree、QC、TD
用例管理工具:TestLink、QC
测试辅助工具:SVN
32、使用软件测试的目的包括(帮助测试寻找问题)(协助问题的诊断)(节省测试时间)。
33、软件测试方法中(人工检测)属于静态测试方法
软件的静态测试不要求在计算机上实际执行所测程序,主要以一些人工的模拟技术对软件进行分析和测试;
而软件的动态测试是通过输入一组预先按照一定的测试准则构造的实例数据来动态运行程序,而达到发现程序错误的过程。
34、测试工程师在软件测试计划阶段依据(工作说明书)制定测试进度。
SOW:statement of work,工作任务说明书
HLD: High Level Design,概要设计说明书
LLD: Low Level Design,详细设计说明书
UTC: Unit Testing Cases,单元测试用例
35、loadrunner包括(脚本编辑工具)、(测试执行工具)、(结果分析工具)。
LoadRunner,是一种预测系统行为和性能的负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,可适用于各种体系架构的自动负载测试,能预测系统行为并评估系统性能。
其测试组件有
1.VuGen Load Generator(虚拟用户生成器)用于捕获最终用户业务流程和创建自动性能测试脚本。(也称为虚拟用户脚本)。
2.Controller (控制器)用于组织、驱动、管理和监控负载测试。
3.Analysis (分析器)有助于您查看、分析和比较性能结果。
36、单元测试能发现80%
的软件错误
因缺陷放大理论,在单元测试阶段发现的bug会在系统测试阶段被放大,放大倍数完全符合80/20理论。
37、编写测试用例的目的包括(从测试用例追溯回归功能需求以确保没有需求被疏忽)、(总结前人的经验,为后人提供借鉴)、(用测试用例来验证产品需求模型的正确性)、(通过测试用例以确认是否到达了产品期望的要求)。
38、alpha测试需要用户参加,并且alpha测试是验收测试的一种
α测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的受控测试,α测试不能由程序员或测试员完成。α测试发现的错误,可以在测
α测试性能测试
试现场立刻反馈给开发人员,由开发人员及时分析和处理。目的是评价软件产品的功能、可使用性、可靠性、性能和支持。尤其注重产品的界面和特色。Alpha测试可以从软件产品编码结束之后开始,或在模块(子系统)测试完成后开始,也可以在确认测试过程中产品达到一定的稳定和可靠程度之后再开始。
39、自顶向下增量式集成测试的缺点包括(底层验证被推迟)(底层组件测试不充分)
自顶向下测试:是从程序的初始模块开始测试。
(1)该方***在早期发现顶层的错误。
(2)早期的程序框架可以进行演示
(3)需要开发桩模块辅助测试。有些甚至需要多个桩模块辅助,加大了桩模块本来的错误影响。
(4)测试完一个上层模块后,挑选哪个模块作为下一个测试模块,以及测试的顺序没有唯一的界定标准。
优点:较早地验证了主要控制和判断点;按深度优先可以首先实现和验证一个完整的软件功能;功能较早证实,带来信心;只需一个驱动,减少驱动器开发的费用;支持故障隔离。
缺点:柱的开发量大;底层验证被推迟;底层组件测试不充分。
注意;自底向上才需要驱动开发模块
。
40、自动化测试并没有大幅度降低工作量,自动化测的确可以减少工作量但并没有大大缩减,并不是所有环节都适合自动化。