软件测试系列之了解篇

趣味小故事:

Bug词原意臭虫或虫子。

【第一个计算机Bug诞生68年】1945年9月,编译器发明者格蕾斯·哈珀正领着她的小组构造”马克二型”计算机。突然,马克二型死机了;哈珀在某出错继电器上发现一只被电死的飞蛾;她将蛾子贴到记事本中并注明”第一个发现虫子实例”。从此,计算机错误称为Bug,将发现Bug并纠正的过程叫”Debug”!

一、缺陷

什么是软件缺陷(即bug)

计算机软件或程序中存在的某种破坏正常运行能力的问题、错误,或者隐藏的功能缺陷。

为什么会出现软件缺陷

第一大来源于需求定位错误,需求说明文档没有写,或者不够全面,经常更改,总是导致的结果就是一开始的需求定错了,那么这个软件的bug就会出现。(在这里你就可以看出来bug不仅仅是编程的错误,更多的原因很可能是因为需求不明确)

第二大来源是设计错误。架构师设计架构,设计师设计更多的细节等错误。

还有一些原因很可能是测试错误,不过这一点的比例占得很小。

修复软件缺陷的费用

设计软件,通常我们需要有计划,有条理的开发过程来实现。这个过程的整个阶段,我们都可以从中发现bug。不过随着时间的推移,修复软件缺陷的费用也在呈十倍的增长。你可以想象建筑楼房一样,一开始还比较好改动,但是越到后来越不好改,而且很多时候找不到问题出在了哪里,很有可能需要拆掉一部分重新建,工期反复,搞不好最后还会赔钱。所以,费用的增长与软件的开发过程成正比增长,我们所需要做的,就是尽早的发现bug!

二、测试原则

软件测试有风险

完全测试程序不可能

如果你妄想对一个程序进行完全测试,那我劝你别想了。完全测试程序是不可能的,首先输入量太大,输出结果太多,软件的执行路径也太多。而且需求是主观的,你认为对的,也许在别人眼里就是不正确的!

测试无法显示潜伏的软件缺陷

想想一下,如果让你测试软件,你测试很多回后的结果是,没有发现问题,但是这个时候你能说,这个软件是没有问题,没有bug的吗?软件测试的工作与防疫员是很相似的,你可以报告软件存在问题,但是却不能报告软件没有问题。解决方法,继续测试。

看完上面的两条,相信你对“软件测试有风险”这个标题有了一定的认识,任何人都无法对软件进行完全测试,这样也导致了软件很可能潜伏bug,所以,我们要做的是,尽可能的降低风险,贴近完全测试。在这里,软件测试员需要学会一个关键的思想——如何把数量巨大的可能测试减少到可以控制的范围,以及如何针对风险做出明智的抉择,哪些测试重要,哪些测试不重要。

找到的bug越多,就说明软件的bug越多

你杀死过“小强(蟑螂)”吗?小强有一个很霸气的称号——不死的小强!

在这里我们的软件中的bug就像我们生活中的害虫一样,发现一个,附近可能就有一堆。而且一个有意思的现象是,软件中的bug也具有抵抗力,当我们反复使用相同的测试工具来测试的时候,慢慢的你就会发现该软件居然对此测试工具有了免疫力,戏称“杀虫剂怪事”,有意思吧。

并非所有的bug都要修复

我们需要做出一款没有任何bug的软件交付给用户吗?做过开发的应该都知道,很多软件的上市,多多少少都会存在一些缺陷,那么当时为什么没有改?

原因很多,比如没有足够的时间,不算是真正的bug,修复的风险太大,不值得修复等等,这些都可以是我们不修改bug的原因。记得我曾经在一篇博文中写过,心有百川之人,有的时候,我们的心胸也要给bug的留一些空间。

三、术语和定义

精确和准确

你可以这样理解,准确就是指命中目标,精确在软件的行业,你可以指软件的稳定性,计算的精度。我们对这个有个大致的了解就可以,这样有利于我们判断bug的严重级别,而且不同的公司可能有不同的标准,我们需要学习。

确认和验证

确认是保证软件符合需求;验证是保证软件满足用户的要求过程。这样说有点绕,你可以这样理解,确认是最基本的保证,更倾向于开发过程中的事情;而验证是要实际去检验的,根据现实生活来保证是否满足,是对最终产品的检验。

质量和可靠性

如果说这个软件一直很稳定,可靠,我们可以说这个软件具有可靠性,甚至于我们可以不完全正确的说,这个软件的质量很好;而实际上判定质量好坏的范围很广,比如软件的功能,运行能力,兼容性等等,可靠性只是判断软件质量的其中一条,是必要不充分条件。

测试和质量保证(QA)

在这里区分两个定义,软件测试员的目标是尽可能早的找出bug并确保bug修复;而软件质量保证人员的主要职责是创建和执行改进软件开发过程并防止bug发生的标准和方法。

他们两者有时候也会存在一些交叉,比如测试员会做一些QA的工作,QA人员也会进行一些测试。具体还要根据公司的安排来看,比如有的公司,测试和QA都是同一个人。

小结:

啰啰嗦嗦也说了这么多,其实我已经尽可能的精简了,嘿嘿。本文说的比较零散,算是对测试入门的一些专业术语和具体情况的一个了解吧。如果想要具体了解的,还要具体去查一些资料来学习,也欢迎与大家交流和探讨!

软件测试系列之了解篇

时间: 2024-08-25 05:00:32

软件测试系列之了解篇的相关文章

软件测试系列之入门篇

