随笔:测试心得

测试心得
这是一个测试人员的心得,主要包括三点:测试是做什么的?对测试来说什么是最重要的?测试和开发应该是什么样的关系?
首先第一点:测试是做什么的?
关于测试是做什么的目前的认知有很多层。首先测试是测试软件的、找bug的,我想很多人都是这样认知的。确实,测试诞生之始这就是对测试的定义:证明软件的工作是正确的,测试是为了发现软件的错误而执行的活动。当然随着软件测试的发展,发现这样的测试工作满足不了对软件测试人员的需求,随之测试的定义也发生了改变:测试是以评价一个程序或者系统属性为目标的任何一种活动,测试是对软件质量的度量。简单的来说就是很多人认知中的bug量对软件质量的度量,随着bug量的最终减少软件质量在不断上升,最终达标,也就是测试方案里的‘出’的标准,也即是交付的标准。当然这也无法满足更高层的需求,因为这时的软件总体成本还是太高,毕竟修改bug是需要时间的,特别是bug量是一个开口向下的抛物线,bug是由少变多再变少。延长了软件的交付时间。这时测试的要求也就高了:测试是为了度量和提高被测试软件的质量,对测试软件进行工程设计、实施和维护的整个生命周期过程,测试不是为了发现缺陷,而是对缺陷的预防。这里也就有了软件测试周期的概念,也就是现在测试人员普遍认知测试周期:从需求规格说明书的评审开始经历需求规格说明书的定稿、测试计划和测试方案的制定和评审以及定稿、测试大纲的编写和评审以及定稿、测试用例的编写和评审以及定稿、单元测试(一般由开发人员或者资深测试完成,包括代码扫描、路径和判断的覆盖等)、集成测试(一般由开发人员或者资深测试完成,包括模块功能、模块与模块之间的接口、模块与模块是否相互影响等)、系统测试(一般由测试人员完成,系统测试又分为冒烟测试、第一轮测试、多轮回归测试,冒烟测试主要验证准入资格,回归测试验证准出资格)、交付和验收测试、测试总结报告。
上面讲述了软件测试是做什么的,那么下面就讲一下对测试来说什么是最重要的。这里也包含了对测试工作来说和测试人员来说两点。
既然说测试不是为了发现缺陷而是对缺陷的预防,那么需求规格说明书做这个源头是最重要的?确实,需求规格说明书评审确实是重中之重,这里可以从源头杜绝一些不严谨的设计和一些矛盾的说法等,且需求规格说明书也为后续的测试工作提供了依据,一个功能是否满足需求说的就是这个,也是是否有额外实现的功能bug和了解是否有客户的隐形需求。而从这里发现的缺陷(bug)是最容易解决的,也是成本最低的。
当然也有说是测试的思维是最重要的,也就是测试工作里的测试架构,而需求规格说明书的评审也是测试架构的一部分。毕竟有的时候我们是没有需求规格说明书的,或者说是因为条件限制或者某些原因导致没有完整的需求规格说明书。这是测试的架构就是重中之重。怎么测?测什么?需要测哪些方面?需要做哪些工作?有哪些风险?毕竟测试工作还是很多的,要测全那么耗费的时间也是很多的,而且发生了风险怎么办都是要去考虑的。
一般来说,肯定是要先找到测试的依据,也就是客户或者说甲方需要实现哪些功能,这些可以根据开发来完成总结,成为测试的依据,如果这时能发现一些设计缺陷那肯定更好。然后一般来说是功能测试优先于其他测试,实现功能才能满足甲方的需求。然后综合考虑安全测试、性能测试、易用性测试等。
这里也要着重说下风险,第一点:测试用例是否达到了100%的覆盖,评审是否过关。第二点:时间上的风险,开发未能及时完成任务导致测试未能及时进行测试,测试时间被压缩,甲方增加需求交付时间却没有改变等。第三点:人少了的风险,人员被抽离,人员离职等。第四点:严重bug未及时发现风险。等等。当然风险被提出了也需要进行解决,这里需要综合考虑怎么规避风险,也就是减小风险。也就是怎么设计测试方案,怎么安排人员,怎么执行测试等等,根据不同情况不同分析。
对于测试人员来说什么是最重要的呢?有人说是自动化,毕竟这涉及到了语言,不管是java还是Python,写代码总感觉更高大上一点。但是自动化毕竟需要时间,不管是UI自动化还是接口自动化还是其他,写代码总归是需要时间的。毕竟自动化也是为了减少人工,但当时间短任务重的时候自动化反而没有手工测试更快,且手工测试更加全面。
也有说性能测试,毕竟许多软件都对性能要求比较高,对性能测试也很重视,但是性能测试毕竟前提是功能实现。
当然还有很多其他说法,这里就不一一解说了。说到这里其实很多人应该也明白了,测试需要全能,想要成为资深测试,语言是必须的,其他各种工具和测试方法也都是测试需要一一掌握的。测试人员需要的大概有三个方面:一方面是测试思维,包括测试架构;第二方面就是动手能力,包括手动测试,掌握工具,掌握语言等等;第三方面是沟通能力,毕竟测试需要沟通的太多了
最后测试和开发应该是什么样的关系?当然这里肯定不是对立的,一个找bug、一个解决bug这不应该是相辅相成吗?哈哈。其实开发和测试都是对软件负责,只是分工不同罢了。在软件还没有雏形的时候,开发负责孕育软件,这个过程中测试负责发现早期的缺陷,开发进行及时解决。当软件拥有雏形的时候,这个时候测试在检查雏形的时候发现了更多的缺陷,开发负责及时修正。当然最终的目的都是为了让软件从孕育开始到最后健康成长为可用的软件。这其中测试和开发为了共同的目标沟通和交流是必不可少的,当然也可能是争论,但是这都不影响我们都是为了共同目标而奋斗的事实,对吗?
这是一个测试人员的心得,与君共勉!

原文地址:https://www.cnblogs.com/caodingzheng/p/14007073.html