软件测试的道,法,术,器

186 阅读6分钟

从事软件测试十余年,前几年感觉完全没有去思考软件测试的本质和意义,一直都是跟着项目走,有事情就做没事情的时候就自己学点东西,没有系统完整地去思考过软件测试的来龙去脉,以及如何提供软件测试的价值,自从上海回来(2019年1月份)之后曾经一度想要转行做瑜伽老师,开自己的工作室,但是因为自己没有经验,加上准备不充分,可能也和我本身的性格的有关,做事情会考虑的比较多(不知道是不是也和这么多年做测试产生的职业病有关),凡是考虑多了之后就好像觉得风险不可控,未知的东西不敢轻易尝试。

鉴于上述的原因,在短暂的休息了3个月之后,还是开始找起来软件测试的工作,南昌的互联网环境真的是一般,可以说很差了,第一轮面试的公司基本都是小公司,给你开6000的公司还说是和领导申请的,后来无奈之下还是找了一家小公司上班,工资7000多,据说是15薪,当时虽然已经是降薪三分之二了,但是在当时也没有更好的选择,所以就去上班了。在那边上班总体上还可以,除了后面有段时间赶项目加班,大部分时候还好可以准点下班,中午休息2个半小时,不过到了年底,公司的项目运营不下去了,整个组都砍掉了,所以我就被裁员了,喜提N+1。

后面就是到19年底,疫情来了,当时真的是慌啊,刚好失业在家,当时有两个选择,要么继续找工作,要么去结婚生娃,我的内心告诉我,我还不想生娃,虽然那个时候已经30了,所以就在家一直看视频学习面试技巧,各种电话面试,虽然也遇到歧视已婚未育的情况,不过最后还是在现在这家公司上班了。

目前还在这里呆着,算算快4年了,在这期间完成了结婚生娃买房,看起来好像一切都是那么顺利,但是我深深的感知到了职场危机的到来,所以在闲暇时间也会不断学习知识,让自己不被淘汰。

这个前奏有点长,下面就是分享下我自己看到一篇关于软件测试的道、法、术、器的文章

道指的是原理和本质,那对于软件测试来讲,本质是什么呢? 网上可以找到一些定义:

  • 软件测试是贯穿整个软件研发周期的软件质量检验和评估活动;
  • 软件测试是验证软件产品特性是否满足用户的需求(验证性,正向思维);
  • 软件测试就是发现软件产品中的缺陷(逆向思维);
  • 软件测试是由“验证(Verification)”和“有效性确认(Validation)”这两类活动构成的整体,缺一不可;
  • 软件测试是对软件系统中潜在的各种质量风险进行揭示、评估的活动(风险的观点);
  • 软件测试是在理解软件应用环境、用户行为及其上下文关系的基础上,不断观察、不断学习,发现和质量相关的信息(差异或质疑),更好地守护软件产品的价值(社会性)。
  • 软件测试是通过投入较低的保障性成本来降低劣质成本,帮助企业获得更高的利润(经济性)。
  • 软件测试是检测已知的特性和通过试验验证未知的假定或影响因素(Test Oracle观点)。
  • 软件测试就是持续揭示产品质量风险的过程(敏捷测试);

软件测试就是测试人员和被测对象之间的一次对话,即不断观察、质疑、分析被测对象的过程(探索式测试、批判性思维)。

软件测试的“法” 是指原则、框架和方法论,是指导软件测试实践的法则。从法的角度看,首先可以明确软件测试的原则,例如测试是不能穷尽的、发现缺陷越多的区域越具有风险等。基于上述对“软件测试之道”的理解,也可以导出方法论,例如 基于“测试 = 检测+试验”的理解,从而得出测试的方法论——新功能采用探索式测试即手工测试,所有回归测试都可以进行自动化,从而最大发挥测试人和测试工具的各自优势。

软件测试的法应当是科学、系统、可靠的,能够确保对软件功能、性能、安全等方面进行全面和有效的检测和验证,例如不能只用动态测试方法,必须考虑采用静态测试方法,即动态测试和静态测试的统一。

软件测试主要有4项基本活动——测试分析、设计、执行和(结果/过程)评估,并构成一座金字塔,测试分析是基础,上面是设计,设计又是执行的基础,设计上面是执行,执行上面是评估,相互依赖、相互支撑。软件测试策略或框架还有著名的自动化测试金字塔,强调我们要优先进行单元测试的自动化,然后是多实现面向API的自动化测试,而UI自动化测试的优先级低。

软件测试的“术” 主要指软件测试的具体方法和技术,也是指导软件测试实践的具体操作和技巧。测试方法,大家是比较熟悉的,软件测试技术和实践,会和测试类型(功能测试、性能测试、安全性测试、兼容性测试、可靠性测试等)、被测对象所属的技术领域(Web应用、移动应用、物联网、大数据、AI应用等)和行业(金融、通信等)有密切关系,我们可以说:web测试技术、移动应用测试技术等。

软件测试的“器” 是指软件测试工具,是软件测试方法和实践的具体载体和支撑,包括了各种测试工具和平台,例如测试项目管理工具(如TAPD,PINGCODE)、自动化测试工具(Selenium或Appium等)、接口管理工具(apifox/postman)、性能测试工具(如JMeter等)。

综上述,其实所有的行业都可以用道法术器的逻辑去看待和分析,让我瞬间明白其实软件测试是可以更有章法的,很多东西都是相通的,所以大道至简。