软件测试测试开发技能

news2024/11/22 13:23:36

 从事软件测试许多年,想必很多人都有感到迷茫不知所措的时候,人生的十字路口有很多,该如何抉择呢?有人成功转型,QA、项目管理、配置管理。当然还有技术型,性能测试、自动化测试、测试开发,而想要延续走技术型路线,不可避免的就是钻研开发技术,说的通俗些就是coding的能力。软件测试所涉及的知识面很广,所以有些开发不要一味的黑测试诋毁测试的能力,当然不否认,现在大部分黑盒测试仍然局限在点点点,但技术需要提升,想要晋升为高级测试或者测试开发,所需要的能力变慢慢有所体现出来,测试所带来的价值也应声而来。

  言归正传,高级测试/测试开发技能很广泛,所涉及的知识众多,从业务知识、网络配置、系统架构、开发语言、测试技术等等。有些技术需要在实际项目中积累,有些技术需要自己去钻研。

对软件测试的认识:

    软件测试要求开发人员避免测试自己开发的程序。从心理学角度讲,这是很有道理的。特别是一个相对复杂的系统,开发人员在刚刚开发完成的时候,尚沉浸于对自己设计的回味之中。此时去测试的话往往会侧重于程序本身的功能通过性测试。很难发现错误。
    测试是为发现错误而执行程序的错误。一个人发现别人身上的不足很容易,但发现自己身上的错误便不那么容易了。所谓“吾能指人之失而不能见己之失,吾能指人之小失而不能见己之大失”者是也。一个软件开发人员需要养成一种习惯,正视自己开发的软件,特别是刚刚完成的软件。要看到它的不足,知道他能做什么,不能做什么。在不能做的时候是如何处理的。对边界条件是否做了严格的判断及约束。其实大道相通,有没有这样的意识往往跟一个人为人处世的心态,对自己的认知有密切的联系。一个追求完美,经常反思自己的人往往有一种虚怀若谷的情怀,“战战兢兢、如履薄冰、如临深渊”者是也。所谓的方法、套路仅仅是方便于那些不怎么思考,只会人云亦云、亦步亦趋的人设计的。
    说了一些心态方面的,再来从方法学上说一下软件测试的要点,对开发人员来说,白盒测试要比黑盒测试更重要,这决定着你的系统上线后你能不能安心的睡觉; 测试的阶段主要在单元测试与集成测试方面。

 

软件测试的分类:

    分类如下图所示(该图为大学 软件测试课程上面的图片)

   

开发人员测试要点:

    对于开发人员来说,我只强调单元测试、集成测试两点。
    单元测试主要 测试编写的类、类中的函数等。这是测试的最小单元。常用的测试工具有java的JUnit、BoostTest等。
    集成测试侧重于 系统的整体功能性测试,这需要模拟各种可能的请求情况,特别是边界条件。在多系统中,单个系统的测试完了后还需要各个系统之间的联调。  

    测试目标方面,除了一般的功能测试之外还需要稳定性测试、性能测试、可靠性测试、适用性测试、易用性测试、安全性测试。

    下面详细介绍一下各个测试要点的测试内容。


    1.   功能性测试要点

     在软件测试领域的通用理解是:“功能测试是基于产品功能说明书,是在已知产品所应具有的功能,从用户角度来进行功能验证,以确认每个功能是否都能正常使用、是否实现了产品规格说明书的要求、是否能适当地接收输入数锯而产生正确的输出结果等。功能测试,包括用户界面测试、各种操作的测试、不同的数据输入、逻辑思路、数据输出和存储等的测试。”    对于开发人员来说,功能性测试主要是对系统所支持的功能点的测试,对数据的测试,包括数据边界的测试、数据包长度限制的测试、各个功能模块数据的正确性测试以及容错处理。该项测试要先把系统的功能点全部列出来,对异常数据的处理也算在内。


     2. 稳定性测试要点

    测试在压力情况下内存使用情况,cpu使用情况,是否有内存泄露,各个模块功能是否正常,能否正常提供服务,是否会在高压情况下卡死等。这也需要用各种可能数据进行压力测试,要测试边界条件下,收到攻击时还能否正常工作,系统有没有自清理功能等。个人的理解,该项测试类似于可靠性测试,要点在于测试系统在极端情况下是否正常。比如一个房子在高强度地震下的抗震能力。


     3.  性能测试要点

    测试程序(一般是服务器),每秒能正常处理的请求数。这项测试一般是寻找系统的性能瓶颈,看看能否满足实际的需求。当下,一个服务器每天处理5000万的请求便可以了。当然,通过优化对性能的追求是没有止境的。


     4.  安全性测试要点

    安全性测试的主要目的是 确保软件不会去完成没有预先设计的功能。这一点很重要,需要开发人员在开发时对可能出现的情况作细致的判断。常见的安全性测试内容有:畸形的文件结构、畸形的数据包、用户输入的验证、验证资源之间的依赖关系、配置文件等的格式等。因为开发人员常常假定他所获取的资源内容是符合一定标准或规则的。附录十常见的web安全性测试的内容。


     5. 适用性测试要点

     在软件测试领域的通用理解是“适用性主要是用户体验的评估活动”。个人理解,对于开发人员,这方面主要跟易用性测试联系起来,开发软件产品是为了更方便的为人服务,一个系统要尽可能的简单,尽可能减少人工的操作。比如,在配置文件方面,有配置是为了减少代码的改动性,但是配置要尽可能的简单,可以由一个配置项解决的问题不要再添加另外一项配置。
    


