美文网首页
2016-04-25 Laravist群友杂谈 - PHP单元测

2016-04-25 Laravist群友杂谈 - PHP单元测

作者: 郑方方 | 来源:发表于2016-04-26 21:30 被阅读460次

(安正超/安小超)PHP单元测试

Tip:在这里分享的某些观点,会在超神共享的单元测试Pdf里面有提及,也算是补充.

[福利分享]PHPUnit 作者写的单元测试最佳实践: http://t.cn/RqOLYgk 同时也提到了一些代码的写法,建议详细阅读。

以下的是超神对单元测试的一些见解以及细节.

不过不要滥用静态写法,工具类很多时候都不用测试.看到那段长长的代码就拆分到不同的职责的方法.完美的测试应该是黑白都要覆盖全的.

[他人疑问]黑盒是不是类似集成测试, 具体话就是类似前端里的 selenium 那一套?

[解惑](安正超)严格来讲是让一个不明白代码逻辑的人来测试的意思,不过在php单元测试上来讲,就是给一些不正确格式的输入.比如你的参数期望接收数组,但是我传一个数字进去,如果你没有严格检查就出bug了.

[他人疑问]那如果写了好多疯狂的 testHandlerCanNotNull 是不是也不知不觉的算是黑盒了?感觉追求黑盒太难了呀,还要精心构造预期之外的东西.

[解惑](安正超)是呀,不过吧,一般的项目写白盒就够了.如果是支付这样的比较关键的,就写严格一些,用上黑盒,不然时间上真有点开销不起.

很多时候可以用 data provider 来完成一些重复性的测试工作.比如我昨天写一个接口,要求 6月4号期间不让微博用户更新资料.3、4、5这三天都是不让改资料的.

PS:请忽略类名的写法(yaf这个框架就是这么规定的,与业务代码保持一致)

[他人疑问]fail() 的作用是?

[解惑](安正超)试想,$controller->process() 没有抛出异常,不过$this->setExcepectException这样应该不用写fail,有时候我要测试两次异常,我就习惯用try...catch的写法,在 try 里最后一句都会加 $this->fail,来搞定没抛出异常的情况.

[他人疑问]这个疑问算是很多人要问的.单元测试对一个项目来说非常重要?

[解惑](安正超)目前是“保证最小单元是正确的”,这样一来,大模块出问题的可能性就会很小.试想,你做事情每一步的都正确执行了,而且能逼自己一步步改进代码

[他人疑问]什么样的代码算一个单元?

[解惑](安正超)phpunit 里一个function 算一个最小单元

安正超 - PHP单元测试分享    密码:ujho

PHPunit作者分享 最佳实践

[他人疑问]还是不懂,通常我理解的是,自己写的代码。逻辑在心中,没有得到想要的结果,再回头找,哪里需要单元测试了?

[解惑](安正超)因为写测试的难度与代码质量成反比,单元测试的益处除了上面我们聊的以外,它另外一个好处就是 **应对变更**.这个变更可以理解为,第N天后不管出于什么目的来修改代码,修改代码的时候怎么保证你的修改没有对以前的特性造成破坏.

如果保证你的修改没有出问题,当然你会说,我去跑一遍就知道了,这话虽然对,但是这个过程很辛苦,如果修改完代码跑一遍测试大概20秒不到,至少保证了你的代码是OK了,

就算上线,可能也只是逻辑上的疏忽,不会出现一些低级错误

[国内现状]

高度迭代,测试什么的占时间不宜过高,因为国内很多团队的项目管理质量太差,导致项目乱,迭代不稳定,代码质量低,就会出现大量的加班,改需求,改代码,所以这样的场景下写测试真的会比较**浪费**时间

[经验分享](Abraham) 如何找范例

PHPUnit的范例资料,一般就是看完 phpunit(事实上的 php 单元测试标准) 文档之后, 去github 上找别人的包,翻他的 tests 目录怎么写的。测试可以不写,多数人自己做点小玩意都不会写,但最好是掌握,比如找工作的时候,同样别人看你的代码,有没有 tests/ 很多时候就是 5k 和 15k 工资的差别

方方觉得经验单单只讲一个人的并不够,多个人多个看法,所以还是把Ab兄的一些单元测试的理解摘抄下来.

群里的聊天记录,都是宝藏(福利也算),不过更大的宝藏还是群里几位牛牛.  愿意不吝分享自己的知识的同时还肯悉心引导别人的更少见.

相关文章

  • 2016-04-25 Laravist群友杂谈 - PHP单元测

    (安正超/安小超)PHP单元测试 Tip:在这里分享的某些观点,会在超神共享的单元测试Pdf里面有提及,也算是补充...

  • Laravist群友杂谈 --- 工具篇

    方方我都不知道该如何评论昨晚那风风火火的场面,震撼.因为大神都蹦了出来. 工欲善其事,必先利其器. 本文就是介绍昨...

  • Abraham杂谈

    此文章仅是Laravist群中Abraham同学在日常聊天对PHP、对Laravel、对项目的一些杂谈的简单整理....

  • Little杂谈

    此文章仅是Laravist群中Little同学在日常聊天对PHP、对Laravel、对项目的一些杂谈的简单整理.但...

  • Laravist群友杂谈 --- 逗逼篇

    为什么要起逗逼篇这个呢,其实不是针对谁,说的就是你!Drupal猎人!! 因为你们到底知不知道他的官网的金刚狼的照...

  • Laravist群友杂谈 --- 内存泄露与Supervisor

    这一次好像离上次发布时间间隔有点久了,刚好今天是清明节,放假就来整理下前阵子群里的聊天. 主角还是Ab兄与Litt...

  • laravist 群友杂谈 服务器篇

    Littlehz 大多数攻击者才不会这么细心找你的漏洞呢,有点耐心的也就是用个通用漏洞扫描器,做做弱口令、SQL注...

  • Laravist群友杂谈 --- 这个真的很杂!

    这篇文章使用来记录一些篇幅很短,不能说上是话题的知识. 问:php可以操作二维码扫描枪吗 我想用来做识别会员卡的 ...

  • 2016-05-04 Laravist群友杂谈 --- 不咸不淡

    骚年,你渴望奶子么、哦不,是骚年,你渴望力量么! [一堆网站分享] http://themeforest.net/...

  • Laravist群友杂谈 谈笑风生篇

    这几天群里来了安正超大神,一下子群情'波'涛汹涌呀,什么?你不知道超神是谁,这是他的个人网站可以去瞧一瞧. ......

网友评论

本文标题:2016-04-25 Laravist群友杂谈 - PHP单元测

本文链接:https://www.haomeiwen.com/subject/cfxcrttx.html