错误观点:“软件就是程序,软件开发就是编程序”
软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合。
程序是按事先设计的功能和性能要求执行的指令序列。
数据是使程序能正常操纵信息的数据结构。
文档是与程序开发,维护和使用有关的图文材料。
系统软件是负责管理计算机系统中各种独立的硬件,使得它们可以协调工作。
应用软件是为了某种特定的用途而被开发的软件。它可以是一个特定的程序,比如一个图像浏览器。也可以是一组功能联系紧密,可以互相协作的程序的集合。
问题定义,可行性研究,需求分析,概要设计,详细设计,编码和单元测试,综合测试,软件维护
经典定义:软件测试是在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。
标准定义:软件测试是使用人工或自动的手段来运行或测定某个程序系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果的差别。
软件测试的目的:软件测试目的在于发现问题,检查系统是否满足需求。
生命周期各个测试方法的对比
v模型是我们熟知的瀑布模型的一种改进,瀑布模型将软件生命周期划分为计划、分析、设计、编码、测试和维护六个阶段,由于早期的错误可能要等到开发后期的测试阶段才能发现,所以可能带来严重的后果。
v模型就是在这点改进了瀑布模型,在软件开发的生存期,开发活动和测试活动几乎同时开始,这两个并行的动态的过程就会极大的减少bug和error出现的几率。
真正的测试级别之间不存在严格的次序关系,各阶段间可以反复触发、迭代、增量
为了解决v模型和w模型存在的问题,要专家提出了h模型。它将测试活动完全独立出来,形成一个完全独立的流程,将测试准备活动和测试执行活动清晰地体现出来
覆盖率是用来度量测试完整性的一个手段,同时也是测试技术有效性的一个度量
覆盖率 = (至少被执行一次的item 数) / (item 的总数)
测试覆盖率对于黑盒测试来说,主要指两个方面:
需求覆盖和用例覆盖
1.定义:它表示在测试中,有哪些函数被测试到了,其被测试到的频率有多大,这些函数在系统所有函数中占的比例有多大通过设计一定的测试用例,要求每个需求点都被测试到。
2.计算公式:需求覆盖 = (被验证到的需求数量)/ (总的需求总数)
1.定义:主要体现在我们每轮测试验证通过的用例数载总用例中的比重
2.计算公式:用例覆盖 = (验证通过的用例数量)/ (总的用例总数)
本次测试执行的用例数 / 所有用例数
上述覆盖率统计建立在认为总用例数编写全面,一般对于大型系统测试要求覆盖率 100%
覆盖率的审核 : 抽样验收
已测试需求点 / 设计所有需求数
以产品、需求维度统计,无论大型项目或是小需求迭代都要求覆盖率达到100%
覆盖率的审核:抽样验收
大多工具判断语句覆盖,即单元测试代码覆盖代码行 / 总代码行
更多考察研发人员,更多时候要求覆盖率达到80%+
缺陷:覆盖率数据只能代表测试过哪些代码,不能代码是否测试好这些代码,容易遗漏逻辑、判断等场景
自动化覆盖的测试场景(测试用例) / 所有测试场景(用例)
用途:自动化测试更着重于回归验证,没必要追求过高的覆盖率,而要考虑用例设计
应用最多的地方在 测试停止标准
单纯讨论测试覆盖率,在瀑布式开发模型中并不重要,但在螺旋式、敏捷开发模型中,由于不断迭代累加,很难确定哪些模块在开发过程中没有给予足够的测试
在 短迭代、DevOps 中,更强调用单元测试覆盖率来评估不断增加的代码数量。