欢迎了解深圳市和智物联科技有限公司

联系电话:18018747480(王先生)

当前位置
首页 > 动态中心 > 行业动态
开发人员于测试人员之间的区别在哪?不同定位的思维惯性不同
2019/7/17 18:47:38

开发人员自己做测试的时候通常会遇到哪些问题?

程序员呕心沥血将一款软件成功开发出来,心态就像是迎接新生儿一般,所以左看右看自己的软件都是最好的。而测试人员则是抱着“破坏性思维”去使用这款软件,测试员的职责是找到软件潜在的漏洞,提高客户使用感,并且专业的测试人员通过以往的经验都能轻易的找出软件容易出错的环节。所以开发人员做测试时肯定不如专业的测试员那么客观,找到软件漏洞的速度也要相对较慢。

不同定位的思维惯性不同

刚刚是从人性角度分析,现在在从技术层面看,开发人员自己测试软件会存在“关系思维”,通常开发人员在开发和设计的过程中没有考虑到的分支和处理逻辑问题,在测试的时候同样也考虑不到。例如,对于函数,有一个字符串类型的输入参数。如果开发人员根本不考虑字符串中存在空值的可能性,那么在代码实现中就不会处理空值,甚至在测试中设计的空值更少。有了测试数据,这样一个“一站式”的缺失将在代码质量上留下一个隐藏的缺陷。更糟糕的是,即使代码覆盖率度量能够测量测试的完整性,这种问题也不能有效地暴露出来,因为处理空值根本就不值得编写代码,如何才能说代码覆盖率呢?


测试环境和测试执行环境的复杂性

当进行全时测试时,测试由全职测试人员完成。全职测试人员通常负责设置测试环境和管理测试执行环境。被测环境很好理解,即被测系统(SUT)。测试执行环境是指用于执行测试用例的机器。例如,对于Web的GUI测试,最简单的测试执行环境是本地计算机上的浏览器。但对于大型互联网公司而言,测试执行环境远比您想象的要复杂得多。通常有一些大型测试执行集群,甚至是内部测试执行私有云,例如使用Selenium Grid构建的GUI测试执行环境。通常这样的集群将拥有数百台机器,例如Appium + Selenium Grid。移动设备测试集群中通常有数千台设备。既然没有全职测试人员,开发人员需要管理,维护和构建这些测试基础架构。这实际上不值得努力。工作量本身并没有减少。这只是一群人在做同样的事情。开发工作通常用于构建新的业务功能,而不是维护测试基础架构。

测试数据准备的问题

测试数据准备是测试过程中不可缺少的关键环节。当有一个全职测试时,是测试人员准备测试数据。一方面,测试人员通常比开发人员更了解正在测试的系统,因此测试数据的设计和生成将更加高效,另一方面,测试人员更了解正在测试的系统。在过去的测试过程中,测试人员积累了大量的测试数据生成方法和工具。现在所有这些都需要开发人员自己完成,这无疑会进一步增加开发人员的工作量。此外,开发人员经常缺乏对跨模块和跨系统测试数据准备的系统理解,并且经常花费大量的学习成本来生成非业务数据。例如,如果“买方模块”的开发人员需要测试“购买商品”的操作,他们需要事先准备“可销售商品”,这意味着“买方模块”的开发人员需要清楚地了解“卖方模块”和“商品模块”的详细信息,才能生成“可卖商品”。在当前主流微服务体系结构面前,这种问题更为严重,因为为了生成测试数据,可能需要依次调用许多服务。

关闭
用手机扫描二维码关闭