当前位置:网站首页>【软件工程之美 - 专栏笔记】31 | 软件测试要为产品质量负责吗?
【软件工程之美 - 专栏笔记】31 | 软件测试要为产品质量负责吗?
2022-07-30 20:20:00 【if...else...】
专栏信息
专栏作者:宝玉
专栏发布平台:极客时间

主要内容
软件测试的主要工作是什么?只有搞清楚软件测试的工作,才能搞清楚这部分工作是否可以由开发来替代,是否需要专职测试。
一、软件测试的主要工作是什么?
从需求开始,在需求确定后要去对需求进行分析,然后做测试设计。
如果说架构设计是对业务需求在技术方面的抽象,那么测试设计更像是对业务需求的具象,把业务需求分解成一个个具体的用户操作步骤,也就是测试用例。
如果对软件测试的工作简单总结一下,就是发现 Bug,报告 Bug,跟踪 Bug。
软件测试怎么发现 Bug?
这里面最难的就是发现 Bug,尤其是如何尽早、尽可能全面地发现 Bug。
对于测试人员来说,重点是在检测,也就是会考虑所有可能的用户使用场景,正常的、异常的,甚至各种极端情况。
测试人员设计测试用例,就是要尽可能做到覆盖所有用户操作的可能,但理论上来说这是不可能的,因为组合是有无限多个的。
可以通过一些科学的方法来通过有限的测试用例,保证尽可能多的测试覆盖。
- 等价类划分
- 边界值分析
- 探索性测试
- 场景设计
- 因果图
- 错误推测法
推荐阅读《微软的软件测试之道》,这本书上有很多具体的测试方法的详细介绍。
软件测试怎么报告 Bug?
在测试的过程中,如果测试人员发现了 Bug,就会通过 Bug 跟踪系统提交 Bug 给开发人员。
软件测试怎么跟踪 Bug?
Bug 的跟踪,并不仅仅是要跟踪开发人员什么时候修复了这个 Bug,通常还包括对 Bug 修复的验证。
回归测试是指修改了旧代码后重新进行测试,以确认修改没有引入新的错误或导致其他代码产生错误。
二、什么样的公司需要专职测试?
为什么 Facebook 可以做到没有专职测试呢?
首先 Facebook 的工程师水平确实是高于业界平均水平的,有能力同时做好开发和部分测试工作
其次,Facebook 的产品周期相对宽松,可以有时间完成自动化测试代码;
Facebook 的发布和监控也比较完善,有问题能通过监控及时发现,并且可以随时快速回滚或者发布补丁;
最后就是用户对这类社交产品的 Bug 相对容忍度比较高,想想看如果是波音飞机上的软件能这么做吗?
大厂不设专职测试的启示
首先,用自动化测试代替重复性的手工测试是必然趋势。
其次,测试设计是软件测试人员的核心竞争力。
最后,开发人员和测试人员的更多融合是一种双赢。
三、其他摘抄
- 除了功能性的测试,还需要进行非功能性的测试,也就是像性能、安全性和用户体验等方面的测试。
- 有时候测试人员的工作看起来不过是用鼠标点点测试,但他们在拿到需求后,其实花了很多时间和精力分析需求,然后根据需求设计测试用例,准备测试数据。
- 回归测试这一步很重要,因为通常开发人员在修复完 Bug 后,只会验证其修复的 Bug,而不会验证其他功能是不是会有影响。回归测试,则能有效、及时地发现修复 Bug 导致系统不稳定的情况。
总结
简单来说软件测试的工作,就是发现 Bug,报告 Bug,跟踪 Bug。
公司是否需要专职测试,还是取决于公司的具体情况,例如是否有大量优秀的工程师可以同时兼任开发和测试,有大量的自动化测试代码覆盖,有强大的发布和监控系统,进度宽松,用户对 Bug 容忍度较高。
边栏推荐
- PR视频剪辑软件教程
- Recommendation system: evaluation index [offline evaluation index: RMSE (root mean square error), AUC, precision, recall, F1] [online evaluation: A/B test] [generally required response time <0.5s]
- 【考研词汇训练营】Day18 —— amount,max,consider,account,actual,eliminate,letter,significant,embarrass,collapse
- 利用go制作微信机器人
- JUnit 5测试中的临时目录(附实例及代码)
- WPS怎么独立窗口显示?wps单独窗口显示怎么操作?
- mysqldump导出提示:mysqldump [Warning] Using a password on the command line interface can be insecure
- Activiti 工作流引擎 详解
- MySQL 视图(详解)
- PHP低代码开发平台 V5.0.7新版发布
猜你喜欢

MySQL的主从复制

Oblique document scanning and character recognition (opencv, coordinate transformation analysis)

@WebServlet注解(Servlet注解)

TensorFlow2: Overview

Mysql8创建用户以及赋权操作

湖仓一体电商项目(四):项目数据种类与采集

Ordinary int main(){} does not write return 0; what will happen?

推荐系统-排序层:排序层架构【用户、物品特征处理步骤】

“数字化重构系统,搞定 CEO 是第一步”

网络层协议------IP协议
随机推荐
推荐系统:AB测试(AB Test)
【考研词汇训练营】Day18 —— amount,max,consider,account,actual,eliminate,letter,significant,embarrass,collapse
【请教】SQL语句按列1去重来计算列2之和?
Mysql索引特性(重要)
MySQL的DATE_FORMAT()函数将Date转为字符串
并发与并行的区别
FFmpeg —— 裁剪视频(含音视频),不需编解码(附完整源码)
PR视频剪辑软件教程
Maxwell 一款简单易上手的实时抓取Mysql数据的软件
MySQL group_concat()详解
如何解决gedit 深色模式下高亮文本不可见?
MySQL 高级(进阶) SQL 语句 (一)
推荐系统-模型:FNN模型(FM+MLP=FNN)
【Codeforces思维题】20220728
vlookup函数匹配不出来的原因及解决方法
halcon——轮廓线
MySQL----多表查询
Mysql——字符串函数
Mysql8创建用户以及赋权操作
ceph的部署练习