附: WEB安全性测试
       一个完整的WEB安全性测试可以从部署与基础结构、输入验证、身份验证、授权、配置管理、敏感数据、会话管理、加密。参数操作、异常管理、审核和日志记录等几个方面入手。
1.        安全体系测试

  1.1)  部署与基础结构
          网络是否提供了安全的通信
          部署拓扑结构是否包括内部的防火墙
          部署拓扑结构中是否包括远程应用程序服务器
          基础结构安全性需求的限制是什么
          目标环境支持怎样的信任级别

  1.2)  输入验证

    A.  是否清楚入口点

    B.  是否清楚信任边界
    C.  是否验证Web页输入
    D.  是否对传递到组件或Web服务的参数进行验证
    E.  是否验证从数据库中检索的数据
    F.  是否将方法集中起来
    G.  是否依赖客户端的验证
    H.  应用程序是否易受SQL注入攻击
    I.   应用程序是否易受XSS攻击


  1.3)  身份验证
    是否区分公共访问和受限访问
    是否明确服务帐户要求
    如何验证调用者身份
    如何验证数据库的身份
    是否强制试用帐户管理措施

  1.4)  授权
    如何向最终用户授权
    如何在数据库中授权应用程序
    如何将访问限定于系统级资源

  1.5)  配置管理
    是否支持远程管理
    是否保证配置存储的安全
    是否隔离管理员特权

  1.6)   敏感数据
    是否存储机密信息
    如何存储敏感数据
    是否在网络中传递敏感数据
    是否记录敏感数据

  1.7)  会话管理
    如何交换会话标识符
    是否限制会话生存期
    如何确保会话存储状态的安全

  1.8)  加密
    为何使用特定的算法
    如何确保加密密钥的安全性

  1.9)  参数操作
    是否验证所有的输入参数
    是否在参数过程中传递敏感数据
    是否为了安全问题而使用HTTP头数据

  1.10)  异常管理
    是否使用结构化的异常处理
    是否向客户端公开了太多的信息

  1.11)  审核和日志记录
    是否明确了要审核的活动
    是否考虑如何流动原始调用这身份

