基本概念
- 什么是QA?
质量保证是以过程为中心的保证一个组织能够提供高质量产品的方法。
- 什么是测试?为什么需要测试?
测试是发现和标记缺陷的过程。所谓的缺陷是指实际结果和期望结果之间的任何差别。有的地方,测试也被认为是执行以找出错误为目的的程序的过程。
测试是为了让产品达到以下目标:
-满足需求
-使用户满意
-零缺陷
-改善产品的市场占有率
-树立对产品的信任
-减少开发和维护的成本
- 软件中存在缺陷的原因是什么?
-不正确的需求
-频繁变动需求
-复杂的业务逻辑
-技术的复杂性
-错误的设计
-劣质的编码
-高压的工作
- 测试与应用风险之间有怎样的关联?
测试是用来减低应用风险的。一个应用中总是因为各种缺陷而存在风险,如果缺陷过多就会引发用户的不满和失望并最终导致应用的失败。在应用变成产品之前应当通过测试来发现缺陷并实现风险的最小化。
- 测试的原则是什么?
-达到目标:产品要满足既定的目标。
-正确性优先:错误都要被清除掉。
- 软件测试的生命周期是怎样的?
-需求分析:QA团队要和各种关键信息持有者(包括客户、业务分析师、技术主管、系统架构师等)进行沟通并获得对需求细节的理解。
-测试策略和计划:QA团队进行成本估计并制定测试计划。
-测试用例开发
-环境搭建:包括软件环境和硬件环境。
-测试执行:QA团队执行所有的测试用例和脚本,在测试完成后向项目主管或开发团队报告所有的缺陷。
-缺陷报告:对所有失败测试编写缺陷报告,包括以下内容:-标题
-摘要
-如何重现失败测试的详细步骤
-测试所涉及到的数据
-失败测试的屏幕截图
-需求规格的引用
-测试环境
-发型版本号
-构建版本号
-缺陷的重要性
-缺陷的优先级-总结报告和分析:可以在测试执行过程中按日生成或者在测试结束后生成一个总结报告,包括以下内容:
-测试执行的百分比
-失败测试的编号和百分比
-通过测试的编号和百分比
-尚未完成的测试
-突出的问题
-主要的关注
- 缺陷报告的产品有哪些?
-HP Quality Center
-IBM Rational ClearQuest
-JIRA
-BugZilla
- 什么是功能测试?什么是非功能性测试?
功能测试通过要回答“用户能否执行此项操作”或“这个特定的功能能否使用”的问题;非功能性测试主要涉及到产品的可伸缩性、性能、安全性、吞吐量等内容。
- 审查(verification)和验证(validation)有什么区别?
验证要通过运行产品(执行产品的功能)来进行检查的过程;审查则不需要执行功能,对代码的走查就属于审查而不是验证。
- 什么是潜在缺陷(latent defect)?什么是隐蔽缺陷(masked defect)?
潜在缺陷是由于不满足特定的执行条件而没有发现的缺陷;隐蔽缺陷是由于其他缺陷的发生而没有被发现的缺陷。
- 测试前有哪些准备工作?
-验收测试计划
-需求规格说明
-风险区域
-测试数据:由用户或业务分析师提供的数据,可以在接近真实环境的条件下测试产品-真实测试用例
-测试场景
-有效和无效范畴
测试方法
- 有哪些测试方法?
-黑盒测试:关注外部功能而非内部结构,也称之为行为测试。黑盒测试可以应用于单元测试、集成测试、系统测试和验收测试。黑盒测试的设计技术包括:等价类划分、边界值分析、决策表、正交数组。
-白盒测试:测试应用的内部结构和工作方式,白盒测试需要了解系统内部视图以及专业的编程知识,这种测试通常应用于单元测试级别。白盒测试的设计技术包括:控制流测试(100%覆盖率)、数据流测试(数据的使用模式)、分支测试(判定覆盖,每个判断的真分支和假分支至少经历一次)和路径测试(所有可能的路径)。
-灰盒测试:黑盒测试和白盒测试的结合。
-可视测试
- 如何划分等价类?
划分等价类是利用集合论的知识将一个巨大的输入集合划分成子集,子集中的每个元素都可以作为这个子集的一个代表。划分等价类可以让你少量的测试测试一个巨大的输入集合。
- 什么是边界值分析?
系统中输入的边界值是最容易引发错误的。
- 什么是决策表?
输入和期望输出的对照表。
- 什么是正交数组?
一个二维数组,用两个列来给出所有可能的测试组合,主要用来消除重复测试。
- 什么是负面测试和正面测试?
正面测试是测试系统是否做了它该做的工作;而负面测试是测试系统是否不执行它不应该做的操作。用于负面测试的通常都是无效输入,用于测试系统在非法或无效的输入时的行为。