zl程序教程

您现在的位置是:首页 >  其他

当前栏目

软件测试基础(一)——对软件测试了解发展规划和什么是软件和软件的特性

规划软件基础 什么 了解 发展 特性 软件测试
2023-09-14 09:11:06 时间

什么是软件测试?

最早期的一种软件测试定义,软件测试就是评价一个程序或者系统它的特性、能力,并且确定它是不是能够到达预期的结果。软件测试就是以这个目的来发生的一些行为。

到后来又有另一种定义软件测试的定义,测试不应该着眼于验证软件是工作的,相反我们应该首先认定软件就是有错误的,用逆向思维去尽可能的发现多的错误,并且从人的心理角度,如果认为软件测试的目的就是验证软件是工作的,那么特别不利于软件测试人员来发现软件错误,提出了新的软件测试的定义叫做测试是为了发现错误而执行的一个程序或者是系统测试的一个过程。

就当前的软件测试,其实两种思想都应兼而有之,需要以更全面,更完整,更周全的方式对软件进行系统的测试。虽然现在软件测试已经发展的很好了,但仍然有一些缺陷,或者叫做目前当下面临的一些挑战,其中第一点就是我们软件的规模是越来越大,复杂度也越来越高,不像原来一样是一个很简单的功能,有一些功能都是非常非常大而复杂的。我们怎么样去进行充分并且有效的测试,成为了我们的软件测试过程中的一个难题。

由于技术发展要求我们的测试能力会越来越高,所以首先要求软件测试的人员能够具备基础的功能测试的能力,这个根基要打得很稳。软件测试现在面临着这样那样的挑战,决定了要更加合理,更加理智地去分析学习软件测试的流程,从而让自己的能力不仅仅局限在点点点,而是有一个更高的追求,才能够符合满足现在软件技术的迅猛发展。

该如何系统地学习才能够成为一名合格的软件测试工程师呢?

在测试行业里要想成为一名合格的软件测试工程师,首先需要熟练掌握软件测试的基础知识,包括软件测试的基础,软件测试的模型,测试的组织架构,以及软件的开发模型等。

其次我们还要熟练掌握软件测试相关的知识以及技术工具,比如测试流程,测试的策划,测试的计划,测试的设计以及用例的设计。测试如何执行,执行的过程中发现的缺陷,缺陷的管理以及实时追踪,包括他们应该使用什么样的工具辅助缺陷的管理等等。

除此之外还需要掌握一些软件测试的高级技术,比如说白盒测试的方法,自动化测试以及自动化测试工具的使用。安全测试的了解,性能测试以及性能测试工具的操作。

软件测试未来的职业生涯规划应该是什么样子?

第一个方向是技术方向,

第二个方向是管理方向,

第三个方向是业务方向。

技术方向简单聊

简单说一下技术方向,包括黑盒测试、白盒测试、自动化测试、性能测试、安全测试、测试架构等。

黑盒测试做到一个什么样的程度才算你做到精通、专家级别?到达这个程度有一种说法叫做教开发人员写代码,曾经有这样一个前辈做出的一些黑盒测试提出的一些缺陷,它不仅仅是告知开发有这样一个缺陷,而且会告诉开发你应该从什么方向上入手去查问题,从什么方向上入手去改问题,这是我们黑盒测试做到极致的一个方向。

白盒测试其实是偏向带有编程方向的测试,当然这里面可能还有中间状态叫做灰盒,都是需要测试人员具有一定代码的review的能力。实际来说我们目前的行业内对于白盒测试的需求是比较低的,很多白盒测试的工作是由我们的研发、架构或者研发工程师等人来代替。

所以自动化测试、性能测试、安全测试、测试架构这四个方向才是真正的从技术领域做到高级的一个方向。

管理方向简单聊

可能很多人更关心的就是管理方向,你会觉得我可能不那么适合做技术,那可以考虑我们换一个方向发展,这个方向就是管理方向。管理方向也有几个发展方向,如测试经理、项目经理、SCRUM MASTER。

测试经理就是主抓测试人员的管理与分配。项目经理顾名思义就是管项目中的人,你要拥有的一些协调能力,安排能力,人际沟通能力,人员安排能力,还有流程梳理能力。

另外一个最近非常流行的方向,我们经常说教敏捷,我们做项目要敏捷,我们做测试要敏捷。敏捷里面有一个新鲜的岗位SCRUM MASTER,其实工作的范畴跟我们的项目经理产品经理是有一定类似的,它是决定了我们每一次小范围迭代的工作方向是什么样子,来指引大方向这样的一个管理。

业务方向简单聊

接下来再说业务方向。这里面有几个方向,一个方向是测试专家,当你在你的业务领域达到非常非常出色的状态的时候,你就是这个领域的业务专家。当你测试做到了极限,甚至你可以去向需求产品方向去发展,去帮助人家做一些需求上面的整理,本来这也是我们测试更关注的一些用户体验的问题,直接化身为产品经理,去跟客户沟通,这也是一个方向。

什么是软件和软件的特性

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

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

1.软件是什么?

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

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

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

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

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

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

    • 第一、形态特性

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

    • 第二、智能特性

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

    • 第三、开发特性

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

    • 第四、质量特性

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

    • 第五、生产特性

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

    • 第六、管理特性

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

    • 第七、环境特性

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

    • 第八、维护特性

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

    • 第九、废弃特性

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

    • 第十、应用特性

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