再论纯软件测试方法

简介: 再论纯软件测试方法

2009年,我在网上发布了一篇文章《浅谈纯软件测试方法》,参见http://www.51testing.com/html/03/n-112703.html。这些日子我对这个想法有了更深入的理解。


大家都知道李小龙吧,他汇集了各路武林高手,并向他们学习,最后结合武术、柔道、摔跤、拳击、泰拳…的精华,并且结合武术的本质“攻”和“防”创建了自己的拳术截拳道,达到了武术的最高境界,成为一代宗师。


在软件测试领域,软件测试一直是被开发牵着鼻子走的,虽然产生了各种软件测试模型(V模型、X模型、H模型)和方法(基于传统、基于质量、基于风险和基于经验)也解决不了提高质量的本质。另外,最近Scrum敏捷方法被各大公司使用。首先我的确认为Scrum是个好东西,尤其是ATDD,BDD,TDD摆脱了测试被开发牵着鼻子走的形式,然而Scrum给测试带来了很大的工作量,尤其是在Sprint后期,随着老功能越来越多,回归测试的工作量越来越多。有人提出了想法,让开发人员帮助测试,可是大家都知道,测试需要有一定发现Bug天赋的,有些人善于做测试,而有些人不善于。


于是我们又回到了软件测试的本质,“测”与“试”。所谓“测”就是检测软件系统是否按照用户显性需求的运转,比如功能;“试”可以理解为试错,尝试。比如找到系统最大负载点,系统对错误输入,异常环境是否可以适应,一旦程序发生错误多久可以修复。我们也可以把“测”理解为证“真”,“试”理解为证“伪”。


下面我们来讨论在一个Sprint中如何运用软件测试的本质“测”与“试”来进行测试工作。我们假设一个Sprint为1个月,即22个工作日,我们把这22个工作日分成前、中、后三部分。前(第1个工作日到第7个工作日),中(第7个工作日到第14个工作日),后(第15个工作日到第22个工作日)。


在Sprint前期测试人员的主要工作为书写这个Sprint新功能的测试用例,这些测试用例可以是自动化,也可以是手工的,并且在这些测试用例中,以证“真”的“测”的方法为主,证“伪”的“试”的方法为辅。我把这种测试方法叫做纸上谈兵式测试,在这里测试用例没有具体的格式,目的只要可以给相应的开发人员看懂就行,关键需要关注的是对新特性的覆盖度。从第二个工作日开始,在每日站会后,测试人员把他们前一天写的测试用例交给相应的开发人员,与他们进行一对一的评审,由于测试用例是每日提交的,所以评审的时间不会很长。一旦通过评审后,这个测试用例就交给开发人员了。开发人员在开发期间需要100%达到这些测试用例所希望的结果,并且根据开发人员的自身需求,在适当的时候执行测试用例。


在Sprint中期,测试人员主要工作专向基于经验的探索式测试和非功能性测试,在这个阶段,主要运用证“伪”的试的方法。而开发人员的主要责任在重新运行一遍交给自己的测试用例,以及对缺陷的修改。


在Sprint后期,开发人员协助测试人员一起完成回归测试,开发人员按照以前的测试用例执行测试,测试人员仍旧以探索式方式来测试,以保证整个Sprint结束是一个高质量可交付的产品。一旦发现缺陷,开发人员优先回去修改缺陷。


我们在日常测试工作中仍旧需要抓住软件测试的本质,“测”与“试”,发挥测试人员的经验优势,同时邀请开发人员来协助产品测试,从而提高产品的质量。


顾翔凡言:

一名优秀的软件测试工程师首先是一名优秀的软件需求分析师或软件架构设计师。

