软件测试中的用户思维

来源:互联网 发布:手机语音读书软件 编辑:程序博客网 时间:2024/06/08 10:17


作者:简箫追一

一、

“今天是农历九月初九,重阳节,正是登山好时节呀”,大A与小B吃完午饭,回办公室的路上小B如是说。

大A:“是吧,长时间的996,我都麻木了,根本没有节日时令的概念。还有,在S城的这些年,经常入冬失败。你看,现在一点也还没深秋的凉意呢”。

小B:“是啊,我也差不多忘了,是早上老妈打电话来告诉我的”。

大A:“最近几天的确忙,每天晚上到地铁口时,都是听到‘尊敬的旅客朋友,开往XXX的未班车马上就要发出,……’,我都快累成狗了”。

小B:“都在忙些什么呢”

大A:最近比较倒霉,我所负责的项目,发出去的软件版本,在生产端出了点问题,必须马上重发版本,以免影响生产。更让我揪心的事,团队中的某工,还是不能吸取教训,测试方案被我打回了二次才勉强通过,真心不清楚他到底是否明白了,什么叫用户场景,软件测试的用户场景到底要如何分析,现在是被推着走啊。

小B:哦,什么情况。

大A:长话短说,给你举个粟子。

有生产某设备的厂家,之前的客户主要是一些小公司,他们的应用场景一般是以台为单位独立使用。为方便生产调试,及客户端使用,厂家在每台设备上提供了默认IP,其与附带的PC直连组成小型局域网进行工作。后来来了一个大客户,他们要一批设备(100+台),而且这些设备要跟他们的其他设备能连在一起工作,组成大型的局域网,方便管理,需要软件定制此功能。

于是我们在软件的设置界面增加了一个选项“组网定制”。用户钩选后,则可按内部规则重新部署IP。开发完成,发布给软件测试,测试确实没有想到生产端是如何生产此设备的。对于组网的设备,上门服务的用服人员又是如何帮他们组网的。后来用服现场反馈说,组网时发现设备的IP地址被禁用了。后来开发人员分析是因为生产装机是一台台调试的,需要独立设置IP,因程序的Bug,当多台设备连在一起时,原来单机默认的IP已不合适,可是也没有任何提示,直接禁用了。

小B:“原来这样,这个确实不易想到呀,一般功能测试人员不会这样考虑吧”。

大A:这就是我郁闷的地方。后来,为了解决类似的问题,在内部的测试分析这一块特意在流程上增加了‘用户场景’分析的要求。

小B:要求是要求,估计来日方长。

大A:是啊,不仅是我们,估计业界这种情况还比较普遍,我可再给你分享一个同类的故事。


二、

大A:无独有偶,因公司业务发展,前几天正好远程面试了一个人在某城的应聘者C。

其实C背景很不错,毕业国内一985,221双一流大学的计算机技术专业,在知名公司做分布式云存储设备的测试。

前面面试很顺利,我对他的印象也很好,但面到后面,问及最本质的一些细节时,他却说他测试的对象是linux系统层面的的文件系统,用户用不到,也即没有用户场景。他是通过编写接口程序来调用他的测试对象完成测试的,输入输出都是通过命令完成。他还很自豪地说,所有的用例基本都用自动化完成的。

最后问及升级兼容性如何测试,答非所问,完全没有用户的概念。而你知道,我一直很强调咱们测试要有用户思维,要站在用户的角度去思考,你所负责的对象–软件某功能模块或子模块,都是为了满足用户的某需求而开发的,它们都是有存在价值的。只是不同功能离用户远近不同,使用频次不同。有时候,你的测试对象,如应聘者C的测试对象是文件系统,与UI交互层的用户有点远,用户不会直接关注。可是用户在远离文件系统的终端,仍会简接,或满足某条件时简接使用到文件系统的。

在我的脑海中,软件系统是有层级的,不同的交互,站在用户的角度,始终有条系统性的工作着的数据或逻辑链路,测试必须站在用户的角度,全链路地关注场景。在作测试对象分析时,以下三步骤很重要:

1、首先,理解你的测试对象在哪里,即系统中的什么位置;

2、然后,此对象与其他对象的接口是什么,梳理清楚它们之间的输入输出关系;

3、最后,不推诿,尽管你只是负责软件运行整条链路的某节点的行为,但还需从整条链路上考虑测试对象的表现,毕竟不同节点的测试,关注的重点不一样。

小B:“很专业的样子,直逼专家了”。

大A:“尝试失败的案例多了,路也就走出来了,在跟C交流时,虽我不熟悉他的业务,但经他大致介绍,我脑海里一直就有一张关于他们家软件架构的思维导图,也就是前面我提到的测试对象分析三步骤中的轮廓图。


三、

关于软件测试,有不少同行问笔者“你认为,做好测试最重要的是要掌握什么技能或方法,或是”?

笔者毫不犹豫地回答:是思维,测试的思维。

俗话说:思路决定出路,这一句话一般是用在谈人的发展方面的。可是笔者觉得,用在软件测试这项工作上,也是一样的。即你有什么样的测试思维,就会有不同的测试策略,正是这些策略引导着你去思考、去分析测试的不同对象。

华为创始人任正非曾说:为客户服务是华为存在的唯一理由。如何理解以客户为中心

每个公司根据自身的业务有不同的定义,可是本质都一样的,根据‘以客户为中心’的策略,每个职能岗位转换为本职所辖落地的措施,并有效执行。

现在,咱们再看看测试工程师C提到的“我的测试对象没有用户场景,用户用不到”。为什么会是这样呢,相信,不只是C,相信测试界,很多朋友对测试的认识还是不到位的,或不在点子上的。

有些同学,路走偏了,还以为自己有多么帅,多么牛,就是因为自动化跑起来了,无人值守了。可是,你所负责的模块离开了大部队,离开了软件系统全链路,活得再好,如果接口处有问题,用户还是用不欢的。

对于软件测试而言,就是需要对运行在过程中的测试对象,即软件某模块或子模块子功能进行用户场景分析,全链路运行场景下进行测试,真正为用户的使用着想,把可能存在的问题消灭在用户使用之前。

原创粉丝点击