一.你知道软件测试有多重要吗? 在国际上,软件测试(软件质量控制)是一件非常重要的工程工作,测试也作为一个非常独立的职业.在IBM.Microsoft等开发大型系统软件公司,很多重要项目的开发测试人员的比例能够达到1:2甚至1:4. 在国内软件测试的地位还不够高,并且大多只停留在软件单元测试.集成测试和功能测试上.软件测试从业人员的数量同实际需求有不小差距,国内软件企业中开发人员与测试人员数量一般为5:1,因此,国内的软件测试产业化还有待开发和深掘. 说到这里不知道你反应是高兴还是失望?但是我却

【Windows10 IoT开发系列】配置篇

原文:[Windows10 IoT开发系列]配置篇 Windows10 For IoT是Windows 10家族的一个新星,其针对不同平台拥有不同的版本.而其最重要的一个版本是运行在Raspberry Pi.MinnowBoard和Galileo平台上的核心版.本文重点针对Raspberry Pi平台的Windwos10 IoT配置做介绍. Windows 10 IoT Editions ​一:设置你的电脑. 注:​开发Windows10 IoT的电脑需要Visual Studio 2015.

Intelli IDEA学习系列之快捷键篇

Intelli IDEA学习系列之快捷键篇 IDEA简介: IDEA 全称IntelliJ IDEA,是java语言开发的集成环境,IntelliJ在业界被公认为最好的java开发工具之一,尤其在智能代码助手.代码自动提示.重构.J2EE支持.Ant.JUnit.CVS整合.代码审查. 创新的GUI设计等方面的功能可以说是超常的.IDEA是JetBrains公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主. 在学习过程中会慢慢补充..... [1.查找] 1

前端工程师技能之photoshop巧用系列第五篇——雪碧图

显示目录 目录 [1]定义 [2]应用场景 [3]合并[4]实现[5]维护 前面的话 前面已经介绍过,描述性图片最终要合并为雪碧图.本文是photoshop巧用系列第五篇--雪碧图 定义 css雪碧图(sprite)是一种网页图片应用处理方式,它允许将一个页面涉及到的所有零星图片都包含到一张大图中.使用雪碧图的处理方式可以实现两个优点: [1]减少http请求次数 [2]减少图片大小,提升网页加载速度 (多张图片加载速度小于拼合成的图片的加载速度) 凡事都不完美,实现优点的同时也带来了缺点,即提

SQL Server调优系列玩转篇三(利用索引提示(Hint)引导语句最大优化运行)

前言 本篇继续玩转模块的内容,关于索引在SQL Server的位置无须多言,本篇将分析如何利用Hint引导语句充分利用索引进行运行,同样,还是希望扎实掌握前面一系列的内容,才进入本模块的内容分析. 闲言少叙,进入本篇的内容. 技术准备 数据库版本为SQL Server2012,利用微软的以前的案例库(Northwind)进行分析,部分内容也会应用微软的另一个案例库AdventureWorks. 相信了解SQL Server的朋友,对这两个库都不会太陌生. 一.并行Hint提示 (MAXDOP N

SQL Server调优系列玩转篇二(如何利用汇聚联合提示(Hint)引导语句运行)

原文:SQL Server调优系列玩转篇二(如何利用汇聚联合提示(Hint)引导语句运行) 前言 上一篇我们分析了查询Hint的用法,作为调优系列的最后一个玩转模块的第一篇.有兴趣的可以点击查看:SQL Server调优系列玩转篇(如何利用查询提示(Hint)引导语句运行) 本篇继续玩转模块的内容,同样,还是希望扎实掌握前面一系列的内容,才进入本模块的内容分析. 闲言少叙,进入本篇的内容. 技术准备 数据库版本为SQL Server2012,利用微软的以前的案例库(Northwind)进行分析,

深入理解JavaScript系列(结局篇)(转载)

深入理解JavaScript系列(结局篇) 介绍 最近几个月忙得实在是不可开交,终于把<深入理解JavaScript系列>的最后两篇“补全”了,所谓的全是不准确的,因为很多内容都没有写呢,比如高性能.Ajax安全.DOM详解.JavaScript架构等等.但因为经历所限,加上大叔希望接下来写点其它东西,所以此篇文字就暂且当前完结篇的总结吧,以后有时间的话,可以继续加上一些未涉及的专题内容. 网络文章来源 本系列文章参考了大量的互联网网站,在此向各位网站拥有者.博主.提到的以及未提到的作者们说一

Windows Azure系列 -《基础篇》- 创建虚拟网络

如何在Windows Azure中创建虚拟网络,以构建云环境中的虚拟局域网: 1.登陆Windows Azure平台,点击侧边栏网络按钮,在中间点击"创建虚拟网络". 2.在接下来的配置页面,填写虚拟网络的名称.选择地理外置和地缘组(如果已有),没有则选择创建新的地缘组. 3.接下来填写DNS服务器地址(没有则留空) 4.规划和配置IP网络,选择适用的地址空间. 5.最后点击确认按钮完成. Windows Azure系列 -<基础篇>- 创建虚拟网络,布布扣,bubuko.

Windows Azure系列 -《基础篇》- 如何创建虚拟机

首先,使用自己的windows azure账号登陆管理平台manage.windowsazure.cn,找到并点击"虚拟机"标签,即可看到目前云平台中你所拥有的虚机实例,在我的环境中现在没有任何的虚机,所以我们可以通过点击图示的新建按钮进行选择或直接点击"创建虚拟机"进行创建: 点击"创建虚拟机",在DNS名称位置填写所建虚机的主机名,并选择映像和虚机大小(可选单核至8核,内存从768M至56G),这里说明一下,处于用户名不可以设置为常用的adm