测试之道

上一篇 / 下一篇  2015-09-30 12:14:37

  作为与客户互动的新策略,“移动先行”正在被越来越多的组织所采纳。与此同时,而随着移动应用市场的复杂度日益增加,移动应用开发/测试团队需要满足更快的版本发布速度,移动正在推动敏捷。最新的现状是移动应用需要一个完全不同的开发流程。为了能够赶上市场的步伐,在移动应用的整个生命周期中,开发人员需要应对不断增长的变化集合——从来自于新的移动平台和设备的终端用户到终端用户参与的数字体验的增长。举例来说,物联网(IoT)带来了更多新的具有传感功能的上下文感知设备,随之而来的就是与桌面电脑、手机、可穿戴设备、平板电脑以及非移动设备的集成需求。伴随着这些变化,我们必须接受移动的颠覆性将会是持续不断的;与此同时围绕移动设备的功能和性能,也将不断引入新的挑战。当移动应用推动创新、需求及功能发展的同时,测试这些应用的相关复杂性也与日俱增。如何确保开启车库门的应用不仅可以工作,而且可以持续保持良好的运转?此外又如何能够做到在不牺牲质量的前提下,达成更快的应用开发速度?能够支撑移动应用开发人员提升开发速度和质量的追求的唯一答案就是在移动软件开发生命周期(SDLC)的早期就引入测试,并将测试贯穿整个生命周期直至投产。这就是持续质量方法论。

  持续质量 持续质量是一种将质量活动嵌入到SDLC过程的每一步中的方法论——从设计到构建再到投产——所有这些都基于过程、工具和用于支持组织特定需求的定制化测试实验室基础设施的支持。成功的持续质量过程可以优化上市时间,推动更加快速、频率更高的版本发布并且通过尽早地以自动化的手段管控风险,将逃逸到生产环境的缺陷减到最少。持续质量兴起背后的主要驱动力源于持续高频地发布高质量(原生的、混合的等)移动应用的需求。对于移动来说,必须要有敏捷的流程,但是在敏捷方法之上,在应用的功能、性能、可用性和安全方面,开发团队需要来自于真实设备的快速可操作的反馈。将与质量相关的所有内容嵌入到每一次的构建中,并持续为开发团队提供反馈,以便开发团队能够尽早洞察缺陷——这是持续质量的核心价值。目前,对于企业移动应用来说,平均需要执行数千次的测试。这些测试流程需要在各种安卓和iOS设备、智能手机和平板电脑以及两到三种最新版本的操作系统上执行。理想的持续质量过程依赖于可以针对测试设备矩阵执行自动化测试脚本的持续集成服务器,测试设备矩阵中包括安卓、iOS设备,平板电脑,电话以及不同的操作系统版本。开发团队从持续集成服务器上获取报告,这类自动化测试执行的周期长度大概为几个小时(或一个晚上)。如果无法正常执行自动化过程,就几乎不可能将质量过程转化成一个可重复的循环,这一过程就会变的冗长低效。

  成功——不可能完成的任务:未采用持续质量的后果 使用老旧、传统的开发方法的组织不可能在移动领域取得成功。未能实践持续质量工作流程的团队由于所用的工具与开发人员所用的完全不同,最终会以一种支离破碎的方式终结运转。如果一个团队仍然依赖于某个开发人员或质量保证人员桌上有限的几个移动设备完成测试,而没有将这些设备置于云端环境之中,在应用开发周期中他们将会面临更多的挑战,这其中就包括管理和安全的缺失。团队仍将严重依赖于手工测试和尝试性的基本的自动化测试——这与一夜之间就可以在多台设备上运行成千上万条测试的持续集成机器相比相差甚远。该团队还缺乏创建并测试真实的终端用户情景的能力。有许多工具可以模拟各种不同的网络情景、运营商网络、GPS定位测试、载荷测试等,而且开发人员可以基于这些场景进行测试。这种“老旧”环境将导致对应用的质量和性能的可见性有限,这通常会导致缺陷在项目晚期才会被实施工程师或用户发现。

  持续质量的实施

  持续质量过程和其他过程的关键区别在于:在持续质量过程中,开发人员、测试人员和性能测试工程师之间没有严格的界限。其重点是凭借一组环境资产、工具和质量实验室在非常早期就引入质量保证工作,作为持续集成(CI)工作流的一部分,为开发人员提供一个自然的环境,并行完成开发、构建和测试移动应用的工作。为了实现目前为止可能比Web应用更加碎片化,更加复杂并且更加难以预测的移动应用的持续质量过程,移动应用开发人员或移动敏捷团队需要许多独特的工具能力,以保证强有力的持续质量过程。开发团队应该考虑可用于测试的真实设备的移动应用质量实验室;在许多技术方面,模拟器都无法满足要求,并且无法提供完整的设备能力,如传感器、网络条件、特殊的硬件限制等等。最理想的设置是在基于云的实验室中将设备连接到真实的移动网络中,该实验室可以提供用于控制移动设备的相关能力:

  · 完整的移动设备系统控制

  · 设备轮换

  · 设备日志及关键信息,如CPU监控

  · 真实的网络条件,开发人员可以进行应用测试的各种网络配置,如2G,3G,不同的丢包率以及其他,并且可以在各种载荷条件下检查应用。

  · 基于位置的测试能力(例如:利用谷歌地图API模拟设备位置)作为早期测试并贯穿持续集成工作流程的一部分

  · 简单的USB设备接入能力,接入未被入侵,未被越狱的设备

  · 模拟网络环境

  · 环境转换能力,让在预生产环境和生产环境中同时进行同一应用的测试更加容易

  借力混编云

  面对如此多变的需求和持续变革的移动设备市场,团队可以从“混编云”环境获益良多。混编云是指由多种不同部署选项组成的云环境——组织机构可以在可用设备,共享设备和用于测试的远程托管移动设备的组合上开展工作,这可以补充对相关覆盖度的需求,并且可以支持全球团队间的相互合作。随着移动应用项目的扩张或转型,混编云的灵活性可以帮助团队随时增长或调整。混编云在满足本地开发案例方面也是相当有价值的,如测试需要通过Wi-Fi或蓝牙配对的可穿戴设备,或测试基于NFC的应用,如支付应用。混编云还可以满足全球化设备覆盖度的需求,例如当某个分布式团队需要与某个在特殊的网络中拥有独特设备的远程团队合作时。利用混编云环境,这些设备成为了联合云的一部分,所有团队都可以共享设备并使用这些设备开发或测试,无论所处位置如何。

  做测试做了8年,前两年做的是与硬件产品相关的测试,质量管理比软件行业要严格的多的多,原因是,大部分的应用软件代码出错,改下代码重新编译,打补丁,就ok了,而一旦硬件设计出错,或者零件用错,造成的成本损失会很大,严重的可能是电路板报废,更严重的是导致整批产品的报废。当然,软件出错也能造成无可挽回的损失,只是某些特定领域会要求很严格,知识相对于硬件来说,程序修改要比电路板的维修成本相对低一些。

  因为这种现象的存在,所以很多国内企业,尤其是一些小型的企业,对测试重视程度不够,甚至没有专门的测试人员,可能有的是为了项目需要,设立了测试团队,1人测试团队也屡见不鲜,我就知道好多企业是一人测试组,而且还是应届生的也有。对于这样的企业,您无法想象测试人员的地位会是什么样,老板都觉得设置测试人员是组织架构需要,而不是为了质量需要,那开发人员对测试人员自然也是不太看得起。

  由于专职测试人员并不参与产品的代码编写,所以给人一种非生产劳动力的感觉,而且大多企业都是用一些编码能力较弱的人去做测试。

  在很多外企中,对测试相对国内会重视一些,对测试人员素质要求也较高,对测试人员培训也较重视,但是并不代表测试人员地位就高,一样是会有开发人员看不起测试的情况,这种看不起并不会流于表面,而是骨子里的,没人说出来,但是会存在,大家心知肚明。

  然而我们有时候也会听到有开发人员说某某测试人员挺厉害的,那么怎么样才能做一名让开发人员佩服的测试人员呢?

  一,编程语言

  你至少要掌握一门语言,不管是简单的php,java,还是C++也好,或者其他的脚本语言python,perl还是shell也好,至少你用一种语言真正的做过一些事情,而且能拿来就用。

  二,数据库

  你至少要掌握一种数据库的DBA,对SQL的操作要熟悉,至少能熟练的运用JOIN进行查询,知道基本的HAVING的用法,如果你能写存储过程,并且能优化存储过程那当然更好了,测试人员离不开数据库的管理和数据库的操作。

  三,操作系统

  作为测试人员,各种操作系统你应该很熟悉,系统安装,配置,管理,一个都不能少,对于Linux,你至少要对一种系统做过系统管理,熟悉常用的命令行操作,具体要会哪些,建议google一下,用Linux的时候,尽量能用命令行,就不要去点鼠标,因为它不是windows,要改变这样的习惯。能在Linux下能安装和配置软件,最好建议大家自己下载source code,亲自编译,了解make file的原理。

  四,扎实的软件测试理论

  这是做为测试人员最基本的,不要连开发人员都知道的一些测试方法,我们测试人员竟然没听过,很多测试人员觉得理论知识我看过,以为自己就了解了,其实做过一段时间之后,你再回头去看理论,会有更多的收获,我工作多年之后再看测试方面的书籍,发现还是会有不同的收获,理论是实践经验的总结,不能说最好,但是如果说你设计测试用例的时候,如果每种方法都有涉及到,你肯定会发现用例覆盖率会高,而且容易发现bug。

  五,尽量自己分析问题

  发现问题了,怎么办?可以找相关的开发人员帮忙分析,但是我想说的是,在发现问题之后,能自己尽量的寻找线索,首先要确定非环境因素,比如检查配置是否全部正确,网络是否有问题等等,然后确定非环境因素后,保护现场,保存记录系统提示信息,如果有日志功能,那自己先根据日志查找一些线索,并把自己检查过的地方和做过的分析信息尽可能多的提供给开发人员,而不是仅仅把错误日志或者错误信息丢给开发人员让他们分析就不管了。

  六,多涉猎一些项目之外的知识

  不要做一个项目,就两耳不闻窗外事,做测试的就是要涉猎的广,跟开发不同,测试是要能接受任何类型的项目,因为测试是一门方法学,方法学是不受某个产品或者领域限制的,但是如果你对其他领域也了解的多,对你做测试是有帮助的,前沿技术你也要了解一些。

  七,掌握一些安全方面的知识

  往往系统安全是很重要的,如果你能提出一些系统安全方面的漏洞,那别人自然会觉得你考虑的比较全面,至于安全方面需要哪些知识,我觉得首先从网络安全入手,了解一些密码学方面的知识,比如了解常用的加密算法原理,比如报文加密传输协议原理,建议看一下hash的方法,这个简单容易理解,还比较容易举一反三。

  八,提高沟通能力,懂得尊重开发人员

  测试人员要面对的人员很多,客户,项目经理,开发人员,产品经理等,有时候你会全部都接触的到,那么沉默就不一定是金,有良好正确的沟通能力,会帮助你提高在其他人心目中的好印象,沟通不是能说就行,要正确的沟通,高效的沟通,就是能用最简洁的语言把事情描述清楚,沟通的好,你的人缘就会好,就自然会受到大家的欢迎,其他人也愿意与你合作,千万不要在背后评论开发人员,即使评论,也评论别人的优点有哪些值得我们学习,懂得尊重开发人员,即使是你技术比别人强,懂得尊重别人的人才能被别人尊重。

  九,不要自己把自己的地位降低

  很多测试人员觉得自己做的测试工作本身就没有技术含量,觉得自己的工作创造的价值少,没有挑战性,其实如果连你自己都看不起自己,那如何让别人看得起你呢?

  总之,做测试,是一门技术,也是一门艺术,我们把世界分为三个层次:技术(Technology),科学(Science),艺术(Art),技术是底层的,科学高一层,艺术是最高层的,技术可以通过短时间内学会,而如果把技术上升为科学,是需要大量的研究和积累的,而艺术的层次,这个不是学的来的,你需要有天赋,比如乔布斯,他就是因为有了艺术的天赋才造就了成功的苹果

  看着上面这些,你会不会觉得做测试要比开发需要学习的东西更多呢?如果你这么想,那就是正确的,真正优秀的测试人员,绝对是要在综合能力方面超过开发人员的,因为,你懂得的不仅仅是一门技术,你已经掌握了一门艺术。


TAG:

 

评分:0

我来说两句

日历

« 2024-03-26  
     12
3456789
10111213141516
17181920212223
24252627282930
31      

数据统计

  • 访问量: 7329
  • 日志数: 13
  • 建立时间: 2014-04-18
  • 更新时间: 2015-09-30

RSS订阅

Open Toolbar