0530-3433334

网站建设 APP开发 小程序

知识

分享你我感悟

您当前位置>首页 >> 知识 >> 软件开发

软件测试前,先了解软件是什么

发表时间:2023-09-16 07:00:59

文章来源:炫佑科技

浏览次数:178

菏泽炫佑科技

软件测试前,先了解软件是什么

在了解软件测试之前,我们需要先了解什么是软件?

软件是安装在硬件上的一些应用程序。

例如:web系统(学校的教务管理系统、供应链系统【商品的供应、订单、厂家、仓储仓库……的一个综合系统,以网页的形式表现出来】、办公系统)、APP(微信//CSDN/小程序/公众号)

前面说过:软件的功能是由开发者来实现的。

功能实现之后,就该进行测试了。

测试功能是否满足用户的需求自动化软件开发,是否还存在一些bug。

这种对系统功能的测试称为软件测试。

软件测试到底是做什么的?

所谓软件测试,就是测试人员验证软件的功能是否满足用户的需求。

用户:指使用该软件的人。

但这个人不一定是用户,也可能是所有者。

更准确地说:用户是购买软件并拥有软件所有权的人。

而我们通常所说的用户,是指有权利使用该软件的人,【花钱购买的那种】

还有一些流量用户使用一些免费软件【微信/QQ】。

这三者之和就是真实用户。

这里大家可能不太明白什么是流量用户。

我们使用的一些免费软件实际上包含一些广告。

广告是广告商投资的,钱是给软件主的!

用户越多,流量就会越多,这些广告就会被更多的人看到。

你可以把这些免费软件平台和微信理解为一个广告平台。

微信从广告商那里赚到的钱来自双方(各种VIP服务)。

网络名人都知道同样的事情。

网红直播带货,你知道吗?

该属性与上面相同。

因为网红有很多粉丝,而粉丝就是流量。 粉丝越多,流量就会越大。

将会有很多广告商寻找他们来代言产品。

既然你只是要求别人做某事,你自然就得付出代价。

网红一开直播,肯定会有一些赞助商送礼物什么的。

换句话说:网红一方面从广告商那里拿钱,另一方面从粉丝那里拿礼物(钱)。

这不是:“真人版QQ”!

总之,天下没有免费的午餐! ! !

看似我们不是在花钱,实际上我们是在间接地为别人创造利益。

软件测试是验证软件产品功能是否满足用户需求。

早期,人们更多地将测试视为对软件产品的“检查”,检查软件的各个功能是否正常运行。

1983年,Bill将软件测试定义为:软件测试是旨在评估程序或软件系统的特征或能力并确定其是否达到预期结果的一系列活动。

从这句话中我们可以看出以下两点:

测试试图验证软件是否“有效”,即验证软件是否正确运行。

测试活动基于测试人员的“预期结果”,其中“预期结果”指的是需求定义。

让我们“练习”一下:找出下图中的bug

软件测试人员:他们不仅要查看软件是否满足用户需求。

并且需要找到不符合要求的方法。

这就是软件测试。

简单来说:软件根据用户的需求设计了很多功能。

我们软件测试人员需要验证软件功能的各个方面:

1.验证功能是否可以正常运行【但如果可以运行并不代表可以达到预期的效果】

2、验证功能是否满足用户需求【用户需求==预期效果】

实际练习

假设我们正在测试某个软件的登录功能,记下测试点

简单来说:需要测试哪些功能?

简而言之,让我们明确一件事:

面试官问:什么是测试开发?

标准答案:测试软件的功能是否满足用户的需求!

无论是甲方的赞助商爸爸,还是那些流量用户,都提出了要求。

我们都需要尽可能地感到满意,因为他们都在直接或间接地为我们创造利益。

软件测试和软件开发的区别

软件开发

软件开发需要集中的技能和较高的专业性(需要学习到一定的深度)

关于软件开发职位,我们看到*多的是:各种语言的工程师。

以Java为例:作为一名Java工程师,我们需要清楚地了解底层的实现和原理,才能写出高质量的代码。

例如数据结构:哈希表、链表、顺序表等。 。

学习这些是为了在某些场景下引入合适的数据结构来提高运行效率。

在面试中,仅仅知道如何使用它是不够的。 我们还需要了解这些数据结构底层实现的逻辑,因为这些都是面试时会问到的问题。

而只有了解了底层逻辑实现,我们才能知道在什么场景下使用哪种数据结构。

就像我们复习题的时候,时间和空间复杂度的要求是有限的! !

如果使用方式错误,代码将无法通过!

软件测试:

软件测试:需要广泛的技能,专业性较低。

技能的广度主要体现在你要学会操作各种测试工具。

例如:

界面: ,,

自动化测试:java、、、、(RF框架)、工具

性能测试工具:,

抓包:(也可以模拟弱网)

APP测试:,

东西太多也没关系,只要能用来辅助你的工作就可以了。

无需太深入了解底层是如何实现和执行的。

这么说吧:工具只是软件测试人员的一种手段。

薪资、工作环境、工作压力

薪水:

在大工厂里,同一个员工无论是前端、后端、还是测试,薪资相差并不大。 至于工作环境,中大工厂的环境非常好。

对我来说:我更喜欢后端,但是Java的竞争压力还是很大。

所以,我至少给自己留了一条退路。

测试是一个不错的选择,而且还涉及到一些编程,这样我们的后端开发基础才不会丢失。

而且,我考试前期学的东西也是Java。

所以两者之间不存在冲突!

此外,测试开发比软件开发压力更小。

作为软件开发程序员,我们需要时刻学习,挖掘更深层次的知识。

前景

我可以告诉你:测试开发人员的薪资与其他技术岗位相差不大,而且发展前景也非常好!

一个经典的面试问题:软件开发中的软件测试和调试有什么区别?

有些面试官可能会问更深入的问题,问你:软件开发中的软件测试和调试有什么区别?

1、目的不同

当大家都在敲代码的时候,代码出现了问题,我们就需要去调试,对吗? ,

我们把这种调试称为软件调试。

在软件调试中,程序员验证软件是否实现了他希望软件实现的功能。

软件测试:测试人员验证软件是否满足用户的需求

这么说吧:开发软件的程序员只关心上级要求自己实现的功能能否正常执行。

测试开发人员更关心这个软件是否满足用户的需求。 即用户常用的功能是否没有问题。

可能有人会有疑问:我感觉软件测试和软件调试没有什么区别。

虽然我能听懂你说的话。 但遗憾的是! 两者之间必然存在差异。

1、站立角度不同

就像我上面说的,一是从我自己的角度来看,我只要完成我的任务即可; 另一种是从用户的角度出发,看看哪些功能没有满足用户的需求。

2、角色不同

软件调试:由纯开发人员完成

软件测试:开发人员+测试人员,一起做!

在软件测试中,开发人员主要做白盒测试(代码相关)

3. 不同阶段

软件调试:开发阶段

软件测试:各阶段【从产品生产到发布】:贯穿整个软件开发过程。 在开发过程中,到处都有软件测试。

这么说吧:代码可以运行,功能也确实实现了,但是不满足用户的需求吗? 不确定! ! !

软件测试的发展

您在这里所需要知道的只是一个简单的了解。

1、主要是软件调试,发生在20世纪50年代。

2. 1957年,贝克区分了调试和测试。

这是软件测试史上的一个重要里程碑,标志着独立软件测试的出现。

3、1979年《软件测试的艺术》给出了软件测试的定义:测试是执行程序发现错误的过程。 这意味着软件测试不仅要证明软件做了它应该做的事情,而且要确保它没有做它不应该做的事情。

4. 1983年,美国国家标准局发布了VV&T。 VV&T提出了测试行业中两个著名的术语:(验证)和(验证)。 这意味着软件测试正在发展成为一门独立的、专业的、有影响力的工程学科。

5、预防为主是当前软件测试的主流思想之一。

软件测试已经渗透到整个软件开发生命周期

软件测试岗位

软件测试工程师:工程师的主要工作一般包括需求分析、编写测试计划和测试方案、设计测试用例、执行测试用例、跟踪BUG、撰写测试报告等;

测试开发工程师:根据项目的特点,开发一些自动化测试脚本,或者自动化测试工具,或者软件测试中使用的小工具,以提高工作效率,从而更有效地测试,改进软件。 产品质量。

测试开发工程师的工作目的是让测试工程师更高效、更快速地进行测试工作; 测试开发岗位一般都需要一定的开发能力,其中解决问题的能力尤为重要。

性能测试工程师:对系统进行性能测试,包括使用工具和编写性能自动化测试脚本。

安全测试工程师:主要分析产品可能出现的安全问题,进行各方面的渗透测试,提高产品的安全性。

其他:系统测试工程师、嵌入式测试工程师、硬件测试工程师。

软件测试在不同类型公司的定位

杂乱无章的

全日制VS兼职

项目与功能

综合的

1. 组织混乱

软件测试组织*简单的形式是没有任何组织的测试。 几个人完成了所有的软件测试工作。 没有分工或任何等级结构。

单纯的软件测试组织带来的问题是,软件测试依附于软件开发组织,无法真正发挥软件测试的威力。

一两个人的软件测试缺乏沟通和思想碰撞,导致测试人员之间的进步非常有限。 缺乏测试组织导致测试无计划,测试人员疲于应对各种突发测试任务,测试经验无法很好总结。

2. 全职与兼职

根据测试人员职责的明确程度,可以分为兼职测试和全职测试两类。

目前,很多软件公司,尤其是小型软件公司,往往没有专职测试人员。 在做好测试工作的同时,还必须兼顾软件开发、配置管理、技术文档编写、用户教育、系统部署实施等。

即使是一些规模比较大、有专门质量部门的软件公司,也会有兼职的情况。 *常见的兼职是测试+配置管理,或者测试+QA。 这种方式的优点是节省成本,充分利用资源。 但测试人员缺乏专门的独立发展空间,不利于测试的深入发展,难以让测试更加精准,也不利于测试经验的积累和测试知识的传播。

当然,由于目前软件企业的现状,很多企业仍然采用这种方式。 对于新测试人员来说,可以认为这是一个很好的自我培训机会。

测试本身的要求就是要有广泛的知识面,而这些任务有助于从不同层次、不同角度、不同角色来考虑软件相关的问题。

3. 项目与功能

根据测试人员参与项目的形式,可以分为项目型和功能型。

项目型测试组织是指测试人员作为项目组的一员紧密融入到项目中,与项目组的其他成员密切协作,总体上从始至终地跟踪项目。 当然,也有一些项目在项目中后期才考虑添加测试人员。

此类测试机构一般没有测试组长,测试的管理由项目主管或项目经理负责。 当然软件测试前,先了解软件是什么,在一些大型项目中,会划分开发组组长和测试组组长,但*终汇报对象都是项目经理。 因此,项目经理是测试资源分配和测试计划的主要负责人。

功能测试组织是指测试人员通过独立测试部门的委托参与项目。

在这种结构中,一名测试人员不仅可以测试一个项目的产品,还可以同时测试多个项目的产品。 从长远来看,测试人员也可能不会从头到尾始终参与项目。

测试人员不向项目总监或项目经理汇报,而是向其部门经理汇报。 并且这种结构的项目经理也可能是虚拟的,或者由多个部门经理共享。

两种方法各有利弊。

项目式的优点是测试人员参与性强,能够深入了解项目的各个方面,有利于稳定、持续、有效地测试更细节的问题; 但它也有缺点,即测试人员由项目负责人管理。 关于如何处理错误的意见常常受到限制。 同时,由于过于接近,很可能出现“一侧开放”、要求不严格的情况。 并且由于缺乏独立的组织,测试人员的知识可能仅限于项目组内部的传播,这不利于测试经验在不同项目组之间的传播。 有些测试人员在这样的组织中可能会感到孤独无助。

功能型的优点是可以避免项目型的一些问题,节省一些测试资源,充分利用各个项目阶段的时间差来合理利用测试资源; 但也不可避免地存在一些问题。 比如深度不够​​,尤其是对项目涉及的领域知识和业务知识的理解可能不够深入,导致试题比较肤浅。

项目性质

在此图中,项目是一个系统。

另外,实施人员(运维、网管等也包含在其他人员中)

项目团队由测试人员(大约十人)组成。

1. 手动测试仪

2.自动化测试用例开发人员(自动化:我们说一点一点的操作,用脚本实现)

3.自动化工具开发人员(提高测试效率)

其中2和3统称为测试开发人员

功能性

4、综合性

虽然独立的测试部门不可避免地存在一些问题,比如参与项目的深度,但很容易导致“翻墙”测试。

然而,许多软件公司仍然倾向于建立相对独立的软件测试机构。 一个理想的软件测试组织可以是一个综合性的、兼容多种结构方法的组织。

例如,可以组合和调整基于项目的结构和功能结构。 测试部门是一个独立的部门。 测试部门经理根据各项目组项目经理的要求以及公司对项目的投入和重点,决定分配哪些测试人员到项目组。

并长期稳定、持续地跟进项目,参与并做好项目各个阶段的测试相关工作。 测试人员作为项目组调用的服务资源,测试结果和报告作为评估软件产品质量的必要参考信息,为项目经理做出产品发布决策提供参考价值。

优秀软件测试员应具备的素质

正如之前提到的:面试中*喜欢问的问题是:你为什么选择软件测试?

其实它从侧面告诉我们你有什么突出的优势,以便我们选择你。

**个肯定是能力。

1. 沟通技巧

2、学习能力

3、开发能力

4.言语瞬间造成伤害的能力。

统称为综合能力。

那么我们为什么需要这些能力呢?

看看下面

综合能力

沟通技巧

测试工程师的沟通能力将直接影响交易开发的效率。 良好、清晰的沟通能力是一个技术优秀的测试工程师获得更好发展的“敲门砖”。

快速学习能力

能够快速学习和理解不同的业务需求和功能。 具有学习和测试新技术、新方法的能力。

开发能力(优势)

这为您学习数据结构基础知识奠定了坚实的基础! 多问问题!

你不是已经具备开发能力了吗? 【n不是nb你就知道了。 】

写作能力

您发现的错误需要通过文档对该错误进行详细描述。

简单来说:你测试完之后,需要返回一张测试单,里面详细记录了有什么bug、在哪里、造成什么影响等等……

掌握自动化测试技术

掌握自动化测试技术可以让你从大量重复性的体力劳动中解放出来,这样你就可以把更多的精力花在更多类型的测试上。

优秀的测试用例设计能力

测试用例设计能力意味着无论什么类型的测试,都可以设计出优秀的测试用例,能够高效发现缺陷,保证产品质量。

如何提高测试用例设计能力?

1.掌握设计测试用例的方法

2、积累和总结

3.阅读好的测试用例设计案例

探索性思维

探索性思维是指测试工程师在测试过程中不断学习被测系统,结合自己的经验、知识和直觉进行系统性的错误猜测和逻辑推理,整理和分析更有针对性的测试关注点。 观点。

简单来说:思维不受条条框框的束缚,思维具有发散性,能够立足实际思考问题。

实际练习

假设我们现在要测试自动售票机的功能

兴趣&&责任感和一定的压力

任何工作都需要责任感。 对于测试人员:

测试往往是产品质量的*后把关人; 由于测试工作的有效性难以衡量,测试用例的执行情况和Bug数量并不能表明产品质量是否合格; 因此,责任感是测试所必需的*重要的品质之一。

压力,测试工作者,尤其是互联网行业的测试工作者,需要能够承受各种压力。

这个时候兴趣就显得尤为重要。 兴趣可以支撑我们的工作热情,让我们在这条路上走得更远。

结论

以后的学习会培养大家以下的核心竞争力

本文重点讨论三个问题: 1、什么是软件测试?

为了验证软件的功能是否满足用户的需求。

因为无论他们是什么样的用户,他们都在直接/间接地为我们创造利益。

2.软件测试和开发测试的区别。

1、目的不同

在软件调试中,程序员验证软件是否实现了他希望软件实现的功能。

软件测试:测试人员验证软件是否满足用户的需求

2、角色不同

软件调试:由纯开发人员完成

软件测试:开发人员+测试人员,一起做!

在软件测试中,开发人员主要做白盒测试(代码相关)

3. 不同阶段

软件调试:开发阶段

软件测试:各阶段【从产品生产到发布】:贯穿整个软件开发过程。 在开发过程中,到处都有软件测试。

这么说吧:代码可以运行,功能也确实实现了,但是不满足用户的需求吗? 不确定! ! !

为什么选择软件测试这个职位?

从自己的能力出发,分析自己的能力和优势。

1.综合能力:文字描述、展开、沟通

2. 自动化测试技术的掌握

3、优秀的测试用例设计能力【即分析问题的能力】

4.探索性思维【帮助你提高测试用例设计能力】

炫佑科技专注互联网开发小程序开发-app开发-软件开发-网站制作等

相关案例查看更多