一些现状
现在大部分软件企业的生态链都是,软件测试属于最下游。这也决定了很多情况都必须被动接受。即使某个测试工程师理论知识丰富,辨识风险能力强,但是一个产品需求的变更就可以让他傻眼,接着很努力去适应这种节奏。产品运营主导必然是趋势,测试主导是做不好产品的
还有一个点争论了很久,就是关于出现问题承担责任的问题。如果产品上线或者发布后出现问题,大家都会觉得测试这个环节应该“合理把控”,将风险点罗列出来并告知各责任人,有时候一句“为什么没有测出来”竟让测试同学无言以对
几个常见误区
从上面看来,做为测试的地位往往很尴尬,有种“别人狂欢有我毛事,出了问题我很悲催”之感。但是事实是这样的么?先不急着给大家解释,让我们先看看几个对测试理解的误区:
误区一:测试简单,对技术要求不高
很多人都认为软件测试就是安装和运行程序,点点鼠标,按按键盘的工作。事实是啥呢?软件测试技术不断更新和完善,新工具,新流程,新测试设计方法都在不断更新,需要掌握和学习很多测试知识。仅仅具有编程经验的程序员不一定是一名优秀的测试工程师
误区二:测试就是为了找到BUG
很多人定义测试工程师就仅仅是发现bug、提交bug,这仅仅是测试用例的执行者而不是测试工程师,测试工程师是做为产品质量的把控者,代表客户的利益去把控、验收产品,因此,做的就不仅仅是找到bug
误区三:软件开发完成后进行软件测试
人们一般认为,软件项目要经过以下几个阶段:需求分析,概要设计,详细设计,软件编码,软件测试,软件发布。据此,认为软件测试只是软件编码后的一个过程
其实,软件测试是一个系列过程活动,包括软件测试需求分析,测试计划设计,测试用例设计,执行测试。因此,软件测试贯穿于软件项目的整个生命过程。在软件项目的每一个阶段都要进行不同目的和内容的测试活动,以保证各个阶段的正确性。软件测试的对象不仅仅是软件代码,还包括软件需求文档和设计文档
误区四:使用了测试工具,就是进行了有效的测试
要想对一个软件或者模块进行有效的测试,首先该软件或者模块应该是可测试的。可测试性是反映软件质量的一个内在属性,不会因为你使用了某种测试工具进行了测试行为,就使得被测试的软件具有了可测试性。对于测试工具的选择,只要满足需要并能够自动运行测试用例就可以,而不要一味的追求复杂的功能和不必要的灵活性
误区五:机器自动化将代替手工测试
我们不能否认自动化测试的作用,但是软件的最终使用者永远是人,所以只有人才能真正了解人的需求,例如用户体验等,这是极其永远不可能代替的。有些特定的事情自动化擅长而有些特定的事情是人更擅长的。因此,结合二者的方法会更好。自动化可以进行一些重复的操作和分析数据,让工作更加简单,但是它并不善于确定相关性和判断调用,幸运的是人类擅长判断
重要性
好,纠正了几个误区后,我们看看为什么需要软件测试这个岗位?
既然又主导不了产品,地位又如此的尴尬,那为何还需要测试这个岗位,或者业界还对这个行业一致的看好呢?
下面我们看看几个测试的重要性:
1.问题暴露的时机与解决该问题的成本
在需求阶段修正一个错误的代价是1,在设计阶段就是它的3~6倍,在编程阶段是它的10倍,在内部测试阶段是它的15~40倍,在外部测试阶段是它的30~70倍而到了产品发布出去时,这个数字就是它的40~1000倍.修正错误的代价不是随时间线性增长,而几乎是呈指数级增长的
2.程序员往往发现不了自己实现的产品中的bug
由于人的思维的定向性,故应避免开发测试自己编写的程序
岗位
做为一个软件测试工程师需要做什么?
在每个软件企业中,测试占用一个很重要的地位,对于一个合格的测试工程师,需要了解产品想怎么玩,用户会怎么玩,运营想要用户怎么玩,开发怎么实现,测试怎么进行,何为技术难点等等。一个好的测试人员非常难得,了解了用户使用,懂得了代码实现,写的了接口测试,做的了性能优化,还能协调各种矛盾。比产品了解开发,比开发了解运营,比运营了解产品,还要最了解测试及产品质量
建议
对软件测试工程师的好习惯的几点建议:
1.先分析,再执行,这样会事半功倍
2.测试的最终目的是代表客户利益去把控软件质量,而不是想着找出所有的bug
3.熟悉产品的各个模块,理解产品的开发逻辑,了解客户的使用习惯
4.对产品、开发、运营的不合理需求要学会拒绝
软件测试的技术不断进步,与具体测试技术相比,掌握测试的核心思想比具体技术更重要。测试的最高境界在于运用最简单有效的测试技术,最大限度的发现软件缺陷
我们
我们团队对测试要求:
理念:软件产品质量必须依靠过程管控与数据监控
策略:积极参与到产品功能定义和产品设计环节
愿景:成为专业的软件质量管控团队
使命:代表我们的客户利益管控团队输出的产品质量
工作方法:轻敏捷:快速验证,价值驱动,团队自组织
团队:开放心态,乐于学习,追求精品,持续改进
产品观:稳定可靠,感性易用,凝聚创新,体贴极致,数据,数据,数据
我们希望设计质量部能够代表客户利益,制定更多的产品质量控制的标准,把这些标准传达到产品和设计部门,帮助他们实现这些标准,最终通过品质手段管控这些标准,交付客户高质量的产品