目录
11. 边界测试应当选取正好等于,刚刚大于,或刚刚小于边界的值作为测试数据
19. 要满足判定覆盖,要求每个分支至少被执行一次,即Y, N各一次
20. 测试工程师在软件测试计划阶段依据工作说明书来制定测试进度
26. 比较判断与控制流常常紧密相关,测试时需要注意哪些错误
33. 写出“正确移动容易维护的程序模块”的阶段: 编码和单元测试
1. 非增量式和增量式集成测试
(1)非增量式集成测试:采用一步到位的方法来构造测试,对所有模块进行个别的单元测试后,按照程序结构图将各模块连接起来,把连接后的程序当做一个整体进行测试。
(2)增量式集成测试:集成是逐步实现的,即主次将未曾集成测试的模块和已经集成测试的模块(或子系统)结合成程序包,再将这些模块即成为较大系统。在集成过程中边连接边测试,以发现连接过程中产生的问题。分为自顶向下增量式测试,自底向上增量式测试,混合增量式测试。
2. 测试分类
(1)单元测试:开发小组,白盒测试,主要测试是否符合“设计”。对应:详细设计文档。
(2)集成测试:开发小组,白盒黑盒,既验证设计,又验证需求。对应:概括设计文档。包括:接口测试。
(3)系统测试:独立测试小组,黑盒方式,测试系统是否符合需求规格说明书。对应:系统设计文档。包括:安全,性能,压力,功能,回归。(恢复测试,安全性测试,强度测试,性能测试,可靠性测试,安装测试等)
(4)验收测试:软件交付前最后一个测试操作,让系统用户决定是否接收系统,考察软件的功能和性能是否如同用户期待的。
3. 测试粒度大小排序
从小到大: 单元->集成 ->系统 ->验收
4. 自顶向下增量式集成测试
(1)定义:
是从程序的初始模块开始测试。该方法在早期发现顶层的错误。早期的程序框架可以进行演示。需要开发桩模块辅助测试,有些甚至需要多个桩模块辅助,加大了桩模块本来的错误影响。测试完一个上层模块后,挑选哪个模块作为下一个测试模块,以及测试的顺序没有唯一的界定标准。
(2)优点:
较早地验证了主要控制和判断点。按深度优先可以首先实现和验证一个完整的软件功能。功能较早证实,带来信心。只需一个驱动,减少驱动器开发的费用。支持故障隔离。
(3)缺点:
柱的开发量大。底层验证被推迟。底层组件测试不充分。
(4)桩模块Stub:是指模拟被测试的模块所调用的模块,而不是我软件产品的组成部分。
5. 自底向上增量式继承测试
(1)定义:
是从程序的底层模块开始测试。I/O操作可以提前测试,更好提交测试用例。测试后比较容易观察输出。需要开发驱动模块。知道最后一个模块提交,程序才能完整的系统测试。
(2)优点:
对底层组件行为较早验证。工作最初可以并行集成,比自顶向下效率高。减少了桩的工作量。支持故障隔离。
(3)缺点:
驱动的开发工作量大。对高层的验证被推迟,设计上的错误不能被及时发现。
6. LoadRunner包括哪些工具
(1)定义:
是一种预测系统行为和性能的负载性能工具。通过以模拟上千万用户试试并发负载及实时性能检测的方式来确认和查找问题,可适用于各个体系架构的自动负载测试,能预测系统行为并评估系统性能。
(2)测试组件:
虚拟用户生成器:VuGen Loa Generator,用于捕获最终用户业务流程和创建自动性能测试脚本(虚拟用户脚本)
控制器:Controller,用于组织,驱动,管理和监控负载测试(测试执行工具)
分析器:Analysis,有助于您查看,分析和比较性能结果(结果分析工具)
7. 集成测试主要包括哪些过程
(1)构建的确认过程
(2)补丁的确认过程
(3)系统集成测试 测试组提交过程
(4)测试用例设计过程
(5)测试代码编写过程
(6)BUG的报告过程
(7)每周/每两周的构建过程
(8)点对点的测试过程
(9)组内培训过程
8. 系统测试计划属于项目阶段性关键文档,需要同行评审
9. 集成测试计划在概要设计之后
W模型
V模型
H模型
X模型
10. 负载测试是验证要检验的系统的能力最高能达到什么程序
负载测试,通过测试系统在资源超负荷情况下的表现,以发现设计上的错误或验证系统的负载能力。在这种测试中,将使测试对象承担不同的工作量,以评测和评估测试对象在不同工作量条件下的性能行为,以及持续正常运行的能力。
负载测试的目标是确定并确保系统在超出最大预期工作量的情况下仍能正常运行。
例如:响应时间,事务处理速率,和时间相关的各方面。
目的是验证要检验的系统的能力最高能达到什么程序。
11. 边界测试应当选取正好等于,刚刚大于,或刚刚小于边界的值作为测试数据
比如:软件的有效输入范围为1~10,采用边界值进行测试,选取这些作为边界值:1,2,9,10
12. 软件验收测试的合格通过准则(理论基础)
(1)软件需求分析说明书中定义的所有功能已全部实现,性能指标全部达到要求
(2)所有测试项没有残余一级,二级,三级错误
(3)立项审批表,需求分析文档,设计文档和编码实现一致
(4)验收测试工件齐全
13. 软件测试计划评审需要哪些人员参加
(1)项目经理
(2)SQA负责人
(3)配置负责人
(4)测试组
14. iOS单元测试框架有哪些
(1)XCTest:是与Foundation框架平行的测试框架
(2)GHUnit:是第三方的测试框架
(3)OCMock:是第三方的测试框架
补;
(1)NSXML:指微软的xml语言解析器,用来解释xml语言的。
15. 黑盒测试用例设计法
黑盒测试也成功能测试或数据驱动测试,它是在已知产品所应具有的功能的基础上,通过测试来检测每个功能是否都能正常使用。更关心模块与模块之间的交互。
(1)等价类划分法
(2)边界值分析法
(3)错误推测法
(4)因果图法
(5)正交试验法(正交分析法)
(6)综合策略法
16. 白盒测试用例设计法
白盒测试也成结构测试或逻辑驱动测试,是指基于一个应用代码的内部逻辑知识,即基于覆盖全部代码,分支,路径,条件的测试。
(1)基本路径覆盖测试法
(2)逻辑覆盖法
(3)代码检查法
(4)静态结构分析法
(5)静态质量度量法
(6)域测试
(7)符号测试
17. 测试用例常用的设计方法有哪些
(1)等价类划分法
(2)边界值分析法
(3)错误推测法
(4)判定表发
(5)正交实验法
18. 压力测试 VS 负载测试
(1)压力测试是测试软件的瓶颈和极限。可理解为找到一个阈值。
(2)负载测试是性能在极限情况下能坚持多久。可理解为坚持的时间。
19. 要满足判定覆盖,要求每个分支至少被执行一次,即Y, N各一次
20. 测试工程师在软件测试计划阶段依据工作说明书来制定测试进度
(1)工作说明书SOW:制定测试的进度
(2)概要设计说明书HLD:设计测试的用例
(3)详细设计说明书LLD:程序员编码实现
(4)单元测试用例UTC:单元测试使用
21. 白盒测试的几种用例覆盖法
(1)语句覆盖:可执行语句至少被执行一次
(2)判断覆盖:每个判断的取真分支和取假分支至少经历一次
(3)条件覆盖:每个条件的取值至少满足一次
(4)判断条件覆盖:判断和条件都满足。判定中每个条件的所有可能结果至少出现一次,每个判定本身所有可能结果也至少出现一次。
(5)条件组合覆盖:每个条件的所有可能都至少出现一次,并且判定结果至少出现一次。与条件覆盖的区别:它不是简单要求每个条件出现真假两种结果,而是要求这些结果所有可能至少出现一次。
(6)路径测试:执行所有可能的执行路径
(7)基本路径测试:路径测试执行了每个路径,每个判定的结果肯定经历过一次
小结:
(1)路径覆盖一定包含判定覆盖。与条件没有直接关系。
判定条件覆盖一定包含判定覆盖和条件覆盖。
条件覆盖与判定覆盖并不等同,并且没有直接的关系,只是关注点不同,一个关注判定分支,一个关注条件的真假,判定条件唯一时,可认为两者是相同的。
(2)强度由弱到强:
语句覆盖 ->判定覆盖 ->条件覆盖 ->判定条件覆盖 ->条件组合覆盖 ->路径覆盖
22. 单元测试能发现约80%的软件缺陷
因为缺陷放大理论,在单元测试阶段发现的bug会在系统测试阶段被放大,放大倍数完全符合80/20理论。
23. 负载测试,强度测试,容量测试,疲劳强度测试
(1)负载测试
在一定的工作负荷下,系统的负荷和响应时间。
(2)强度测试
在一定的负荷条件下,在较长时间跨度内的系统连续运行给系统性能所造成的影响。
(3)容量测试
目的是通过测试预先分析出软件系统应用特性的某项指标的极限值(如最大并发用户数,数据库记录数等),系统在其极限值状态下没有出现任何软件故障或还能保持主要功能正常运行。
容量测试还将确定测试对象再给定时间内能够持续处理的最大负载或工作量。
容量测试的目的是使系统承受超额的数据容量来发现它是否能够正确处理。
容量测试是面向数据的,并且它的目的是显示系统可以处理目标内确定的数据容量。
(4)疲劳强度测试
通常是采用系统稳定运行情况下能够支持的最大并发用户数或者日常运行用户数,持续执行一段时间业务,通过综合分析交易执行指标和资源监控指标来确定系统处理最大工作量强度性能的过程。
因为疲劳强度测试强调持续执行一段时间业务,故对于软件系统来讲,最容易暴露的性能故障是内存泄漏,以及内存是否不足。
24. 界面元素测试包括哪些内容
(1)窗口测试
(2)菜单测试
(3)图标测试
(4)文字测试
(5)鼠标测试
25. 单元测试工具集合
(1)Parasoft jtest
(2)Parasoft C++ Test
(3)Parasoft .TEST
(4)Parasoft Insure++
(5)Parasoft CodeWizard
(6)DevPartner Studio Professional
(7)Rational Purify
(8)Rational Quantify
(9)Rational PureCoverage
26. 比较判断与控制流常常紧密相关,测试时需要注意哪些错误
(1)不同数据类型的对象之间进行比较
(2)错误地使用逻辑运算符或优先级
(3)因计算机表示的局限性,期望理论上相等而实际上不相等的两个量相等
(4)比较运算或变量出错
(5)循环终止条件或不可能出现
(6)迭代发散时不能退出
(7)错误地修改了循环变量
27. 什么是测试驱动开发TDD
(1)TDD是敏捷开发中的一项核心实践和技术,也是一种设计方法论。TDD的原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码。
(2)TDD是敏捷方法的核心实践,但不只适用于XP, 同样适用于敏感词开发方法和过程。
(3)TDD的基本思路就是通过测试来推动整个开发的进行,但测试驱动开发并不只是单纯的测试工作,而是把需求分析,设计,质量控制量化的过程。
(4)TDD的重要目的不仅仅是测试软件,测试工作保证代码质量仅仅是其中一部分,而且是在开发过程中帮助客户和程序员去除模棱两可的需求。
(5)TDD首先考虑使用需求(对象,功能,过程,接口等),主要是编写测试用例框架对功能的过程和接口进行设计,而测试框架可以持续进行验证。
(6)优点:在任意一个开发节点都可以拿出一个可以使用,含少量bug并具有一定功能的产品。
(7)缺点:增加代码量,测试代码是系统代码的两倍或更多。
28. 什么是数据流测试
(1)数据流测试用于分析程序中的数据流。
(2)它是收集有关变量如何在程序中流通数据的过程,它试图获得过程中每个特定点的特定信息。
(3)数据流测试是一组测试策略,用于检查程序的控制流程,以便根据事件的顺序探索变量的顺序。
(4)它主要关注分配给变量的值和通过集中在两个点上使用这些值的点,可以测试数据流。
(5)数据流测试使用控制流图来检测可能中断数据流的不合逻辑的事物。由于下方原因,在值和变量之间的关联时检测到数据流中的异常:如果使用变量而没有初始化。如果初始化变量至少未使用一次。
29. 可同时用于黑盒和白盒测试的方法: 边界值法
30. 什么是静态分析
(1)静态分析可以由机器完成,以自动“遍历”源代码并检测不合规则。经典例子是一个编译器,它可以找到词汇,语法甚至一些语义错误。
(2)静态分析也可以由审查代码的人执行,以确保使用正确的编码标准和约定来构建程序。这些通常称为代码审查,由同行开发人员(编写代码的开发人员之外的人)完成。
(3)当开发人员分析代码时,分析代码行,适当的嵌套,函数调用次数,循环复杂性.
(4)静态分析不涉及被测软件的动态执行,并且可以在运行程序之前的早期阶段检测可能的缺陷。
补:
(1)内存泄漏是在程序运行之后才能得出,所以不属于静态分析。
31. 什么是动态分析
(1)动态程序分析是对计算机软件的分析,该计算机软件是通过在真实或虚拟处理器上执行从该软件构建的程序来执行的。
(2)动态分析是在代码运行结束后进行的。包括:模块功能检查,系统压力测试
(3)动态测试方法只是通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率,正确性和健壮性等功能。这种方法由三部分组成:构造测试用例,执行程序,分析程序的输出结果。
32. 关于自动化测试的知识点
(1)自动化是释放双手的过程(自动化+web测试=web自动化测试)
(2)自动化测试的先决条件:产品需求变更较少、项目周期长,测试用例执行频繁,人工无法胜任,有充足的人力物力
(3)哪些情况不适合或适合自动化测试
1)不适于一次性,周期短,逻辑复杂,人类感官(界面美化),与物理交互
2)适用于单位,回归,接口,性能,协议等
(4)自动化测试可以大幅度降低工作量。自动化测试编写脚本是及其浪费人力物力的,只有大项目里,自动化测试相比较下来会节约明显的人力 。
(5)自动化测试不一定比人工测试更能保障系统的可靠性 。人工测试更能体现人的主观能动性,在感知方面,还是人工测试为主导。
(6)自动化测试不能完全覆盖达到所有的测试类型。易用性,探索性,复杂性第,不能快速返回结果的测试。
33. 写出“正确移动容易维护的程序模块”的阶段: 编码和单元测试
34. 程序调试的相关知识
(1)程序调试的基本步骤u:cuowudingwei,修改设计和代码,以排除错误,进行回归测试,防止引进新的错误。
(2)通常称为Debug,即排错。
(3)软件调试的任务:诊断和改正程序中的错误。注意区分:软件测试是要发现软件中存在的错误。
35. 软件测试的基本准则
(1)所有测试都应该追溯到需求
(2)严格执行测试计划
(3)排除测试的随意性
(4)充分注意测试中的群集现象
(5)程序员应避免检查自己的程序
(6)穷举测试是不可能的
(7)妥善保存测试计划等文档
36. 服务器性能测试的重要指标
(1)吞吐量
(2)响应时间:性能测试跟时间有密切关系
(3)CPU使用率
补:
磁盘大小是服务器的配置,不是性能指标
37. 软件测试对软件质量的意义
(1)度量和评估软件的质量
(2)在一定程度上保证软件质量
(3)改进软件开发过程
38. 常见测试工具的介绍
(1)JMeter:基于Java的压力测试工具,Badboy用来进行脚本的录制
(2)Junit:白盒测试工具,针对代码测试。 底层实现上,是用System.exit()退出用例执行。@Test注解标注的测试方法只能是public void的,且无参。
(3)LoadRunner:负载压力测试
(4)TestLink:用例管理巩固
39. 高质量软件应该具备的条件
(1)满足软件需求定义的功能和性能
(2)文档符合事先确定的软件开发标准
(3)软件的特点和属性遵守软件工程的目标和原则
(4)zero-bug是一种理想,good-enough是我们的原则
40. 对手机应用软件的系统测试需要测哪些
(1)功能模块测试
(2)交叉事件测试
(3)压力测试:存储压力,边界压力,响应能力压力,网络流量压力
(4)容量测试
(5)兼容性测试
(6)易用性/用户体验测试
41. 代码走查
(1)研发需要对自己的代码审核,检查代码的争取性
(2)只检查代码中是否有错误
42. ctrl相关的几个几个命令
(1)ctrl+C:终止正在运行的程序
(2)ctrl+Z:表示一个特殊的二进制值,表示EOF
(3)ctrl+D:把当前进程转到后台运行,使用fg命令恢复
(4)ctrl+X:同上,但再按一次会重新回到原位置
43. 公测,内测,封测(游戏测试)
(1)公测
公开测试。就是向广大玩家完全公开,注册的账号数量没有限制,到了公测阶段一般来讲初期是免费的,之后随着玩家数量的多少,右移运营商会在一定时间后对游戏开始收费。永久免费的游戏除外
(2)内测
内部测试。经历了封测后,游戏进一步挖沙、发布出来,让大众玩家可以注册试玩,通过玩家玩后的反应和建议,进一步将游戏的BUG,设置,职业能力等进行修订。有的游戏的内测账号是有限的,比较难注册。一般的游戏内测结束后把玩家的游戏角色删掉,有的则保留或保留一部分。内测的游戏是免费的。
(3)封测
封闭测试。其版本实为未成熟的,有很多的BUG。在里面玩和正常没分别。就是禁止用户注册,只提供了一些账号分给玩家试试,如果发现BUG了就一定要告诉官方网站,官方才能进行补丁。
44. 网游的测试内容
(1)客户端性能
(2)服务器端性能
(3)从运行完game.exe打开游戏界面后可能运行的各个操作,玩法
(4)界面
45. 软件验收测试分类
(1)正式验收测试:
(2)非正式验收测试:
其中包含α测试(alpha)。由用户,测试人员,开发人员共同参与的内部测试。
模拟各类用户行为对即将面世的软件产品进行测试,视图发现并修改错误。先于beta。
(3)β测试(beta):
内测后的公测,即完全交给最终用户测试。
是用户公司组织各方面的典型终端用户在日常工作中实际使用beta版本,并要求用户报告异常情况,提出批评意见。测试的环境不受开发方控制。
46. 单元测试主要技术有哪些
(1)驱动代码:调用被测函数,给被测函数传参
(2)Stub代码:装函数是代替某些被调用了但没有编写代码,一般在增量迭代自顶向下的过程中需要编写。
(3)Mock代码:对代码中某些不容易获取的对象创建虚拟对象来测试。
47. 底层软件无需编写存根软件,顶层软件无需编写驱动软件
48. 关于软件测试一些描述
(1)软件测试是使用人工操作或者软件自动运行的方式来检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别的过程。
(2)软件测试的目标是发现一些可以铜鼓哦测试避免的开发风险
(3)软件测试的原则之一是测试应该尽早进行,最好在需求阶段就开始介入
(4)软件测试主要工作内容是验证(verification)和确认(validation)