2.        应用及传输安全
  WEB应用系统的安全性从使用角度可以分为应用级的安全与传输级的安全,安全性测试也可以从这两方面入手。
  2.1)应用级的安全测试

  主要目的是查找Web系统自身程序设计中存在的安全隐患,主要测试区域如下:

  2.1.1)注册与登陆:现在的Web应用系统基本采用先注册,后登录的方式。

      A. 必须测试有效和无效的用户名和密码
      B. 要注意是否存在大小写敏感,
      C. 可以尝试多少次的限制
      D. 是否可以不登录而直接浏览某个页面等。

  2.1.2)在线超时:Web应用系统是否有超时的限制,即,用户登陆一定时间内(例如15分钟)没有点击任何页面,是否需要重新登陆才能正常使用。

  2.1.3)操作留痕:为了保证Web应用系统的安全性,日志文件是至关重要的。需要测试相关信息是否写进入了日志文件,是否可追踪。

  2.1.4)备份与恢复:为了防范系统的意外崩溃造成的数据丢失,备份与恢复手段是一个Web系统的必备功能。备份与恢复根据Web系统对安全性的要求可以采用多种手段如数据库增量备份、数据库完全备份、系统完全备份等。出于更高的安全性要求,某些实时系统经常会采用双机热备或多级热备。除了对于这些备份与恢复方式进行验证测试以外,还要评估这种备份与恢复方式是否满足Web系统的安全性需求。

  2.1.5)传输级的安全测试是考虑到Web系统的传输的特殊性,重点测试数据经客户端传送到服务器端可能存在的安全漏洞,以及服务器防范非法访问的能力。一般测试项目包括以下几个方面。
    

  2.2)HTTPS和SSL测试

  默认的情况下,安全HTTP(Soure HTTP)通过安全套接字SSL(Source Socket Layer)协议在端口443上使用普通的HTTP。HTTPS使用的公共密钥的加密长度决定的HTTPS的安全级别,但从某种意义上来说,安全性的保证是以损失性能为代价的。除了还要测试加密是否正确,检查信息的完整性和确认HTTPS的安全级别外,还要注意在此安全级别下,其性能是否达到要求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/439568.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

爬虫JS逆向思路-hook钩子

网络上几千块都学不到的JS逆向思路这里全都有👏🏻👏🏻👏🏻 本系列持续更新中,三连关注不迷路👌🏻 干货满满不看后悔👍👍👍 &…

连续3天3场分享,KubeVela@KubeCon EU 2023 抢鲜看!

自从 2019 年 Open Application Model 诞生以来,KubeVela 已经经历了几十个版本的变化,并向现代应用程序交付先进功能的方向不断发展。最近,KubeVela 完成了向 CNCF 孵化项目的晋升,标志着社区的发展来到一个新的里程碑。今天&…

有了MySQL,为什么还要有NoSQL

🏆今日学习目标: 🍀MySQL和NoSQL的区别 ✅创作者:林在闪闪发光 ⏰预计时间:30分钟 🎉个人主页:林在闪闪发光的个人主页 🍁林在闪闪发光的个人社区,欢迎你的加入: 林在闪闪…

PYQT5学习笔记02——程序基本结构之面向对象版本

我们之前写的代码耦合性比较高,复用性不高,这是面向过程编程的缺点。我们可以把程序基本结构设计成面向对象的版本,把 设置控件这部分内容封装到一个类中。 比如这个是我们的窗口,红色的矩形是相同的菜单控件,既然是一…

研报精选230420

目录 【行业230420浙商证券】卫浴行业深度报告:智能卫浴新变局,国货崛起正当时 【行业230420平安证券】氢能全景图(上)制氢篇:商业模式起步,绿氢初试锋芒 【行业230420天风证券】建筑装饰行业深度研究&…

InstructGPT:Training language models to follow instrcutions with human feedback

InstructGPT:Training language models to follow instrcutions with human feedback 介绍模型数据集TaskHuman data collectionmodel 实验结果参考 介绍 现在LLM可以被prompt来完成一系列的下游任务,然而这些模型也总会产生一些用户不想要的结果&#…

ESP32 WiFi扫描、WiFi通道查询

ESP32WiFi扫描程序 代码解决什么问题? 扫描周围WiFi并识别指定WiFi名称的WiFi通道(为了ESP32的esp-now协议正常通信)。 这跟ESP32 now有什么关系? ESP32使用NOW协议进行通信时,要求参与通信的设备必须处于同一物理…

ASEMI代理ADI亚德诺AD8603AUJZ-REEL7车规级芯片

编辑-Z AD8603AUJZ-REEL7芯片参数: 型号:AD8603AUJZ-REEL7 偏移电压:12μV 偏移电压漂移:1μV/C 输入偏置电流:0.2 pA 输入失调电流:0.1 pA 输入电压范围:–0.3 to 5.2V 输入电容&#…

Win10+VS2019安装vcpkg