目录
相关文章
|
2月前
|
测试技术 API 项目管理
API测试方法
【10月更文挑战第18天】API测试方法
55 1
|
2月前
|
安全 测试技术
北大李戈团队提出大模型单测生成新方法,显著提升代码测试覆盖率
【10月更文挑战第1天】北京大学李戈教授团队提出了一种名为“统一生成测试”的创新方法,有效提升了大模型如GPT-2和GPT-3在单一测试中的代码生成覆盖率,分别从56%提升至72%和从61%提升至78%。这种方法结合了模糊测试、变异测试和生成对抗网络等多种技术,克服了传统测试方法的局限性,在大模型测试领域实现了重要突破,有助于提高系统的可靠性和安全性。然而,该方法的实现复杂度较高且实际应用效果仍需进一步验证。论文可从此链接下载:【https://drive.weixin.qq.com/s?k=ACAAewd0AA48Z2kXrJ】
70 1
|
2月前
|
测试技术 UED
软件测试中的“灰盒”方法:一种平衡透明度与效率的策略
在软件开发的复杂世界中,确保产品质量和用户体验至关重要。本文将探讨一种被称为“灰盒测试”的方法,它结合了白盒和黑盒测试的优点,旨在提高测试效率同时保持一定程度的透明度。我们将通过具体案例分析,展示灰盒测试如何在实际工作中发挥作用,并讨论其对现代软件开发流程的影响。
|
3月前
|
人工智能 测试技术 开发者
北大李戈团队提出大模型单测生成新方法,显著提升代码测试覆盖率
【9月更文挑战第27天】北京大学李戈团队在人工智能领域取得重要突破,提出HITS新方法,通过将待测方法分解为多个切片并利用大型语言模型逐个生成测试用例,显著提升代码测试覆盖率,尤其在处理复杂方法时效果显著,为软件开发和测试领域带来新希望。尽管存在一定局限性,HITS仍展示了巨大潜力,未来有望克服限制,推动软件测试领域的创新发展。论文详情见【https://www.arxiv.org/pdf/2408.11324】。
110 6
|
1月前
|
Java 测试技术 Maven
Java一分钟之-PowerMock:静态方法与私有方法测试
通过本文的详细介绍,您可以使用PowerMock轻松地测试Java代码中的静态方法和私有方法。PowerMock通过扩展Mockito,提供了强大的功能,帮助开发者在复杂的测试场景中保持高效和准确的单元测试。希望本文对您的Java单元测试有所帮助。
98 2
|
2月前
|
测试技术 Python
自动化测试项目学习笔记(三):Unittest加载测试用例的四种方法
本文介绍了使用Python的unittest框架来加载测试用例的四种方法,包括通过测试用例类、模块、路径和逐条加载测试用例。
84 0
自动化测试项目学习笔记(三):Unittest加载测试用例的四种方法
|
2月前
|
测试技术 Python
自动化测试项目学习笔记(二):学习各种setup、tearDown、断言方法
本文主要介绍了自动化测试中setup、teardown、断言方法的使用,以及unittest框架中setUp、tearDown、setUpClass和tearDownClass的区别和应用。
68 0
自动化测试项目学习笔记(二):学习各种setup、tearDown、断言方法
|
2月前
|
测试技术 UED
软件测试中的探索性测试:一种高效且灵活的测试方法
本文将深入探讨探索性测试的核心概念、优势及其在实际项目中的应用。我们将从探索性测试的基本定义入手,逐步解析其在不同场景下的具体实施方法和最佳实践。通过详细的案例分析和方法对比,帮助读者全面了解这种既高效又灵活的软件测试技术。
|
2月前
|
安全 测试技术 API
一图看懂API测试9种方法
一图看懂API测试九种方法:冒烟测试验证基本功能,功能测试确保符合规格,集成测试检查组件协同工作,回归测试防止新变更引入问题,负载测试评估性能稳定性,压力测试挑战极限负载,安全测试发现并修复漏洞,用户界面测试确保UI与API协调,模糊测试提升异常数据处理鲁棒性。
|
2月前
|
弹性计算 安全 Linux
阿里云国际版使用ping命令测试ECS云服务器不通的排查方法
阿里云国际版使用ping命令测试ECS云服务器不通的排查方法