禅道博客

分享专业技术知识,文章内容干货满满

《全程软件测试》:对软件测试的认知

2023-12-21 15:20:54
潘仙芝
原创 1023
摘要:《全程软件测试》适合软件测试人员阅读,也可作为相关专业人士的参考指南,书中总结了过去十年中软件测试发生的变化,浓缩了作者许多宝贵的软件测试经验,本文是禅道团队的小伙伴关于阅读《全程软件测试》的心得分享。
因为参加了朱少民老师的软件测试培训,于是就借阅了这本《全程软件测试》来阅读。

一、什么是软件测试

1.找Bug;
2.是否符合需求验收标准;
3.是否符合用户实际使用需求;
4.保证软件质量;
5.验证和确认;
6.提示软件风险;
7.不断探索。

二、软件测试的基本认知—正反思维

1.早期,人们将测试看做对产品的检验;
2.1983年软件测试定义:软件测试就是一系列活动,这些活动是为了评估一个程序或软件系统的特性或能力,并确定其实否达到了预期结果;
3.测试试图验证软件是工作的,也就是验证软件功能执行的正确性;
4.测试的活动是以人们的设想或预期的结果为依据,这里的设想或预期的结果是指需求定义、软件设计的结果;
5.软件测试有一条原则:测试是不能穷尽的。测试会面对大量的测试数据、测试场景或代码路径,测试也只是一个样本实验;
6.从心理学的角度看,如果将验证软件是工作的作为测试目的,非常不利于测试人员发现软件的错误;
7.做好测试,既要有深度,又要有广度;既要有效率,又要有测试工作自身完整的质量;
8.将正反思维有机结合起来,做到效率和质量的平衡。

三、狭义测试到广义测试

1.从早期的动态测试延伸到静态测试;
2.广义测试:动态+静态,需求评审、设计评审、代码评审加入到软件测试中;
3.不再是停留在编码等某个阶段,贯穿软件研发周期的质量保证活动中;
4.引入静态测试,尽早发现问题,把问题消灭在萌芽阶段,及时清除每个阶段的问题。

四、基于质量的认知

1.将软件质量分为内部质量、外部质量、使用质量;
2.内部质量:代码规范、复杂度、耦合性;
3.产品质量影响使用质量,使用质量依赖产品质量;
4.产品质量:功能适应性、效率、兼容性、易用性、可靠性、安全性、可维护性、可移植性;
5.使用质量:有效性、效率、满意、远离风险、语境覆盖。

五、基于风险的认知

1.敏捷开发中,软件测试是对软件产品质量的持续评估;
2.对测试工作有所侧重,排优先级,在风险和开发周期限制上获得平衡;
3.动态的质量监控,设置新基准,持续性的进行测试。


六、基于社会性的认知

1.A/B测试,不同的解决方案,UI布局功能设计等;
2.理解用户行为,活动背景和目的,上下文关系,发现差异和质疑,从客户利益、业务特性来守护产品价值点。

七、基于经济的认知

1.软件缺陷会带来劣质成本;
2.软件测试就是如何以最小的代价获得更高的收益,尽早介入。

八、基于标准的认知

1.验证和确认;
2.验证:单元测试、集成测试、系统测试;
3.确认:验收测试;
4.回归测试伴随着整个测试过程,在功能测试、系统测试、单元测试、集成测试中,一旦有变更或修正,就要进行相应的回归测试。

九、基于Test Oracle的认知

1.软件测试=检测已知的+试验未知的;
2.了解测试的输入具有两重性—确定性和不确定性,测试的输出也具有很大的不确定性;
3.测试先知:需求说明书,设计文档,竞品、启发统计一致性模型人类语言测试;
4.是启发式测试,测试人员的试验,不断质疑系统,根据系统反馈做出判断,探索式测试;
5.随机测试、模糊测试、变异测试;
6.软件测试=基于模型、脚本的自动化测试+基于手工或AI的探索式测试;

十、基于批判性思维的认知

1.借助观察、经验、反思、推理、沟通收集信息,对软件产品相关的质量信息进行分析,评估软件质量,并做出结论;
2.促进我们重新审视问题、意图,和陈述之间实际的推论关系,勇于质疑证据,去分析和评估陈述、论证的过程;
3.软件测试:不断质疑被测系统的过程;
4.设计、执行、分析、学习的过程不断循环,不断优化的测试过程;
5.是一种会话—测试人员与系统的一次真正的会话。

十一、基于传统开发模式的认知


十二、基于敏捷开发模式的认知

1.整个团队对测试负责;
2.持续性测试和反馈;
3.测试的速度和适应性,侧重计划不断调整以适应需求的变化;
4.以用户需求为中心,将验证和确认统一;
5.面对面沟通协作,团队的责任感;
6.关注产品本身,可交付的价值;
7.良好的自动化测试。

十三、总结

1.软件测试是产品质量的评估;
2.软件测试是持续的质量反馈;
3.软件测试是提升客户满意度;
4.软件测试是缺陷风险的预防;
5.软件质量不是测试出来的是构建出来的。
暂时没有记录
评论通过审核后显示。