• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

PHP程序,如何自动化测试在各个PHP版本(5.3/5.4/5.5..),以及各个浏览器下能否正常工作?

php 搞代码 4年前 (2022-01-25) 15次浏览 已收录 0个评论
文章目录[隐藏]

有哪些解决方案?

回复内容:

有哪些解决方案?

程序在各个PHP版本中的运行情况,与各个浏览器上的运行情况完全不是一回事。
你的问题容易给不懂的人造成误导,让他们误认为二者存在关联,先踩一下你的问题。

单从PHP的执行角度,我假定你写的是个开源程序, 需要搜集代码在各个PHP版本上的运行情况, 以便改善着手改善。

  • PHP在每一个release中,都提供了详尽的兼容性列表,其中包含了新增特性、弃用特性以及向前兼容情况。我首先建议你重点关注这个列表并审验自己的代码,是否用到可能不再被支持的特性。这么做的好处之一是写代码时注意它,而不是等事后修改,这样的习惯能显著提高你的编码效率。

拆分问题,想“自动化测试在各个PHP版本(5.3/5.4/5.5..)是否正常工作”,前提是“测试PHP程序是否正常工作”,进而才说“自动化”和“不同版本”。

  • 在软件工程中,测试程序是否正常工作的一种方式是“单元测试”。这是敏捷开发实现的基础之一,为代码中的每一个最小单元(C中是函数、Java中是类、GUI程序可能就是窗口和菜单)写用例,去检查、验证其执行结果是否符合预期,单元测试是保证代码强壮稳定的重要手段。为自己的程序编写单元测试用例,跑完这些用例你会得到你测试的单元哪些成功、哪些失败,配合xdebug之类的插件你还可以得到你测试代码的覆盖率。对于PHP来讲比较著名的单元测试框架是PHPUnit,你自己研究。单元测试的主要应用是测试驱动开发(TDD),也就是说先为你的程序写测试用例, 然后根据这些测试用例去编写业务代码, 这是很潮的一个方法, 优势是显而易见的, 严格执行这套流程几乎能保证你代码的零Bug, 缺点也有一些, 会增加很多的编码工作量, 因此小公司的人很少有能坚持下来的。 测试驱动开发的基本流程是设计程序 -> 技术设计数据库 -> 基于程序结构编写单元测试用例 -> 根据测试开发业务代码 -> 每开发完一个版本去跑测试用例,保证业务代码成功通过。 任何时候测试用例不通过, 都要首先去修复你的程序bug,这是最重要的。主流的开源框架都会随程序提供一些测试用例。
  • 单元测试你的程序,你会知道Bug具体出在哪。接下来你会想起来被前辈反复说过一万遍的话, 凡是能用机器做的事都不要动@本文9来源gao($daima.com搞@代@#码8网^搞代gaodaima码手。 本来编写单元测试就是自己做的, 每次代码完毕再去运行它, 多累呀, 我们需要机器为我们打工, 而不是反之。出于这个理念, 软件工程里面还有一个概念,“持续集成”,按照字面理解,就是不停的运行一些东西,实际上,现在的持续集成工具除了按频率自动运行,还支持触发器,例如可以hook git pre commit(每次git提交之前执行),把持续集成工具当做平台,通过插件支持任何语言、开源项目,可以是单元测试框架、代码风格(标准)检查、在单元测试基础上生成覆盖率图表、依赖检查、DRY(代码重复程度)检查等等,PHP是开源的,你能想到的工具多了去了,全部都能集成起来,统一构建,并生成报告。我用的持续集成工具是Jenkins,可以挂载在git上,也可以挂载在github上。最近比较火的(我看到挺多开源项目用的)是travis-ci.org,只要是github上的项目,接入它就能自动检测提交(你提交的时候github回调告诉它了),按照你项目根目录的配置文件去构建,详细的你自己去官网看吧,当然支持PHP多版本了,否则你以为Yii、Laravel之类的框架为什么用它,配置文件可以直接指定版本。
  • 你要的是解决方案,我个人用的是Jenkins-PHP,我没有用它构建多个版本过,但显而易见,这种工具就是为了解决类似需求的,你可以为每个任务设置不同的PHP版本。

Jenkins安装方式它的官网有,你自己去装,装完如何安装PHP的你也自己找。下面是构建PHP项目需要的依赖,先通过pear或PHP的包管理工具Composer安装括号里面提到的项目,然后通过Jenkins后台的插件安装括号前面的项目。

<code>Checkstyle (for processing PHP_CodeSniffer logfiles in Checkstyle format)Clover PHP (for processing PHPUnit code coverage xml output)DRY (for processing phpcpd logfiles in PMD-CPD format)HTML Publisher (for publishing the PHPUnit code coverage report, for instance)JDepend (for processing PHP_Depend logfiles in JDepend format)Plot (for processing phploc CSV output)PMD (for processing PHPMD logfiles in PMD format)Violations (for processing various logfiles)xUnit (for processing PHPUnit logfiles in JUnit format)</code>

好了又困了,浏览器部分就暂时不谈了。
因为浏览器部分的兼容涉及到两个问题, CSS和Javascript。Javascript部分与PHP类似,用测试框架,写用例,每个浏览器逐一跑一遍。
不同的是CSS部分你写成什么样他都会无错显示,除了你自己看,没人知道是否符合你的预期,这里就要自己肉眼分辨了,好在有一些比较好的在线工具支持海量的操作系统、浏览器、分辨率的组合方案与快照,这个有功夫再给你找,今天先写这些。

短的代码片段,用这个网站非常方便: http://3v4l.org/

然后还可以使用 travis-ci.org 这样的集成测试服务。

holy shit! you must be a newbie~!
php版本是站长自己可以选择使用的,你何必自己去折腾各个版本,去选择自己需要的最合适的版本就行了啊,至于测试各个版本的浏览器,目前我正在用IEtester,写前端一次就要把所有浏览器都要考虑


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:PHP程序,如何自动化测试在各个PHP版本(5.3/5.4/5.5..),以及各个浏览器下能否正常工作?

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址