第三,利用自动化测试,测试人员可以实施更有效的技术调查。以下是一个案例。
模糊测试是一种修改输入数据来暴露软件缺陷的方法。如果产品需要读取复杂的文档,测试小组可以使用文件模糊器,对原始文档进行随机修改,生成大量的模糊文档。然后,模糊测试框架启动产品,令它读取这批被篡改的文档,并严密监控可能的异常情况。在测试结束后,测试人员分析测试日志中记录的错误,以识别安全缺陷。模糊测试是一种暴力测试方法,一轮模糊测试会使用数万个甚至更多的模糊文件。如果运用得当,模糊测试可以发现许多手工测试或简单的自动化测试无法发现的问题,这对于提高软件的安全性极具价值。例如Microsoft Office团队在开发Office 2013时,通过模糊测试发现并修改了2100多个缺陷。
可见,新的测试挑战要求测试人员重新思考自动化测试的使命,用创新思维去充分利用计算资源,以提出更具威力的测试策略。
图灵访谈:从测试人员的个人发展角度来看,您更鼓励他们参与什么样的测试工作(手动测试、自动化测试,还是测试用例的设计)?
史亮:我建议测试人员多方面的发展。一个测试新人需要避免的思维误区是用某个职务头衔限制自身能力的发展。例如,我在测试论坛中发现一些测试人员常讨论“白盒测试工程师”、“黑盒测试工程师”和“性能测试工程师”等职位。一部分人认为它们是相互排斥的,即做白盒工程师就不用考虑用户情景,做黑盒工程师就不要考虑代码实现,做性能工程师就只要钻研性能测试工具。其实,这些名词只是某些公司所设定的职位而已,只代表他们对工程师的要求,并不体现软件行业对高水平测试人员的期望。实际上,国内外的高水平科技企业都要求工程师能够独当一面,能够独立完成一个领域的大部分任务。对于测试人员而言,他需要能够独立完成一个产品或组件的测试。无论测试活动是白盒测试、黑盒测试还是性能测试,只要工作需要,他就应该有能力完成。因此,为了长远地发展职业生涯,测试人员不应该被头衔所约束,而是要积极地拓展自己的知识储备。
图灵访谈:对在线服务的测试和对传统软件的测试有什么不同?
史亮:一般说来,互联网应用与客户端软件有如下不同。
互联网应用运行在云端,客户端软件运行在用户计算机上。对于云端服务,运营团队只要发布新版本就可以立即覆盖所有用户,所以部署缺陷修复变得很容易。这推动项目团队以更快地速度开发并测试软件。反观客户端软件,许多用户并不经常更新软件,这推动项目团队花较多的时间来稳定产品,以减少错误。
互联网应用大多是“服务器—浏览器”端,其中服务端的所有代码都运行在受监控的环境中。项目团队可以通过服务日志等了解用户行为和软件行为,这为分析用户习惯、发现程序错误、优化系统性能等提供了重要资料。这些信息常常是内部测试所不能提供的,对项目团队提高产品质量有很大帮助。反观客户端软件,项目团队通常无法访问其运行环境,也很难收集到丰富的用户反馈。这样的信息缺口要求测试小组更努力的测试、更积极地与用户交流,但很难到达互联网项目的效果。
互联网应用往往拥有涉及多个软件系统的工作流,每个系统往往有不同的实现技术和测试策略。这要求测试人员掌握更多的方法和工具,并准备复杂的测试环境。客户端软件常常只有一个进程,测试人员只需要深入了解它,就可以胜任工作,且搭建测试环境比较简单。
不过,目前的趋势是客户端软件也在“云端化”,客户端软件的测试人员需要更多地借鉴互联网应用的测试实践。
许多客户端软件已经做到持续更新。例如,一些软件会自动下载更新,然后提示用户更新。有些软件甚至会自动安装更新,所以用户每次启动都是该软件的最新发布版。在智能手机和平板电脑上,App Store也会提示用户更新应用,而且在用户允许的情况下,有些App Store会自动安装新版本的应用。此外,有些应用的显示内容是HTML渲染的结果,只要服务器推送新的HTML页面,应用的内容就会变化。从某种角度,此类应用与互联网应用的浏览器端没有什么差异。
许多客户端软件已经可以持续收集质量信息。成熟的App Store都向开发者提供了丰富的质量信息,包括用户下载次数、购买次数、用户评价、软件崩溃信息、软件错误信息等。这都有助于开发者提高应用质量。此外,许多软件会使用遥测(telemetry)技术,在用户允许的情况下,向服务端发送运行数据。这让客户端软件的项目团队也能获得丰富的质量数据。
原文转自:http://www.cnblogs.com/liangshi/p/3794306.html