51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2529|回复: 10
打印 上一主题 下一主题

[讨论] 软件测试的魅力何在?您为什么选择测试一行而不做开发?

[复制链接]
  • TA的每日心情
    无聊
    7 小时前
  • 签到天数: 1051 天

    连续签到: 1 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2014-7-17 17:20:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    虽然我现在换到开发去了,不过毕竟也在这一行做了六年,貌似还是有机会在这里发言的吧。最初我接触测试纯粹是出于偶然,微软到我们学校的面试只有做测试的肯要我啊。不过后来做了一阵子之后慢慢就喜欢上这个位置了。说说我过去的一些经验吧。

    正如我之前在很多回复中说的,测试和开发是两个关注点不一样的工作。开发的目标是实现功能,测试的目标是确定功能是否能够正常运作。那么它的乐趣在哪里?简单地说是两个关键词:“发现”和“分析”。

    一两句话很难说清楚,举一个例子吧。

    假定你打算写一个VOIP程序,请问怎么测试它的效果?没有经验的测试可能会告诉你我连上两台机器确定电话可以打通就可以了,而有经验的测试可能会给你列出一大堆的组合:
    • 你的场景支持笔记本和耳机么?你支持什么耳机?蓝牙还是3.5mm插口耳机?
    • 你的场景支持使用笔记本麦克风么?还是只支持配麦克风的耳机?
    • 你的场景支持使用手机设备么?Android还是iOS?
    为什么要列出这么多东西?有人可能会对此嗤之以鼻:只是为了保证什么都能测到而已。但是其实这里每一个场景都是有意义的:
    • 蓝牙耳机普遍都有硬件支持的回声消除模块(Acrostic Echo Cancellation),而普通3.5mm耳机则通常由于结构简单而没有。对于没有回声消除的普通耳机,我们必须自己提供软件的回声消除避免影响接听效果。
    • 我们不能使用完全相同的逻辑处理耳机和笔记本麦克风的语音输入。因为耳机麦克风的定向性比笔记本麦克风强很多,它只能取到声源凑得很近时发出的声音,而笔记本麦克风的设计则是用来在屏幕前相当大的范围内取声的。如果对笔记本麦克风使用耳机麦克风的声音检测算法则会由于灵敏度过高而将大量周边杂音收入,影响通话效果。而且有些场景是笔记本麦克风特有的,比如用户的打字音和风扇噪音。
    • Android和iOS都有内建的通话模块。iOS甚至提供了非常高效的回声消除和增益控制模块,但是没有静音检测模块。所以如果桌面程序移植到手机上时可以很好地利用这些功能简化自己的代码。而Android的回声消除模块则表现非常不稳定,需要很多调整才能得到较好的效果。
    这就是所谓的“发现”,发现开发没注意的地方,发现项目经理没定义的场景,并提出相应的测试场景。这需要宽广的知识面才能做到。没有经验的测试更倾向于对所有测试的平台做全排列,但求不忽略任何一个场景。这在资源无限的情况下当然没问题,但真实项目中,测试的资源经常是最有限的,所以我们得学会怎么做最有效的测试,而不是闭着眼睛搞全面铺开。

    那么什么是“分析”举例来说:如果一个内测客户投诉你的VOIP程序实际使用中声音断断续续,你怎么分辨问题的原因?声音断断续续的情况有很多种,有由于网络延迟导致的,有由于操作系统处理过于繁忙导致程序执行时间被高优先级程序抢走而导致的处理中断产生的。我们怎么去分析哪些原因呢?没经验的测试可能会直接要求跑客户现场看看,但如果用户的环境不是每次都重现该怎么样?有经验的测试会提出:我们可以给客户一个调试用的版本,这个版本要求把数据包的收取时间点和每个数据段的开始处理时间点和CPU占用率纪录下来。通过前一个我们可以测量用户的网络情况,后一个数据段可以用来发现是否是操作系统换出导致的。反过来,对产品不熟悉的人,这些数据可能看不出什么用途。


    有人说,这些都可以让开发来做,用不着测试。完全正确。可问题是:开发有时间做这些么?在微软这样级别的公司里,所有的项目都有严格的开发进度,开发部门忙于实现功能的时候,我想没几个产品经理会同意频频打断开发的进度要求停下来做bug分析。

    另一点是我们不需要把开发和测试的界限分得那么清楚。事实上大部分如今的跨国IT公司都很少分开发和测试这两个职位(大约只有微软还严格地分两个职位吧,即使是这样,搜索那边也开始探索改变了),但是要做的工作还是那么多,只是顶着的头衔换了换,所以没必要纠结。

    === 我是转换话题的分割线 ===

    另一个问题是关于测试的工作方式的。就像开发一样,有经验和没有经验的测试在团队起到的作用是很不一样的。从测试中遇到问题采取的行动来看,我观察到的测试人员能达到的层次大概有这么几个级别:
    • 开一个bug;
    • 查找一些额外的资料如设计文档和历史,确定这是一个问题,然后给出详细的bug重现步骤;
    • 对重现步骤做一些精炼,确定能够重现bug的最少步骤;可能的话,将重现步骤做自动化;
    • 尝试通过研究代码确认问题所在;
    • 尝试给出一个fix;
    • 对错误的原因进行分析,提出一些标准化的方法来检测出类似的问题,比如stress,fuzzing等等;
    • 能够对标准化的测试流程定义对应的数据分析方法,可以保证开发和项目主管都能从中得到需要的信息来掌控质量状况。
    那么作为一个测试人员,我们的目标是什么?我对自己的目标是能对我控管的所有的bug从1做到4,在至少两个例子中我甚至能做到级别6。我在微软六年多,在很多部门都见到过可以见到可以总是做到级别7的测试,能做到这个状态的测试,没有人敢说他们技术不行。对于开发人员来说,如果你身边有一位能对大部分bug做到级别4的测试,我相信开发的工作也会轻松很多。

    即使是抓bug也分很多种。抓一群猴子来随便在键盘上胡点两下算是测试,认认真真地一步步通过各种技术手段(代码覆盖、压力测试、安全分析等等)来步步推进也是测试。作为技术人员,你信任哪一种?我想多数人都会选择后者,但我要说的是在实践中很多测试团队都会不知不觉地变成前一种。为什么?因为测试对产品的设计不了解,所以本能地会选择最容易做的,可问起他们:你们测了多少?信心多高?他们就都傻掉了。我不是说猴子测试没意义:恰恰相反,它可以抓到我们思维上的许多盲点。但如果你的整个团队完全靠猴子测试过日子,那绝对不可能给你一个可信任的结果。

    那么看官们必然会问,这种大牛测试和大牛团队有多少?很不幸,就我个人的经验来说,事实是在我遇到的测试人员中,最多只能做到级别1的测试人员并不罕见,能做到3的测试人员就被很多人认为相当不错了,至于团队中存在多个大牛测试的队伍则真的很少见(微软总部的比例高很多)。是的,别惊讶,这就是我工作中遇到的情况。但是请注意,这不是说公司在花钱养废物,而是说在没有专业测试教育的情况下在入行初期必然会导致的现状。我们所有人都是从这个状态开始的,也都需要时间来让自己进步。

    也许还会有人问:这不是跟开发抢活儿干么?是的,没错。但为什么不能抢呢?我们的目的是什么?是开bug还是做更好的产品?如果你的全部目的只是多开bug,那真的很简单。真实的例子,我曾经见过有同事将测试自动化代码的bug开成产品bug的,他的理论就是不管bug是什么,先开出来再说,至于它是产品问题还是测试代码的问题甚至是环境的故障都可以缓一缓,反正他不负责指出原因。我知道要求一个同事干这个干那个很不礼貌,但这种什么都不做就先开了bug再说的做事风格是在耽误所有同事的工作。作为团队的一分子,测试在产品上多花一分时间,有时候能省下开发几天的工作量,因为测试是最熟悉这个bug的人,而开发则需要从头开始分析。

    ——当然,反过来开发也应该尽量将测试带入开发过程,让大家都知道各种功能进度的细节。这种合作同样能大大减少测试在产品设计变更时重新设计用例的时间。

    有人可能还要问:我的时间也很宝贵,为什么要替开发省时间?嗯,好问题。但我想谁都知道该怎么回答这种“问题”。

    现在知道我为什么要做六年测试了么?
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    7 小时前
  • 签到天数: 1051 天

    连续签到: 1 天

    [LV.10]测试总司令

    2#
     楼主| 发表于 2014-7-17 17:22:32 | 只看该作者
    这是我认为可以讨论的话题,而且目前论坛中很多人会提出来。并且一直纠结在两者之间,那么我就举个活生生的列子给大家看看~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2019-12-31 08:59
  • 签到天数: 975 天

    连续签到: 1 天

    [LV.10]测试总司令

    3#
    发表于 2014-7-18 15:03:42 | 只看该作者
    拜读
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
    发表于 2014-7-18 18:08:52 | 只看该作者
    解惑
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
    发表于 2014-7-18 18:10:19 | 只看该作者
    为菜鸟解惑
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2023-7-19 14:54
  • 签到天数: 266 天

    连续签到: 1 天

    [LV.8]测试军长

    6#
    发表于 2014-7-18 23:46:10 | 只看该作者
    顶一个
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2022-5-8 19:23
  • 签到天数: 137 天

    连续签到: 1 天

    [LV.7]测试师长

    7#
    发表于 2014-7-20 14:39:58 | 只看该作者
    实际上很多人还是没有这种感受,也只是做不了开发,所以来做测试
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2021-6-9 14:08
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    8#
    发表于 2014-7-23 08:45:05 | 只看该作者
    至少我所知道的就是做不了开发来做测试这种思想仍然存在
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
    发表于 2014-7-24 08:30:06 | 只看该作者
    先看看……
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
    发表于 2014-7-25 16:05:37 | 只看该作者
    看到上面两个版主的回复及LZ的讨论,我有点点羞,虽然羞愧,可是我还是会大胆的承认,我就是因为开发做不来而做的测试。我觉得这没什么的,并不影响我继续做着测试工作,喜欢它并努力的学习它。开发和测试其实是相结合的,你有丰富的开发经验学/做测试就很容易上手,你有丰富的测试经验做开发也能少走很多弯路。什么都没有的也可以从0学起。只不过要自己去明白、发现适合的到底是哪个方向罢了。有的人认为测试比开发轻松,真正懂测试的也不见得会这样认为。(废话有点多,我就只是说说而已,我这人说话有时候很矛盾的,别误会我的意思,呵呵)
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11#
    发表于 2014-7-26 23:27:37 | 只看该作者
    现在很少有公司愿意培养0基础的员工了吧 毕竟成本摆在那里 有的培养出来就跳槽了
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-26 16:32 , Processed in 0.076689 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表