此篇是测试的基础概念,希望你可以从这里入门~
1、软件测试的目的和原则
目的:验证软件是否存在问题
原则:以客户为中心,遵循软件测试的规范,流程,标准和要求。
2、需求是什么?
IEEE定义: 软件需求是 ① 用户解决问题或达到目标所需的条件或权能;② 系统或系统部件要满足合同、标准、规范或其他非正式规定文件所需具有的条件或权能; ③ 一种反映上述两者所述条件或权能的文档说明。 它包含功能性需求及非功能性需求。
总结 “需求” 是指:满足用户期望或正式规定文档(合同、标准、规范)所具有的条件和权能。 包括用户需求和软件需求。
-
用户需求: 牛逼轰轰的甲方提出的需求;或理解为终端用户使用产品时必须要完成的任务;较为简单。
-
软件需求:会详细描述开发人员必须实现的软件功能。也是测试人员工作的基本依据。
从“用户需求”转到“软件需求”:需要 ——> 沟通!!
注:此处你可以想一下,不以测试人员的角度,对一个声控灯的需求。
3、什么是bug?
软件错误的定义:
当且仅当规格说明是存在的并且正确,程序与规格说明之间的不匹配才是错误。当没有需求规格说明书时,判断标准以最终用户为准:当程序没有实现其最终用户合理预期的功能要求时,就是软件错误。
4、什么是测试用例?
测试用例是为了实施而向被测试的系统提供的一组集合,这组集合包含:测试环境、操作步骤、测试数据、预期结果等因素。
最初的测试用例是用Excel写的~
测试用例解决的问题:衡量测试的覆盖率,可以实施新版本的重复测试,避免大量冗余的测试影响测试效率。
此处你可以试着用Excel写一个“苹果手机中新建联系人”的测试用例。
5、开发模型和测试模型
软件的生命周期
是指从软件产品的设想开始到软件不再使用而结束的时间。
分为6个阶段:
== 需求分析–>计划–>设计–>编码–>测试–>运行维护 ==
模型1:瀑布模型
瀑布模型是所有其他模型的基础框架,每一个阶段都只执行一次,是线性顺序进行的软件开发模式。
优点:强调–>开发的阶段性、早期计划及需求调查、产品测试。
缺点:不能适应需求变化。因为是单一流程,开发的经验不能反馈应用于本产品的过程。bug到最后一步才暴露出来。“集成之日就是爆炸之日。”
适合于:需求相对稳定,变更小的项目
模型2:螺旋模型
采用渐进式的开发模式。
优点:强调–>严格的全过程风险管理、各开发阶段的质量。
缺点:引入–>极严格的风险识别、风险分析和风险控制。
适合于:规模大、复杂度高、风险大的项目
模型3:增量模型
增量开发能显著降低项目风险,结合软件持续构建机制。它鼓励用户反馈,在每个迭代过程中,促使开发小组以一种循环的、可预测的方式驱动产品的开发。
模型4:迭代模型
迭代是反复求精的概念。
模型5:敏捷模型(当前较流行)
《敏捷宣言》(http://agilemanifesto.org/):
① 个体与交互重于过程和工具–>“人与人之间的沟通”
② 可用的软件重于完备的文档–>“轻文档”
③ 客户协作重于合同谈判–>“客户参与”
④ 响应变化重于遵循计划–>“拥抱变化”
⑤ 上面的每对比较中,后者并非全无价值,但我们更看重前者。
敏捷的特点:周期短(14周)、人员(59人)、固定站会(10~15分钟)
6、软件测试模型
V模型
目的是改进软件开发的效率和结果,是瀑布型的变种。
如下图:
W模型
又叫“双V模型”,它增加了软件各开发阶段中应同步进行的验证和确认活动。
如下图:
特点:测试与开发同步执行,即每个环境都要进行测试,避免了线型顺序的缺点。
优点:尽早发现问题;缺点:研发和测试分开来看,仍为串行的;不能满足需求频繁变更。
7、配置管理
定义:通过对在软件生命周期不同的时间点上的软件配置进行标识,并对这些贝表示的软件配置项的更改进行系统控制,从而达到保证软件产品的完整性和可塑性的过程。
配置项:代码、文档、使用工具、程序等。
实施好处:软件配置管理(SCM)实施可以 ① 对配置项进行有效管理;② 方便重现历史版本; ③ 可重新编译历史版本; ④ 可实现异地多团队开发、并行开发; ⑤ 提高工作效率。