牛客网软件测试面试常考: https://www.nowcoder.com/ta/review-test
软件测试面试题:
https://blog.csdn.net/shanshangyouzhiyangM/article/details/79981335
软件
软件的概念和特点
软件是计算机系统中与硬件相互依存的另一部分,与计算机系统操作有关的计算机程序、规程、规则,以及可能有的文件、文档及数据。
软件复用
软件复用(SoftWare Reuse)是将已有软件的各种有关知识用于建立新的软件,以缩减软件开发和维护的花费。
软件复用是提高软件生产力和质量的一种重要技术。早期的软件复用主要是代码级复用,被复用的知识专指程序,后来扩大到包括领域知识、开发经验、设计决定、体系结构、需求、设计、代码和文档等一切有关方面。
可以被复用的软件成分一般称作可复用构件。
软件生存周期
软件生存周期(Software life cycle)又称为软件生命期,生存期。是指从形成开发软件概念起,所开发的软件使用以后,知道失去使用价值消亡为止的整个过程。
生命周期阶段
- 计划(定义):软件计划和可行性分析->需求分析->软件设计
- 开发:编码
- 测试
- 运行维护
生存周期模型有典型的几种:
- 瀑布模型
- 快速原型模型:快速原型模型允许在需求分析阶段对软件的需求进行初步而非完全的分析和定义,快速设计开发出软件系统的原型,该原型向用户展示待开发软件的全部或部分功能和性能;用户对该原型进行测试评定,给出具体改进意见以丰富细化软件需求;开发人员据此对软件进行修改完善,直至用户满意认可之后,进行软件的完整实现及测试、维护。
- 迭代模型:迭代包括产生产品发布(稳定、可执行的产品版本)的全部开发活动和要使用该发布必需的所有其他外围元素。在某种程度上,开发迭代是一次完整地经过所有工作流程的过程:需求分析、设计、实施和测试工作流程。实质上,它类似小型的瀑布式项目。RUP认为,所有的阶段都可以细分为迭代。每一次的迭代都会产生一个可以发布的产品,这个产品是最终产品的一个子集。
基础知识
什么是软件测试?
软件测试是为了发现错误而执行程序的过程。或者说,软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误的过程。
软件测试的目的?
测试的目的是想以最少的人力、物力和时间找出软件中潜在的各种错误和缺陷,通过修正错误和缺陷提高软件质量,回避软件发布后由于潜在的软件缺陷和错误造成的隐患带来的商业风险。
测试是程序的执行过程,目的在于发现错误
一个成功的测试用例在于发现至今未发现的错误
一个成功的测试是发现了至今未发现的错误的测试
确保产品完成了它所承诺或公布的功能,并且用户可以访问到的功能都有明确的书面说明。
确保产品满足性能和效率的要求
确保产品是健壮的和适应用户环境的
软件测试的原则?
测试用例中一个必须部分是对预期输出或接过进行定义
程序员应避免测试自己编写的程序
编写软件的组织不应当测试自己编写的软件
应当彻底检查每个测试的执行结果
测试用例的编写不仅应当根据有效和预料到的输入情况,而且也应当根据无效和未预料到的输入情况
检擦程序是否“未做其应该做的”仅是测试的一半,测试的另一半是检查程序是否“做了其不应该做的”
应避免测试用例用后即弃,除非软件本身就是个一次性的软件
计划测试工作时不应默许假定不会发现错误
程序某部分存在更多错误的可能性,与该部分已经发现错误的数量成正比
软件测试是一项极富创造性,极具智力的挑战性的工作
什么是需求文档测试?
1、需求文档是否符合用户需求;
2、需求文档是否符合逻辑;
3、技术上是否能实现;
测试计划文档
目的:软件测试计划是指导测试过程的纲领性文件:
- 领导能够根据测试计划进行宏观调控,进行相应资源配置等
- 测试人员能够了解整个项目测试情况以及项目测试不同阶段的所要进行的工作等
- 便于其他人员了解测试人员的工作内容,进行有关配合工作
内容:
包含了产品概述、测试策略、测试方法、测试区域、测试配置、测试周期、测试资源、测试交流、风险分析等内容。借助软件测试计划,参与测试的项目成员,尤其是测试管理人员,可以明确测试任务和测试方法,保持测试实施过程的顺畅沟通,跟踪和控制测试进度,应对测试过程中的各种变更。测试计划编写6要素(5W1H):
- why——为什么要进行这些测试;
- what—测试哪些方面,不同阶段的工作内容;
- when—测试不同阶段的起止时间;
- where—相应文档,缺陷的存放位置,测试环境等;
- who—项目有关人员组成,安排哪些测试人员进行测试;
- how—如何去做,使用哪些测试工具以及测试方法进行测试
测试计划中的重点
测试计划和测试详细规格、测试用例之间是战略和战术的关系,测试计划主要从宏观上规划测试活动的范围、方法和资源配置,而测试详细规格、测试用例是完成测试任务的具体战术。所以其中最重要的是测试测试策略和测试方法(最好是能先评审)。
什么是测试用例? 什么是测试脚本? 两者的关系是什么?
测试用例:为实施测试而向被测试系统提供的输入数据、操作或各种环境设置以及期望结果的一个特定的集合。
测试脚本:是为了进行自动化测试而编写的脚本。
关系:测试脚本的编写必须对应相应的测试用例。
什么是设计文档测试?
1、设计是否符合全部需求
2、设计是否合理
软件缺陷(或者叫Bug)记录
最基本应包含:
- bug编号;
- bug严重级别,优先级;
- bug产生的模块;
- 首先要有bug摘要,阐述bug大体的内容;
- bug对应的版本;
- bug详细现象描述,包括一些截图、录像….等等;
- bug出现时的测试环境,产生的条件即对应操作步骤;
高质量的Bug记录:
- 1) 通用UI要统一、准确
缺陷报告的UI要与测试的软件UI保持一致,便于查找定位。 - 2) 尽量使用业界惯用的表达术语和表达方法
使用业界惯用的表达术语和表达方法,保证表达准确,体现专业化。