软件测试基础(二) 之 软件及其特性

什么是软件和软件的特性

一、首先我们先简单的理解一下软件。

  软件测试在行业内有一个很形象的说法叫做捉虫,软件测试是给软件来捉虫子的,这有点类似于说我现在对所有的女生说,给你的男朋友或者老公挑出他的20大问题,那很容易,因为你跟她日夜相处,如果我跟你说,让你给一个不认识的人挑出他的20个问题,那怎么办?首先你要先了解他,所以我们在学习软件测试的内容之前,先要了解一下软件到底是什么。

1.软件是什么?

  其实在很多初学者的脑海中有一个这样的错误观点,软件就是一个程序,软件开发就是编程。其实不然,真正的软件是与计算机系统与硬件相互依存的另一部分,所谓的硬件可能是我们的一台电脑,一台服务器,一个鼠标,一个路由器,软件则是搭建在硬件设备之上。它会包含程序、数据、以及相关的文档。所以软件放大了看,电脑或者手机的操作系统也是一个软件,我们的淘宝一个网站也是一个软件,我们的一个手机app更是一个软件。但是它不仅仅是一个软件,同时它相关的数据库,它相关的文档,也是这个软件体的一部分。所以这样我们对软件有了一个清醒的认识。

  • 程序:
      什么是程序呢?程序就是我们刚刚说的编码。他是按照我们事先设计好的功能和性能要求,执行的一些指令序列,或者叫代码结构,代码模式。

  • 数据:
      数据则是指我们的数据库信息,数据库的数据结构,数据库的表结构,最终落实到我们存储在表里的一些数据信息。

  • 文档:
      以后会详细介绍软件开发过程中包含的一些文档,其实在我们测试来说,文档也是我们测试的一部分,即是我们需要测试的内容,也是我们测试依据的内容。

  • 总结:
      软件的他不是程序,程序只是软件中的一部分,软件包括程序、数据、文档。软件要依存于硬件和系统。

二、软件到底有什么样的特性?

  • 第一、形态特性

  软件它是一个无形的,看不到的一个逻辑实体。你在度量一个常规的产品,包括度量一个人的时候,人的形态特性会包含身高、体重、长相等,对于物体的形态特性会包含几何尺寸、物理性质、化学成分等。但是对于我们的软件,这些度量模式是完全没有意义的,所以软件它是一个不可见,但又是复杂的。

  • 第二、智能特性

  软件它是一个带有包含着我们人类精华的,包含我们的脑力劳动的,这样一个智力产品。它本身实际上也体现了我们人类在编程过程中使用的一些智慧,同时也体现了我们对于知识,对于开发经验的储备,他会帮助我们去解决一些比较复杂的问题,比如说开发的是一个计算器,在很早的时候没有计算器的时候,大家的计算可能需要用小学学过的术式的方法去计算,但是有了这样的软件之后,我们解决了这个问题,这是软件的一个智能特性。

  • 第三、开发特性

  尽管已经有了一些工具(也是软件)来辅助软件开发工作,如Eclipce、IDEA,但是它起到的仅仅是辅助作用,它并不能完全地实现自动化。比如说给你一个需求,工具能自动给我编出一些代码,这样是很难很难实现。软件开发中仍然包含了相当份量的个体劳动,使得这一大规模知识型工作,充满了个人行为和个人因素。目前虽然这种全面自动化的方式是很难实现,但是在行业中也在逐步逐步的像这种大数据,像这种机器学习方式发展。我们不排除在未来的几年内会有一些智能化的发展。

  • 第四、质量特性

  产生软件测试这个行业最初的思维就是它的质量特性。因为代码是由不同的人,不同的因素,不同的情绪状态下编写出来的。所以这种由于人的状态的不同,和个人能力上的不同,造成所有的软件都是有缺陷的。所以软件的质量特性决定了我们软件测试的存在。

  • 第五、生产特性

  软件的生产特性跟硬件生产不一样,比如说我生产一台电脑,我生产一个手机,你要设计出第一个这个东西很难,但是你未来去复制它,其实跟你设计第一套整体的制造体系是完全一致。硬件是这个样子,但是软件是完全不一样,软件我们一旦把这个程序设计开发出来之后,比如说我现在开发是一个订餐平台,我现在要对接到一个商户上,我最初要做出很多很多的设计,很多很多的需求。但是软件开发出来之后,完成了对接的第一个商户之后,我下一步再对接第二个商户的时候,对应用的扩展和复制是十分简单。所以说这是软件和硬件不同的一点。同时由于上面这种特性存在,所以我们软件在第一次开发过程中是显得尤为重要。

  • 第六、管理特性

  软件整个体系的管理是非常重要的,相比于一些传统的行业也更加独特,他会有很多很多独特的角色,比如说在软件体系内会有一些架构师,软件行业架构是非常重要,它是具有高度的思维能力的一群人,所以管理方面软件和硬件的不同也在于此。

  • 第七、环境特性

  开发一个硬件,比如刚才说的手机也好,电脑也好,鼠标也好,这些都可以算作是一个硬件,他是完全独立于我们的整个生存空间而存在的,但是软件不一样,软件的开发也好,运行也好,都是离不开计算机系统环境的,所以会有对计算机系统,对一些软件环境,会有不可摆脱的依赖性。比如开发java程序,就要有jdk的环境。除了对系统环境的依赖以外,还有一些对环境的兼容性问题。

  • 第八、维护特性

  软件开发完成之后和硬件一样,其实也需要维护,但是这种维护和传统产品的维护是不一样的。作为软件来说维护体现在升级、优化、功能更新等方面甚至可以全盘重构。比如线上产品出现一些bug需要修升级,再有就是现在要加一个新功能,再有是做一些性能方面的优化,一些显示上面的优化,这这些都是维护软件所具有的一些特色性的东西。

  • 第九、废弃特性

  硬件是会弄坏的,笔记本电脑也好,手机也好。软件和硬件不一样,软件是不可能被用坏的,所以软件本身是很难被废弃的。软件一直存在,只是软件可能有时候不符合我们的流行趋势了,或者使用者对于我的软件不满意而遭到嫌弃,遭到废弃。但是并不是说软件不能用,这是两个概念。

  • 第十、应用特性

  软件的应用其实是非常非常广泛的,大家现在能看到软件真的渗透到了我们生活的各个角落,可能你认为不是软件的地方它都可能是一个软件,如今它已渗入国民经济和国防的各个领域,现已成为信息产业、先进制造业和现代服务业的核心,占据了无可取代的地位。

你可能感兴趣的:(软件测试基础(二) 之 软件及其特性)