如何去开展软件测试工作
1. 软件测试
在一般的项目中,一开始均为手动测试,由于自动化测试前期投入较大,一般要软件项目达到一定的规模,更新频次和质量均有一定要求时才会上自动化测试或软件测试。
1.1. 项目中每个成员的测试职责
软件测试从来不是某一个职业,某一个环节,某一个人应该做的,应该是整个项目团队都要参与的,只是每个人承担的责任付出的时间精力的多少决定的。一个项目中的每个岗位,每个成员都应该有自己的需要测试的内容,重点和方向。
那么也就包括,项目经理、需求人员、设计人员、软件架构师、开发人员(分为各个层面和方向的开发人员)、数据人员、测试人员以及运维人员,在整个项目中每个岗位职责的不同,就要将其工作一定程度的体现在软件上,通过各个人员不同角度的测试实现对软件全方面,尽可能多的测试,不应该是寄希望于某一个人或某一个环节上
。因为如果寄希望于一个人则会导致:
- 整个项目的所有内容,测试环节的负责人均要知悉,这种可能只能是专业团队下的理想情况,但是随着软件开发模型的不同,这种理想情况的可能性是非常小的
- 软件因为一些主观、客观的因素总会发生修改,而这些修改在软件过程中很难详细的记录下来
- 整个软件项目的背景、技术瓶颈、设计或架构人员的设计习惯、实现方法等均有一定程度的差异,在项目的开发完成过程中发生了一定程度的化学反应。寄希望于一个人完全的了解是不太可能的
- 在前一条的基础上,则不可避免的导致测试覆盖面小,不完善,甚至理解错误,得出错误的结论。
- 如果要解决前一条,则避不可免的需要询问相关的人员,
则会产生不可见的隐形开销
。 - 工作量剧增,在规定的工作时间内
全面的``保质保量的
完成,在用人成本和人员素质上是不切实际的。
所以需要在项目中的每个岗位基于自己所处项目的职责,去关注每个角度所体现在软件上的模块和功能,需要根据岗位去决定测试覆盖的广度和深度。
序号 | 责任岗位 | 深度和广度 | 测试任务描述 |
---|---|---|---|
1 | 项目经理 | 注重广度可以适当忽略深度 | 确认软件的项目边界内容是否实现、基于项目经理的角度分析软件的弹性是否能够支撑后续各类变化,如:数据的变化(包括频次、数据格式等等)、业务的变化、与其他项目的关联方式 |
2 | 需求设计人员 | 注重广度,一定程度需要关注深度 | 确认软件的实现是否实现了需求设计、需要从整体的角度去关注业务在系统的体现是否是一个相较完整的闭环 |
3 | 软件架构师 | 关注广度也需要关注深度 | 1. 协助测试人员设计测试友好的测试框架 2. 从安全性、可用性和可伸缩性的方向制作测试用例 3. 确认每类数据流转在架构中是否存在问题,包括并发并行等情况、适当考虑软件运行效率 |
4 | 开发人员 | 关注深度也需要关注广度 | 1. 完成自我的功能后是否编写一定的测试代码进行了测试 2. 对自己实现的代码成果一方面需要完成设计的内容,另一方面要考虑和测试软件在实际运行中的可能,在不同的输入中,最终是否都能够得到正确的结果 3. 需要对功能完成所选择的实现方式对不同数据量数据内容进行考虑甚至是测试 4. 需要考虑和其他模块之间的关系,是否只是单纯的完成而没有交互 |
5 | 测试人员 | 关注广度 | 基于上述各类人员在项目中的完成和成果,制作不同的数据、不同的测试样例对软件进行系统化的整体测试 |
1.1.1 举例说明
- 开发人员需要使用不同数据进行测试?
数据是软件的生命,不同的数据由于算法的实现可能得出的结果可能不是完全正确的,如下案例:
- 地理信息中矢量图形的表达有点、多点、线、多线、面、多面。其在OGC标准WKT或GeoJson的表达上均有一定的表达,算法实现中(比如读取显示)是否兼顾了各类数据格式;面状数据存在天井图斑(内外环)的图斑,是否存在问题
- 在数据为王的软件中,比如采集软件、数据质检软件、数据库管理软件中需要对不同的数据依据数据特性进行测试(当然也要结合实际情况进行测试,比如软件面向的是全国则需要测试全国的情况,如果软件面对的这个地方没有则可以适当的测试延后甚至可以考虑不做测试),比如:
- 三调质检软件中存在一个规则,相邻图斑属性不相同(此用例结合下一个举例再次说明),软件算法是否考虑节点图斑、天井图斑等等数据的不同得到结果不一样。
- 全国不同的坡度数据采集方式不一样,有的是小图斑、有的是等级图斑(全区域只有10条)则会导致一个图斑的内存大小非常的大,是否会出现内存溢出的情况。
- 数据读取时不同的数据存放是否标准,如在房屋安全数据中,默认约定是数据全量提供,但是由于一些情况,可能只提供警告数据的,在算法实现中,是否能够兼容不同的数据体量得到一直的结果。
- 开发人员需要对不同体量的数据进行考虑甚至是测试?
- 结合相邻图斑属性不相同的案例,数据的节点个数大小不同,在算法中是否会出现内存放大的问题,相邻图斑的层数量多,算法实现方式结合时间复杂度和空间复杂度是否会出现时间长度内无法得到结果
- 数据入库的方式,是否存在数据条数较多时会出现效率慢的情况(会导致在项目在比较紧张的情况下应对效果较差)
- 开发人员和需求人员的系统化和结构化思维
软件要想一步就位是可遇不可求的理想状态,基本上是不可能的,总会有需求变更和产品迭代,每次变更都要考虑变更对整体的系统性的影响
1.2. 如何开始一个软件的测试
开始进行软件测试是一个重要的步骤,它有助于确保您的软件在交付给用户之前具备良好的质量和稳定性。以下是一些步骤,可以帮助您开始一个软件项目的测试过程:
-
理解项目需求:
- 首先,深入理解软件项目的需求,包括功能需求、性能需求、安全性需求等。这将有助于确定需要测试哪些方面。
-
制定测试计划:
- 制定详细的测试计划,包括测试范围、测试目标、测试策略、测试资源、时间表和风险评估。测试计划是测试活动的路线图,有助于确保测试进程有条不紊。
-
确定测试环境:
- 确定测试所需的硬件、软件和网络环境。测试环境应该与生产环境相似,以确保测试结果的准确性。
-
选择测试方法和技术:
- 根据项目需求和测试目标,选择适当的测试方法和技术。常见的测试方法包括功能测试、性能测试、安全测试等。
-
创建测试用例:
- 基于需求和设计文档,编写详细的测试用例,包括输入数据、预期结果和执行步骤。测试用例是用于执行测试的指南。
-
设置测试环境:
- 配置测试环境,包括安装和设置必要的测试工具和测试数据。确保测试环境准备就绪。
-
执行测试:
- 根据测试计划和测试用例,执行测试。记录测试结果、问题和缺陷,并跟踪测试进度。
-
自动化测试(如果适用):
- 对于重复性高的测试用例,考虑自动化测试。编写自动化测试脚本并集成到测试流程中,以提高效率。
-
问题管理:
- 使用问题跟踪工具(如JIRA、Bugzilla等)来记录和管理测试中发现的问题和缺陷。确保问题被及时修复和验证。
-
性能测试和安全测试(如果适用):
- 如果项目需要,执行性能测试和安全性测试,以确保软件在负载和安全方面表现良好。
-
测试报告:
- 生成详细的测试报告,包括测试结果、问题汇报、测试覆盖率等信息。测试报告应该清晰、易于理解,以便团队做出决策。
1.2.1. 测试用例
-
公用测试用例
-
软件性能测试用例
相关文章:

如何去开展软件测试工作
1. 软件测试 在一般的项目中,一开始均为手动测试,由于自动化测试前期投入较大,一般要软件项目达到一定的规模,更新频次和质量均有一定要求时才会上自动化测试或软件测试。 1.1. 项目中每个成员的测试职责 软件测试从来不是某一…...

详解如何在python中实现简单的app自动化框架
一、app自动化环境搭建 1、安装jdk及配置jdk的环境变量 app底层是c语言,应用层是java,所以需要jdk 2、安装SDK,配置android SDK环境 3、安装模拟器 4、下载安装Appium工具 01、appium客户端 appium destop 服务器 02、命令行安装&#…...

【TCP】三次握手 与 四次挥手 详解
三次握手 与 四次挥手 1. 三次握手2. 四次挥手三次握手和四次挥手的区别 在正常情况下,TCP 要经过三次握手建立连接,四次挥手断开连接 1. 三次握手 服务端状态转化: [CLOSED -> LISTEN] 服务器端调用 listen 后进入 LISTEN 状态ÿ…...

正则表达式新解
文章目录 是什么?正则用法匹配单个字符匹配一组字符其他元字符核心函数 贪婪匹配和非贪婪匹配正则练习 是什么? 正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊…...

MissionPlanner编译过程
环境 windows 10 mission planner 1.3.80 visual studio 2022 git 2.22.0 下载源码 (已配置git和ssh) 从github上克隆源码 git clone gitgithub.com:ArduPilot/MissionPlanner.git进入根目录 cd MissionPlanner在根目录下的ExtLibs文件下是链接的其它github源码࿰…...

SpringBoot 员工管理---通用模板 ---苍穹外卖day2
感谢点击 希望你有所收获! 目录 1.新增员工 需求分析:根据页面原型进行业务分析 接口设计 数据库设计 代码开发 功能测试 如何在接口文档中统一添加JWT令牌 获取当前登录员工的ID 2.员工分页查询 需求分析 代码开发 如何将日期格式化 3.启用禁用员工 1.新…...

