软件测试(软件测试工作每天干什么)

尽管软件测试可以在一些特定假设的假设下确定软件的正确性(参见下面的测试难度层次结构),但测试不能识别软件中的所有故障。相反,它提供了一种批评或比较,将产品的状态和行为与测试预言进行比较——人们可能通过这些原则或机制来识别问题。

这些预言可能包括(但不限于)规范、合同、可比产品、同一产品的过去版本、对预期或预期目的、用户或客户期望、相关标准、适用法律或其他标准的推断。

测试的主要目的是检测软件故障,以便发现和纠正缺陷。测试不能确定产品在所有条件下都能正常工作,而只能确定它在特定条件下不能正常工作。软件测试的范围可能包括检查代码以及在各种环境和条件下执行该代码以及检查代码的各个方面:它是否做了它应该做的事情和做它需要做的事情去做。在当前的软件开发文化中,测试组织可能与开发团队分开。测试团队成员有多种角色。来自软件测试的信息可用于纠正软件开发过程。

每个软件产品都有一个目标受众。例如,视频游戏软件的受众与银行软件完全不同。因此,当一个组织开发或以其他方式投资于软件产品时,它可以评估该软件产品是否会被其最终用户、目标受众、购买者和其他利益相关者所接受。软件测试有助于进行这种评估。

软件测试工作每天干什么?具体可能包括:

1.故障和BUG

软件故障通过以下过程发生:程序员犯了错误(mistake),导致软件源代码出现故障(defect,bug)。如果执行此故障,在某些情况下系统会产生错误的结果,从而导致故障。

并非所有故障都必然导致故障。例如,死代码中的错误永远不会导致失败。当环境改变时,没有揭示故障的故障可能会导致故障。这些环境变化的示例包括在新的计算机硬件平台上运行的软件、源数据的更改或与不同软件的交互。单个故障可能导致广泛的故障症状。

并非所有软件故障都是由编码错误引起的。昂贵缺陷的一个常见来源是需求差距,即导致程序设计者遗漏错误的未识别需求。需求差距通常是非功能性需求,例如可测试性、可扩展性、可维护性、性能和安全性。

2.输入组合和前提条件

软件测试的一个基本问题是,在输入和前提条件(初始状态)的所有组合下进行测试是不可行的,即使使用简单的产品也是如此。这意味着软件产品中的故障数量可能非常多,并且很少发生的缺陷在测试和调试中很难发现。更重要的是,质量的非功能维度(应该如何与应该做什么)——可用性、可扩展性、性能、兼容性和可靠性—可能是高度主观的;对一个人构成足够价值的东西可能对另一个人来说是无法容忍的。

软件开发人员无法测试所有内容,但他们可以使用组合测试设计来确定获得所需覆盖率所需的最少测试数量。组合测试设计使用户能够以更少的测试获得更大的测试覆盖率。无论他们是在寻找速度还是测试深度,他们都可以使用组合测试设计方法将结构化的变化构建到他们的测试用例中。

3.经济学

NIST在2002年进行的一项研究报告称,软件错误每年给美国经济造成595亿美元的损失。如果执行更好的软件测试,可以避免超过三分之一的成本。

由于成本原因,外包软件测试非常普遍,中国、菲律宾和印度是首选目的地。

4.角色

软件测试可以由专门的软件测试人员完成;直到1980年代,普遍使用“软件测试员”一词,但后来它也被视为一个单独的职业。关于软件测试的时期和不同的目标,建立了不同的角色,例如测试经理、测试负责人、测试分析师、测试设计师、测试员、自动化开发人员和测试管理员。软件测试也可以由非专门的软件测试人员执行。

软件测试(软件测试工作每天干什么)

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注