语雀地址(更全的面试题):https://www.yuque.com/wangling-ux2hv
- 1、你在测试中发现了一个 bug,但是开发经理认为这不是一个 bug,你应该怎样解决。
a. 首先,将问题提交到缺陷管理库里面进行备案。
b. 然后,要获取判断的依据和标准:
c. 根据需求说明书、产品说明、设计文档等,确认实际结果是否与计划有不一致的地方,提供缺陷是否确认的直接依据;
ⅰ. 如果没有文档依据,可以根据类似软件的一般特性来说明是否存在不一致的地方,来确认是否是缺陷;
ⅱ. 根据用户的一般使用习惯,来确认是否是缺陷;
ⅲ. 与设计人员、开发人员和客户代表等相关人员探讨,确认是否是缺陷;
d. 合理的论述,向测试经理说明自己的判断的理由,注意客观、严谨,不参杂个人情绪。
e. 等待测试经理做出最终决定,如果仍然存在争议,可以通过公司政策所提供的渠道,向上级反映,并有上级做出决定。 - 2、给你一个网站,你如何测试?
a. 首先,查找需求说明、网站设计等相关文档,分析测试需求。
b. 制定测试计划,确定测试范围和测试策略,一般包括以下几个部分:
ⅰ. 功能性测试
ⅱ. 界面测试
ⅲ. 性能测试
ⅳ. 数据库测试
ⅴ. 安全性测试
ⅵ. 兼容性测试
c. 设计测试用例:
ⅰ. 功能性测试可以包括,但不限于以下几个方面:- 链接测试。链接是否正确跳转,是否存在空页面和无效页面,是否有不正确的出错信息返回等。
- 提交功能的测试。
- 多媒体元素是否可以正确加载和显示。
- 多语言支持是否能够正确显示选择的语言等。
ⅱ. 界面测试可以包括但不限于一下几个方面: - 页面是否风格统一,美观
- 页面布局是否合理,重点内容和热点内容是否突出
- 控件是否正常使用
- 对于必须但为安装的空间,是否提供自动下载并安装的功能
- 文字检查
ⅲ. 性能测试一般从以下两个方面考虑: - 压力测试
- 负载测试
- 强度测试
ⅳ. 数据库测试要具体决定是否需要开展。数据库一般需要考虑连结性,对数据的存取操作,数据内容的验证等方面。
ⅴ. 安全性测试: - 基本的登录功能的检查
- 是否存在溢出错误,导致系统崩溃或者权限泄露
- 相关开发语言的常见安全性问题检查,例如 SQL 注入等。
- 如果需要高级的安全性测试,确定获得专业安全公司的帮助,外包测试,或者获取支持
ⅵ. 兼容性测试,根据需求说明的内容,确定支持的平台组合: - 浏览器的兼容性
- 操作系统的兼容性
- 软件平台的兼容性
- 数据库的兼容性
d. 开展测试,并记录缺陷。合理的安排调整测试进度,提前获取测试所需的资源,建立管理体系(例如,需求变更、风险、配置、测试文档、缺陷报告、人力资源等内容)。
e. 定期评审,对测试进行评估和总结,调整测试的内容。
- 3、在搜索引擎中输入汉字就可以解析到对应的域名,请问如何用 LoadRunner 进行测试。
a. 建立测试计划,确定测试标准和测试范围
b. 设计典型场景的测试用例,覆盖常用业务流程和不常用的业务流程等
c. 根据测试用例,开发自动测试脚本和场景:
ⅰ. 录制测试脚本
ⅱ. 新建一个脚本(Web/HTML 协议)
ⅲ. 点击录制按钮,在弹出的对话框的 URL 中输入”about:blank”。
ⅳ. 在打开的浏览器中进行正常操作流程后,结束录制。
ⅴ. 调试脚本并保存。可能要注意到字符集的关联。
d. 设置测试场景
ⅰ. 针对性能设置测试场景,主要判断在正常情况下,系统的平均事务响应时间是否达标
ⅱ. 针对压力负载设置测试场景,主要判断在长时间处于满负荷或者超出系统承载能力的条件下,系统是否会崩溃。
e. 执行测试,获取测试结果,分析测试结果 - 4、一台客户端有三百个客户与三百个客户端有三百个客户对服务器施压,有什么区别?
a. 300 个用户在一个客户端上,会占用客户机更多的资源,而影响测试的结果。
b. 线程之间可能发生干扰,而产生一些异常。
c. 300 个用户在一个客户端上,需要更大的带宽。
d. IP 地址的问题,可能需要使用 IP Spoof 来绕过服务器对于单一 IP 地址最大连接数的限制。
e. 所有用户在一个客户端上,不必考虑分布式管理的问题;而用户分布在不同的客户端上,需要考虑使用控制器来整体调配不同客户机上的用户。同时,还需要给予相应的权限配置和防火墙设置。 - 5、软件都有多少种分类?
根据功能的不同,电脑软件可以粗略地分成四个层次: - 最贴近电脑硬件的是一些小巧的软件。它们实现一些最基本的功能,通常固化在只读存储器芯片中,因此称为固件。
- 系统软件包括操作系统和编译器软件等。系统软件和硬件一起提供一个平台。它们管理和优化电脑硬件资源的使用。
- 支持软件。包括图形用户界面、软件开发工具、软件评测工具、数据库管理系统、中间件等。
- 应用软件种类最多,包括办公软件、电子商务软件、通信软件、行业软件,游戏软件等等。
- 6、什么是测试用例?什么是测试脚本?两者的关系是什么?
a. 为实施测试而向被测试系统提供的输入数据、操作或各种环境设置以及期望结果的一个特定的集合。
b. 测试脚本是为了进行自动化测试而编写的脚本。
c. 测试脚本的编写必须对应相应的测试用例 - 7、简述什么是静态测试、动态测试、黑盒测试、白盒测试、α测试、β测试
a. 静态测试是不运行程序本身而寻找程序代码中可能存在的错误或评估程序代码的过程。
b. 动态测试是实际运行被测程序,输入相应的测试实例,检查运行结果与预期结果的差异,判定执行结果是否符合要求,从而检验程序的正确性、可靠性和有效性,并分析系统运行效率和健壮性等性能。
c. 黑盒测试一般用来确认软件功能的正确性和可操作性,目的是检测软件的各个功能是否能得以实现,把被测试的程序当作一个黑盒,不考虑其内部结构,在知道该程序的输入和输出之间的关系或程序功能的情况下,依靠软件规格说明书来确定测试用例和推断测试结果的正确性。
d. 白盒测试根据软件内部的逻辑结构分析来进行测试,是基于代码的测试,测试人员通过阅读程序代码或者通过使用开发工具中的单步调试来判断软件的质量,一般白盒测试由程序员在开发过程中来实现。
e. α 测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的受控测试,Alpha 测试不能由程序员或测试员完成。
f. β 测试是软件的多个用户在一个或多个用户的实际使用环境下进行的测试。开发者通常不在测试现场,Beta 测试不能由程序员或测试员完成。 - 8、软件质量保证体系是什么?国家标准中与质量保证管理相关的几个标准是什么?他们的编号和全称是什么?
a. 来自 Wikipedia 对 SQA 的定义,软件质量保证(SQA):
Software Quality Assurance (SQA) consists of the software engineering processes and methods used to ensure quality. SQA encompasses the entire software development process, which may include processes such as reviewing requirements documents, source code control, code reviews, change management, configuration management, release management and of course, software testing.
SQA 由一套软件工程过程和方法组成,以保证(软件的)质量。SQA 贯穿整个软件开发过程,(它)应包括需求文档评审、代码控制、代码评审、变更管理、配置管理、版本管理和软件测试。
a. 国家标准:
ⅰ. GB/T 8567-2006 计算机软件文档编制规范
ⅱ. GB/T 11457-2006 信息技术 软件工程术语
ⅲ. GB/T 16260.1-2006 软件工程 产品质量 第 1 部分:质量模型
ⅳ. GB/T 16260.2-2006 软件工程 产品质量 第 2 部分:外部度量
ⅴ. GB/T 16260.3-2006 软件工程 产品质量 第 3 部分:内部度量
ⅵ. GB/T 16260.4-2006 软件工程 产品质量 第 4 部分:使用质量的度量
ⅶ. GB/Z 20156-2006 软件工程 软件生成周期过程 用于项目管理的指南
ⅷ. GB/T 20157-2006 信息技术 软件维护
ⅸ. GB/T 20158-2006 信息技术 软件生成周期过程 配置管理 - 9、软件产品质量特性是什么?
a. 功能性:适应性、准确性、互操作性、依从性、安全性。
b. 可靠性:成熟性、容错性、以恢复性。
c. 可使用性:易理解性、易学习性、易操作性。
d. 效率:时间特性、资源特性。
e. 可维护性:易分析性、易变更性、稳定性、易测试性。
f. 可移植性: 适应性、易安装性、遵循性、易替换性。 - 10、软件测试的原则与策略是什么?
- 软件测试的原则:
教材的说法: - 软件测试应尽早执行,并贯穿于整个软件生命周期
- 软件测试应追溯需求
- 测试应由第三方来构造
- 穷举测试是不可能的,要遵循 Good-enough 原则
- 必须确定预期输出(或结果)
- 必须彻底检查每个测试结果
- 充分注意测试中的群集现象
- 缺陷的二八定理
- 严格执行测试计划,排除测试的随意性
- 注意合法合理的输入,也要注意非法的非预期的输入
- 检查程序是否是否做了不该做的
- 测试应从小规模开始,逐步转向大规模13. 反复使用同样的测试会使软件具有抵抗力
- 关注缺陷的修复
- 另一种说法:
- 应当把尽早和不断地测试作为开发者的座右铭。
- 程序员应该避免检查自己的程序,测试工作应该由独立的专业的软件测试机构来完成。
- 设计测试用例时,应该考虑到合法的输入和不合法的输入,以及各种边界条件,特殊情况下要制造极端状态和意外状态,比如网络异常中断、电源断电等情况。
- 一定要注意测试中的错误集中发生现象,这和程序员的编程水平和习惯有很大的关系。
- 对测试错误结果一定要有一个确认的过程。一般有 A 测试出来的错误,一定要有一个 B 来确认,严重的错误可以召开评审会进行讨论和分析。
- 制定严格的测试计划,并把测试时间安排得尽量宽松,不要希望在极短的时间内完成一个高水平的测试。
- 回归测试的关联性一定要引起充分的注意,修改一个错误而引起更多错误出现的现象并不少见。
- 妥善保存一切测试过程文档,意义是不言而喻的,测试的重现性往往要靠测试文档。
- 软件测试策略:在一定的软件测试标准、测试规范的指导下,依据测试项目的特定环境约束而规定的软件测试的原则、方式、方法的集合。
- 11、结构化系统测试和功能性系统测试分别采用了哪些方法和技术?
a. 结构化系统测试技术:用于验证所开发的系统及程序的运行情况。目标是要确保产品设计在结构上合理,功能上正确。为确定实现的配置及其各功能共同作用以完成特定任务提供了一种机制。结构化测试技术由以下几种:
ⅰ. 压力测试:确定系统以期望的容量执行。
压力测试技术用于检查系统面对意外情况下的大数据量时是否可以正常运行。所涉及的方面包括输入事务、内部表、磁盘空间、输出、通信、计算机容量以及人机交互等。
当应用系统所能正常处理的工作量并不确定时需要使用压力测试。压力测试意图通过对系统施加超负载事务量来达到破坏系统的目的。弱点在于准备测试的时间与在测试的实际执行过程中所消耗的资源数量都非常之大,通常在应用程序投入使用之前这种技术是无法进行的。
ⅰ. 执行测试:系统能达到期望的熟练性。
举例:事务轮转时间充分;软硬件使用良好。
执行测试技术用于检查系统是否达到了预期在产品状态下的成熟度。执行测试可以验证系统的响应时间、轮转时间及设计性能。
在开发过程的早期就应该进行执行测试,尽早制定已经完成的系统没有达到性能指标是非常有价值的。在关键时间点进行。关键时间点指的是当前的结果会影响甚至改变系统结构的时间点。
ⅰ. 恢复测试:系统失效之后可以恢复到可操作状态。
举例:引入失败;评估备份数据的充分性。
恢复测试技术用于确保系统在经历灾难后可以继续正常运行,它不仅可以验证恢复过程,而且可以验证过程各组件的有效性。
当用户认为系统操作的连续性对于其所涉及领域的某些功能至关重要时,需要进行恢复测试。
ⅰ. 操作测试:系统以正常操作状态执行。
举例:确定系统可以依据文档进行运行;JCL(工作控制语言)充分。
操作测试技术主要用于检查系统在正常的操作状态下是否可以执行。操作测试可以与其它测试联合执行。
任何应用程序在成为产品之前都应进行操作测试。
ⅰ. (与过程的)一致性测试:系统的开发与标准和规程相一致。
举例:按标准执行;文档完整。
一致性测试技术用于验证应用程序的开发是否与信息技术指标、过程及准则相一致。一致性测试最有效的方法是过程审查。
系统开发标准和过程的一致性程度依赖于管理层对于所需遵循的特定过程和执行标准的重视程度。
ⅰ. 安全性测试:根据组织的重要性对系统进行保护。
举例:访问拒绝;规程适当。
安全性测试技术用于评价保护性程序及安全对策的充分性。安全性缺陷不如其它类型的缺陷那么明显。安全性测试是测试过程中高度专业化的部分。分物理安全性(针对利用物理方法收集信息的手段)和逻辑安全性(针对使用计算机处理和通信能力进行非法活动信息的手段)。
当系统保护信息和资产对于组织来说意义重大时,需要进行安全性测试。
a. 功能性系统测试用于确保系统需求与定义都得到了满足。该过程通常包含创建用于评价应用程序正确性的测试条件。用于执行功能测试的几种测试技术包括:
ⅰ. 需求测试:系统按制定方式执行。
举例:证明系统需求;与政策、规则相一致。
需求测试技术验证系统是否正确执行其功能,并且能保证在相当长的一段时间内保持其正确性。需求测试的执行主要通过执行创建的测试条件以及功能检查单来完成,通过需求得到测试条件,然后以类似于 SDLC 这种特定的方式表现,生成用于评价实现的应用系统的测试数据。
任何应用程序都应该对需求进行测试,此过程应该开始于需求阶段,并一直持续到系统运行和维护阶段。
ⅰ. 回归测试:验证系统中没有改变的部分仍能正确运行。
举例:未变更的部分正常运行;未变更的人工规程正确。
回归测试技术对已经测试过的部分进行重新测试,以保证它们在应用程序其它部分发生变更之后仍能正常运行。
当变更会对应用程序中没有变更的部分产生高风险的影响时需要进行回归测试。
ⅰ. 错误处理测试:错误可以得到防止或检测,并被修复。
举例:将错误引入测试;错误的再次注入。
人工系统与自动系统之间差别的特点之一就是预定义的错误处理特性。错误处理测试技术用于检查应用系统正确处理发生异常的能力。错误处理测试需要一组知识丰富的人员来预见应用系统可能发生的错误。它是测试错误的引入、错误的处理,控制条件以及条件的再次正确输入。
在系统整个生命周期中都应该进行错误测试。在开发过程中,应该识别错误带来的问题并且采取相应的措施将错误减少到可以接受的程度。
ⅰ. 人工支持测试