1.非渐增组装测试与渐增组装测试:
1)非渐增组装测试(非增式集成测试):将单元测试后的模块按照总体的结构图一次性集成起来,然后把连接的整体进行程序测试。一般用黑盒法来编写测试集并进行测试。程序错误易出现,不容易集成成果。单元测试使用的辅助模块多,适合于规模小的开发系统。
2)渐增组装测试(增式集成测试):在单元测试的基础上,采用自顶向下或自底向上逐层安装测试,知道最后安装测试完毕。也可采用自顶向下与自底向上相结合集成测试,单元测试与集成测试相结合来进行集成测试。将错误分解,容易找到错误并测试成功,适合于大规模的开发系统。
2.白盒测试法主要有逻辑覆盖、循环覆盖、基本路径测试等。逻辑覆盖测试包括语句覆盖、路径覆盖、判定覆盖、条件覆盖、判断 - 条件覆盖、条件组合覆盖。
黑盒测试方法:因果图、错误推测、正交试验设计法、等价类划分。边界值分析方法
(边界值法既可以用于黑盒也可以用于白盒。)
六种覆盖方法中,覆盖准则由弱到强依次是语句覆盖、判定覆盖(分支覆盖)、条件覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖。
其中, (1).语句覆盖:可执行语句至少被执行一次;
(2).判断覆盖:每个判断的取真分支和取假分支至少经历一次;
(3).条件覆盖:每个条件的取值至少满足一次;
(4).判断条件覆盖:判断和条件都满足;
(5).条件组合覆盖:每个条件的所有可能都至少出现一次,并且判定结果至少出现一次;他与条件覆盖的区别:他不是简单要求每个条件出现“真”和“假”两种结果,而是要求这些结果所有可能至少出现一次;
(6).路径测试:执行所有可能的执行路径;
(7).基本路径测试:路径测试执行了每个路径,每个判定的结果肯定经历过一次
判定覆盖是每个判定的真假一次,就会导致所有的结果路径会实现;
条件覆盖是每个判定里的条件各取一次,不一定会产生所有的结果;
3.软件开发阶段一般又划分成需求分析、概要设计、详细设计、编码与单元测试、组装与系统测试以及安装与验收等6个阶段。
根据不同的测试阶段,测试可以分为单元测试、集成测试、系统测试和验收测试。
(单元测试能发现约80%的软件缺陷。)
4.系统测试是将软件系统与硬件、外设和网络等其他因素结合,对整个软件系统进行测试。常见的系统测试主要有恢复测试、安全性测试、强度测试、性能测试、可靠性测试和安装测试等。
5.测试内容:
(1)、功能测试:检查软件的功能是否符合要求。枚举方法:构造合理的输入,看是否有期望的输出。边界值方法:采用定义域的边界值进行测试。
(2)、容错性测试:检查软件在异常情况下的反应,容错性好的软件会确保系统不发生难以预料的崩溃。方法:构造一些不合理的数据看系统的反应(错误的数据类型或定义域外的值)。
(3)、性能与效率测试:测试软件的速度与对资源的利用率。极限测试:持续不停地给服务器发送请求看是否会死掉,给程序输入特别大的数据看是否能吃得消。获取测试的绝对值(如数据的传输率):记录运行环境对软件的影响。获取测试的相对值(如该软件和其他软件相比快多少倍):确保被测试的几个软件具有相同的软件和硬件环境中。
(4)、易用性测试:用户不用看用户手册,即具有好的易用性。
(5)、文档测试:检查文档的正确性,完备性,可理解性。
6.假设我们每天80%的访问集中在20%的时间里(峰值),如果每天有300万的pv,而 我们的单台机器的QPS为58,那么大概需要几台这样的机器:
原理:每天80%的访问集中在20%的时间里,这20%时间叫做峰值时间
公式:( 总PV数 * 80% ) / ( 每天秒数* 20% ) = 峰值时间每秒请求数(QPS)
机器:峰值时间每秒QPS / 单台机器的QPS = 需要的机器
问:每天300w PV 的在单台机器上,这台机器需要多少QPS?
答:( 3000000 * 0.8 ) / (86400 * 0.2 ) = 139 (QPS)
问:如果一台机器的QPS是58,需要几台机器来支持?
答:139 / 58 = 3
7.软件测试的目的是为了发现错误而执行程序的过程,并不涉及改正错误。
程序调试的基本步骤有:错误定位、修改设计和代码,以排除错误、进行回归测试,防止引进新的错误。程序调试通常称为Debug,即排错。
8.软件测试的基本准则有:所有测试都应追溯到需求、严格执行测试计划,排除测试的随意性、充分注意测试中的群集现象、程序员应避免检查自己的程序、穷举测试不可能、妥善保存测试计划等文件。
9.系统测试的16个测试策略:功能测试、性能测试、压力测试、容量测试、安全性测试、GUI测试、可用性测试、安装测试、配置测试、异常测试,备份测试、健壮性测试、文档测试、在线帮助测试、网络测试、稳定性测试。
10.测试设计人员主要负责设计测试用例以及设计测试过程。 制定测试计划是测试经理来做的;评估测试活动是测试经理组织开发人员来进行的。
11.测试过程中需要参考的相关文档报告:
【软件需求】是软件开发之前做好的,软件开发是根据这个做的,那么软件测试自然也需要参考该文件 。【迭代计划】是软件的某个周期的计划,自然也需要参考。 【可行性】是软件开发前做好,用于证明该计划可行的,没有必要参考。可行性研究报告,在软件开发前做好了,在开发前项目经理已召开进行评估,通过后才开始开发此软件,所以在测试过程中,不再需要参考次报告
12.LoadRunner-负载压力测试:预测系统性能。
JMeter+Badboy:基于JAVA的压力测试工具,Badboy用来进行脚本的录制功能测试:通过自动录制、检测和回放用户的应用操作。将输出记录同预先给定的记录比较。
Junit:白盒测试工具:针对代码测试
测试管理工具:对测试需求、计划、用例、实施进行管理
测试辅助工具:本身不执行,可以生成测试数据,为测试提供数据准备
负载压力测试:LoadRunner:预测系统行为和性能的工业标准级负载测试工具。模拟上千万用户同时实施并发操作,来实时监控可能发生的问题。
功能测试: QTP(quicktest professional):自动测试工具
白盒测试:C++ TEST(做C和C++的白盒测试)、JUnit(Java白盒测试)
缺陷管理工具:Mantis、BugFree、QC、TD
用例管理工具:TestLink、QC
测试辅助工具:SVN
13.测试方法的分类:
软件测试可以是人工测试:如个人复查,抽查和会审等;
也可以是机器自动测试,又有不同的分类:
按照否关软件内部结构具体实现角度划:A.白盒测试B.黑盒测试 C.灰盒测试 。
按照软件发程按阶段划:A.单元测试 B.集成测试 C.确认测试D.系统测试 E.验收测试
(系统测试:功能测试,性能测试,可靠性测试,安全性测试)
(验收测试:正式验收测试和非正式验收测试。其中非正式验收测试包括α测试(由用户、测试人员、开发人员共同参与的内部测试。)和β测试(内测后的公测,即完全交给最终用户测试。))
灰盒测试,是介于白盒测试与黑盒测试之间的一种测试,灰盒测试多用于集成测试阶段,不仅关注输出、输入的正确性,同时也关注程序内部的情况。灰盒测试不像白盒那样详细、完整,但又比黑盒测试更关注程序的内部逻辑,常常是通过一些表征性的现象、事件、标志来判断内部的运行状态
14、代码评审员一般由测试员担任?错!一般都是开发人员评审
15、测试的关键问题是:如何选择测试用例
16、系统测试将软件,硬件,网络等其他因素结合,对整个软件进行测试.白盒测试等不是系统测试的内容。
17、V模型大体可以划分为以下几个不同的阶段步骤:需求分析、概要设计、详细设计、软件编码、单元测试、集成测试、系统测试、验收测试。
需求分析 验收测试
概要设计 系统测试
详细设计 集成测试
编码 单元测试
V
(在不同的测试阶段中,单元测试对应详细设计文档,集成测试对应概要设计文档,系统测试对应系统测试文档)
18.测试驱动开发是敏捷开发中的一项核心实践和技术,也是一种设计方法论。TDD得原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码。TDD虽是敏捷方法的核心实践,但不只适用于XP(Extreme Programming),同样可以适用于敏感词开发方法和过程。TDD得基本思路就是通过测试来推动整个开发得进行,但测试驱动开发并不只是单纯的测试工作,而是把需求分析,设计,质量控制量化的过程。TDD的重要目的不仅仅是测试软件,测试工作保证代码质量仅仅是其中一部分,而且是在开发过程中帮助客户和程序员去除模棱两可的需求。TDD首先考虑使用需求(对象、功能、过程、接口等),主要是编写测试用例框架对功能的过程和接口进行设计,而测试框架可以持续进行验证。
优点:在任意一个开发节点都可以拿出一个可以使用,含少量bug并具一定功能的产品。
缺点:增加代码量。测试代码是系统代码的两倍或更多。
19.针对手机应用软件的系统测试,我们通常从如下几个角度开展:功能模块测试,交叉事件测试,压力测试,容量测试,兼容性测试,易用性/用户体验测试等.
对手机可以施加的压力测试类型主要有:存储压力、边界压力、 响应能力压力、网络流量压力(并发压力是针对服务器的,因为每次并发是一个客户端)
20.桩函数,也叫stub函数,存根函数。用一个桩函数替换一些接口函数,用于测试当前函数的特性。
在单元测试中被其它模块调用,
在自顶向下的集成过程中尤其有效
譬如说,要测试一个函数 f()
void f()
{
var = g(...);
}
f()函数中调用了函数 g(),但是在测试f()的时候g()函数可能还没有写出来 。
这时可以写一个g()的 存根(stub)函数,来模拟g()函数,例如让它仅仅返回一个值.这样的话就可以完成对函数f()的测试了.
21.软件测试计划评审会需要哪些人员参加。
软件测试计划评审会需要有 项目经理、客户(可选)、配置管理员、测试经理、开发组长,SQA 负责人等人的参加。(SQA-Software Quality Assurance)
22.代码评审:检查源代码与编码标准的符合性
23.负载测试是模拟实际软件系统所承受的负载条件的系统负荷,通过不断加载(如逐渐增加模拟用户的数量)或其它加载方式来观察不同负载下系统的响应时间和数据吞吐量、系统占用的资源(如CPU、内存)等,以检验系统的行为和特性,以发现系统可能存在的性能瓶颈、内存泄漏、不能实时同步等问题。所以可以检验系统的最高能力。
压力测试是在强负载(大数据量、大量并发用户等)下的测试,查看应用系统在峰值使用情况下操作行为,从而有效地发现系统的某项功能隐患、系统是否具有良好的容错能力和可恢复能力。压力测试分为高负载下的长时间(如24小时以上)的稳定性压力测试和极限负载情况下导致系统崩溃的破坏性压力测试。所以是检测超出负荷下的行为。
24.软件验收测试的合格通过准则是:
(1)、软件需求分析说明书中定义的所有功能已全部实现,性能指标全部达到要求。
(2)、所有测试项没有残余的一级二级三级的错误。
(3)、立项审批表、需求分析文档、设计文档和编码实现一致。
(4)、验收测试工件齐全(测试计划,测试用例,测试日志,测试通知单,测试分析报告)
25. OSI 的七层网络结构图和 TCP/IP 的四层结构图。
答:OSI 七层网络结构图,由上至下:应用层 ;表示层 ;会话层 ;传输层 ;网络层 ;数据链路层;物理层
TCP/IP 的四层结构图:应用层;传输层;互联层;链路层
一个 byte 几个单位。
答:8bit。
26.通过画因果图来写测试用例的步骤是:分析软件规格说明描述中,哪些是原因(即输入条件或输入条件的等价类),哪些是结果(即输出条件),并给每个原因和结果赋予一个标识符;分析软件规格说明描述中的语义,找出原因与结果之间,原因与原因之间对应的是什么关系,根据这些关系,画出因果图;由于语法或环境限制,有些原因与原因之间,原因与结果之间的组合情况不可能出现。为表明这些特殊情况,在因果图上用一些记号标明约束或限制条件; 把因果图转换成判定表,把判定表的每一列拿出来作为依据,设计测试用例以及把因果图转换为状态图。