软件测试你需要知道的事(一) 概述

软件测试是描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。软件测试也从客观无关联的角度提供一个关于所测软件的一个概览,从而可以对软件所存在的风险有一个客观的认识。

软件测试所感兴趣的一些测试属性:

  • 是否达到设计需求
  • 对各种输入是否返回正确的值
  • 响应时间是否可以接受
  • 可用性
  • 是否能在预想的环境中正确运行

通常情况,由于所测软件的小的组件、组成部分几乎是无穷的,而软件测试会采用可行的策略,在有限的时间跟资源里面,去选择性地测试。所以,软件测试是为了找bug而对程序进行选择性针对性的测试。换句话说,软件测试是无法穷尽测试的。

在典型的瀑布开发流程中,软件测试在程序可以部分执行的时候就积极引入,比如单元测试。相对而言,在敏捷开发中,需求、编程跟测试通常都是并发进行的。

缺陷跟错误(Defects & failures

不是所有的软件缺陷都是由编码错误造成的。通常缺陷如果所处的位置越处于瀑布的顶端,则造成的损失越大,如需求中的分歧或者不清晰。所以越早发现缺陷越有利于缺陷的改正。需求中的分歧通常是指一些非功能性的需求,如程序的可测性,可维护性,易用性,性能以及安全性。

软件错误(failure, fault, bug)通常是由于程序员的失误造成软件的输出达不到预期要求。但是不是所有的程序错误都会造成软件输出与预期不一致。比如一段永远不会被调用的代码中含有程序错误。还有一种程序错误是运行环境改变造成的,比如你更换了硬件,操作系统等。

组合式输入

软件测试不可能把所有的可能的输入都测试一遍,所以进行有选择性的组合输入是很有必要的。这样可以使得用户用尽量少的测试用例去扩大测试覆盖度。比较常见的输入组合有边界值法,等价类法,决策表法,因果图等。

经济因素

从图表中也很容易看出缺陷或者是错误发现的越早,则修复它所花费的代价越小。反之,发现的越晚,则花费越大。


Cost to fix a defect


Time detected


Requirements


Architecture


Construction


System test


Post-release


Time introduced


Requirements




5–10×


10×


10–100×


Architecture




10×


15×


25–100×


Construction





10×


10–25×

测试人员

80年代以前,测试人员统称软件测试员(software tester),而之后才有了更加精细的分工。如测试经理,测试组长,测试设计师,测试员,自动化测试员,测试管理员。

历史阶段

  • 1956年及以前:面向调试的测试
  • 1957-1978:面向证明的测试
  • 1979-1982:面向破坏的测试
  • 1983-1987:面向评估的测试
  • 1988- 现在:面向预防的测试

测试工件

软件测试工程中会产生的工件(产物)。

  1. 测试计划:测试说明书。
  2. 文档追踪表:记录测试过程中文档的变动。也做版本控制用
  3. 测试用例:根据需求而设计的测试一个具体事务的流程。包含了输入跟期望输出。复杂的测试用例可能会包含多个分支,根据不同的前提条件输入,得到不同的结果。
  4. 测试脚本:用自动化工具,根据测试用例创建的测试脚本,主要用来进行回归测试。
  5. 测试组:一组测试用例的集合。比如一个模块的测试用例。
  6. 测试数据
  7. 测试工具
时间: 2024-12-21 12:56:26

软件测试你需要知道的事(一) 概述的相关文章

影响软件测试未来的5件事 (译)

摘要: 从我们看软件.评估风险.思考复杂性.设计我们的测试方法和策略,以及帮助发布一个稳定的产品给用户的方式,技术在我们如何测试软件上产生了影响.而且那种影响将只会随着技术进步而持续.在一个高水平上,有5件我们已经看到正在使软件测试的将来成形的重要事情. 在过去的二十多年里,软件测试不仅以执行不同活动的工具,而且以人们使用这些工具的思维演进.那时习惯了少量的工具用于软件测试,但是现在我们有过多的工具可以选择,从专利到开源.同样地,人们开始把测试者当作信息破坏者而不是守门员,并且在敏捷的世界里有很

关于软件测试工作的那点事

一直想写点东西,记录这些年的上班的点点滴滴,有开心有不开心的,还有有趣的.计划写的内容如下:1.如何接触软件测试行业2.刚刚开始接触测试的那一年3.测试3年后,为什么自己还是有那么些迷茫4.测试5年后,为什么还是一个普通的测试工程师5.测试近10年了,是继续走测试这条路还是该想想应该有别的想法了6.自己接下来的1年,3年,5年计划 原文地址:https://blog.51cto.com/gukkto/2415574

软件测试:心得简介!

指导老师:骏马昆朋 时间:2016.11.29 >>>>>>>>>>>>>>>>>>>> 如何成为一名优秀的测试工程师! 1.目标:发现软件缺陷,并尽可能早些. 2.探索精神,软件测试员不害怕进入陌生环境. 3.障碍排除高手,善于发现问题的症结. 4.追求完美,他们力求完美,但是知道无法企及,不去强求. 5.不懈努力,不停尝试,他们不会心存侥幸,而是尽一切可能去寻找. 6.判断准确,要察

软件测试·系统测试·安全性测试

软件测试主要是为了测试发现软件系统中的BUG,并进行改正,以保证在软件交付给客户是能够保证客户需求达到实现.但在交付之后,并不意味着软件就不会再出现错误,哪怕软件的运行BUG已经完全被解决,而病毒及非法黑客的入侵往往造成的损失比软件自身的BUG还大.因此在软件测试中进行安全性的测试成为一个不可缺少的环节.在实现安全性的测试时,软件工程师则把其放在了系统测试这一环节中,因为系统测试是为了软件能够在与其他程序配合使用时的稳定性,也就是说系统测试更加接近我们软件运行的日常环境.大家都知道病毒的载入往往

c#中单元测试

从走进.net后发现每天有写不完的代码,有做不完的测试...人感觉都已经机械,我们需要认清自己调整好心态,问下自己是否真的喜欢编程.我的答案当然也就是我爱编码,编码给我带来了许多欢乐,每天都给我体验小小成就.所以我要为我写的编码负责.那么先总结下测试方面的小小积累,作为以后复习的笔记. 在团队开发中单元测试扮演着一个很重要的角色. 例如:当你和你的团队一起开发时,由你写操作数据库的方法,其他人写界面,当你写好你的方法后你需要对你写的方法负责,不能说后面还有软件测试工程师,测试这种事留给他们去做.

一、 软件测试概述

1. 软件的概念  软件就是程序与文档的集合. 文档指软件从无到有整个生命周期中产生的各类图文集合.具体可包括用户需求规格说明书.需求分析.系统概要设计.系统详细设计.数据库设计.用户操作手册等. 2. 软件生命周期 生命周期包括需求定义.可行性分析.软件概要设计.软件详细设计.编码实现.调试和测试.软件验收与应用.维护升级到废弃的各个阶段. 3. 软件测试   软件测试是软件质量的重要保证. 软件测试主要描述了两项内容: (1)软件测试是为了发现软件中的错误而执行程序的过程: (2)通过设计测

你不知道的软件测试那些事?

你不知道的软件测试那些事? 一.写在前言 作为开发人员,我们都知道我们应该测试我们的代码.我们应该写单元测试,但这也通常是我们发现没时间时跳过的第一步. 作为团队的领导者或者管理者我们都知道测试是必要的,但是当截止日期临近的时候,我们倾向于减少测试,而把更多的重点放到编码上.这样看测试领域似乎很紧张.我们都知道测试对我们是有利的,但是一旦项目面临压力时我们就不再测试了. 二.我们为什么测试? Edsger W Dijkstra 说过:测试可以用来找到显式的缺陷(bug),但是无法显示潜伏的软件缺

DevOps交付模式下,软件测试的那些事

众所周知,近10年IT领域有两个关键的风向转变,传统IT向云计算转变,传统瀑布和迭代开发模式向敏捷开发模式转变.这两个转变促成了DevOps产品交付模式的出现.互联网行业竞争激烈,许多公司专注于产品和商业模式的快速迭代创新,期望通过DevOps快速交付产品,缩短产品的上市周期.华为DevOps模式下的软件测试体系的分享主要由 “测试对象的识别.测试组织与流程的演变.测试工具与技术的应用.测试管理和自动化测试”四个领域的关键内容组成.华为云近期推出了7天玩转性能&接口测试系列课程,添加小助手微信(

软件测试概述

• 不论软件的生产者还是软件的使用者,均生存在竞争的环境中: 软件开发商为了占有市场,必须把产品质量作为企业的重要目标之一,以免在激烈的竞争中被淘汰出局. 用户为了保证自己业务的顺利完成,当然希望选用优质的软件. 软件带来错误的原因很多,具体地说,主要有如下几点: • 交流不够.交流上有误解或者根本不进行交流 • 软件复杂性 • 程序设计错误 • 需求变化 • 时间压力 • 代码文档贫乏 • 软件开发工具 什么是软件测试 软件测试就是在软件投入运行前,对软件需求分析.设计规格说明和编码的最终复审