可信执行环境(Tee)入门综述
SoK: Hardware-supported Trusted Execution Environments [ArXiv22] 摘要引言贡献 范围系统和威胁模型系统模型威胁模型共存飞地对手无特权软件对手系统软件对手启动对手外围对手结构对手侵入性对手 关于侧信道攻击的一点注记 VERIFIABLE LAUNCH信任根(RTM…...
Java浮点运算为什么不精确
有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top 首发博客地址[1] 面试题手册[2] 系列文章地址[3] 1. 什么是 Java 浮点运算? 在 Java 中,浮点运算指的是对浮点数进行加减乘除等基本运算…...

linux使用操作[1]
文章目录 版权声明快捷键ctrl c 强制停止ctrl d 退出、登出history命令光标移动快捷键清屏快捷键 软件安装命令常见linux系统包管理器yum命令apt命令 systemctl命令软连接日期&时区修改linux时区ntp程序 IP地址&主机名ip&主机名域名解析win配置主机名映射虚拟机…...

权限提升Linux篇
提权工具 https://github.com/liamg/traitor https://github.com/AlessandroZ/BeRoot https://github.com/rebootuser/LinEnum https://github.com/mzet-/linux-exploit-suggester https://github.com/sleventyeleven/linuxprivchecker https://github.com/jondonas/linux…...

影刀自动化采集底层逻辑
hello,大家好,这里是【玩数据的诡途】 接上回 <我的影刀故事> 今天给大家介绍一下整个采集的底层逻辑,包括业务流程自动化也是基于这一套基础逻辑进行展开的,顺便带大家熟悉一下影刀,既然叫影刀系列了,那后续一些…...

swiper使用
介绍 Swiper(swiper master)是一个第三方的库,可以用来实现移动端、pc端的滑动操作。,swiper应用广泛,使用频率仅次于jquery, 轮播图类排名第一,是网页设计师必备技能,众多耳熟能详的品牌在使用…...

基于遗传算法解决的多仓库多旅行推销员问题(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

微信小程序 工具使用(HBuilderX)
微信小程序 工具使用:HBuilderX 一 HBuilderX 的下载二 工具的配置2.1 工具 --> 设置 --> 运行配置2.1.1 微信开发者工具路径2.1.2 node 运行配置 2.2 插件 工具 --> 插件安装2.2.1 下载插件 三 微信小程序端四 同步运行五 BUG5.1 nodemon在终端无法识别 一 HBuilderX…...
设计模式:观察者模式(C++实现)
观察者模式(Observer Pattern)是一种设计模式,用于定义对象之间的一对多依赖关系,当一个对象(称为主题或可观察者)的状态发生变化时,它的所有依赖对象(称为观察者)都会收…...
【前端打怪升级日志之微前端框架篇】微前端qiankun框架子应用间跳转方法
参考链接qiankun官网:微应用之间如何跳转? 1.主应用、子应用路由都是hash模式 主应用根据 hash 来判断微应用,无需考虑该问题 2.主应用根据path判断子应用 方法实现适用条件参数传递存在问题a标签跳转<a href"/toA"></…...
C语言中的typedef struct用法
在学习数据结构的时候,我经常遇到typedef struct,刚开始感觉很别扭,查阅资料之后才真真理解了。 先从结构体说起。 1、结构体用法 struct Student{int age;char s;}如果要定义一个该结构体变量,就需要:struct Student st1; 有没…...
司徒理财:9.27黄金原油日内多空走势行情操作建议
黄金走势分析: 黄金昨日抵达了此前一直强调的日线布林下轨的1903位置,甚至更低!昨天的空单也是直接获利收割了!现在如果是要继续做空,下方是有日线支撑的,甚至周线的支撑也不远,在1890…...
C++设计模式(Design Patterns)
设计模式主要原则 单一职责原则(Single Responsibility Principle) 实现类要职责单一 里氏替换原则(Liskov Substitution Principle) 不要破坏继承关系 依赖倒置原则(Dependence Inversion Principle) …...

vue点击按钮收缩菜单
问题描述 VUE菜单有一个BUG,当我们点击其它按钮或者首页的时候,已经展示的一级菜单是不会自动收缩的。这个问题也导致很多开发者把一级菜单都换成了二级菜单。 错误展示 错误的效果请看下图。 解决方法 1、寻找菜单文件 因为我使用的是ruoyi的前端框…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...

MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践
6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...
数据库分批入库
今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖
在Vuzix M400 AR智能眼镜的助力下,卢森堡罗伯特舒曼医院(the Robert Schuman Hospitals, HRS)凭借在无菌制剂生产流程中引入增强现实技术(AR)创新项目,荣获了2024年6月7日由卢森堡医院药剂师协会࿰…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式
今天是关于AI如何在教学中增强学生的学习体验,我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育,这并非炒作,而是已经发生的巨大变革。教育机构和教育者不能忽视它,试图简单地禁止学生使…...

数学建模-滑翔伞伞翼面积的设计,运动状态计算和优化 !
我们考虑滑翔伞的伞翼面积设计问题以及运动状态描述。滑翔伞的性能主要取决于伞翼面积、气动特性以及飞行员的重量。我们的目标是建立数学模型来描述滑翔伞的运动状态,并优化伞翼面积的设计。 一、问题分析 滑翔伞在飞行过程中受到重力、升力和阻力的作用。升力和阻力与伞翼面…...