vcpkg是一个C的包管理器。类似Python中的pip。安装后可以直接通过命令下载一些C的包,省的自己编译配路径。安装后的包都被vcpkg统一保存,统一配置路径。VS中哪个项目需要,就将其配置到某个项目中,当然也可以全局配置。 1、下载vc…

Node 04-http模块

HTTP 协议 概念 HTTP(hypertext transport protocol)协议;中文叫 超文本传输协议 是一种基于TCP/IP的应用层通信协议 这个协议详细规定了 浏览器 和 万维网 服务器 之间互相通信的规则 协议中主要规定了两个方面的内容: 客户端&#xff1…

Coovally再升级!基于CV大模型的智能标注解放你的双手

近日,随着SAM大模型的横空出世,“分割一切”成为可能,基于CV大模型的标注技术受到瞩目。 SAM分割示例 SAM大模型 Meta 在论文中发布了名为 Segment Anything Model (SAM)的新模型,“SAM 已经学会了关于物体的一般概念&#xff0c…

Hbase1.1:HBase官网、HBase定义、HBase结构、HBase依赖框架、HBase整合框架

这里写自定义目录标题 HBase官网HBase特点:大HBase定义HBase结构HBase依赖框架hadoop HBase整合框架PhoenixHive HBase官网 Hbase官网地址 HBase是Hadoop database,一个分布式、可扩展的大数据存储。 当您需要对大数据进行随机、实时读/写访问时&…

Activiti学习03

这里写目录标题 一、开发环境1.1 Java环境1.2 数据库1.3 开发工具 二、Activiti入门体验2.1 新建项目2.2 pom.xml文件2.3 activiti.cfg.xml文件2.4 添加日志配置文件 三、创建数据库3.1 创建数据库3.2 执行代码3.2.1 通过代码实现创建表格3.2.2 简化代码 四、绘制流程4.1 新建b…

香港金银业贸易场十大会员名单排行榜

在种类丰富全面的国际投资市场中,黄金拥有者良好的受众基础,黄金投资产品有着悠久的历史记录和蓬勃旺盛的生命力,数百年以来无数炒金者在黄金投资中实现了投资理财的梦想,但是在黄金投资的过程中,投资中需要面对无数考…

162.网络安全渗透测试—[Cobalt Strike系列]—[Veil免杀]

文章目录 1 Veil的使用2 生成有效载荷payload3 Veil免杀过程4 测试免杀 1 Veil的使用 (1)Veil主要用于生成:免杀payload (2)下载地址:https://github.com/Veil-Framework/Veil (3&#xff09…

Unity 工具控件 之 Text 文本字间距调整(老版本的Unity编写工具控件/新版本Unity使用TMP)

Unity 工具控件 之 Text 文本字间距调整(老版本的Unity编写工具控件/新版本Unity使用TMP) 目录 Unity 工具控件 之 Text 文本字间距调整(老版本的Unity编写工具控件/新版本Unity使用TMP) 一、简单介绍 二、老版本 Unity Text 使用工具控件调整行间距 三、新版本 Unity Text…

mysql性能调优开篇介绍、错误代码总结(处理方法)和参数文件详解(持续更新中ing)

前言 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系…

园区路线地图指引图怎么画?园区地图三维图怎么画?

目前在园区信息化应用形式中,广泛缺乏专业电子地图的使用,因此,使这种高效的信息化工具的应用受到了很大限制。有些仅以图片代替,但图片没有空间计算、检索、路径设计的能力,在地图应用形式中,使用价值很低…

一文!解决恒定磁场的基本方程(有介质)

目录 引言 磁化过程 磁偶极矩 磁化强度 方程的化简 磁场强度 磁化率 磁导率 相对磁导率 现实生活中的应用 引言 为什么介质在磁场中会被磁化呢? 首先因为电子绕着原子核转动,所以就可以形成一个环形电流,,环形电流就可以产生磁场。…

SAR型ADC结构原理

SAR型 ADC,即逐次渐进逼近型 ADC,采用的是多次比较的方式来获得最终的输出结果,具有简单易用,功耗低的特点。下图这个结构可以帮助我们容易地理解SAR型 ADC的工作过程: 如上图,假设输入信号的伪代码为 45&…