首页 > 编程知识 正文

php单元测试框架(php框架性能测试)

时间:2023-12-20 12:40:58 阅读:318280 作者:QFWK

本文目录一览:

php单元测试怎么做

有集成单元测试框架,phpunit。这个框架封装了常用的测试方法,比如判等,存在等方法,只要继承这个测试类,就可以调用相应的方法来测试。

单元测试一般就是测试各个接口函数,根据给定的条件,判断是否是预期的结果。单元测试主要是为了改动函数或者修改了接口的时候,测试是否影响了之前正常的功能。

php网站修改工具

PHP Expert Editor 是一个容易使用的 PHP 开发工具,它的功能照顾到初级者及专业开发人员。基于Windows平台的PHP Expert Editor是一个PHP语言的集成开发环境(IDE)。PHP Expert Editor为PHP高手提供了许多方便、实用的特性,它还为初学者提供了诸如语法检查、代码浏览、内嵌FTP、代码库管理、代码模版等易用的功能。内建的 http server 用作测试及除错(你也可以使用其他 http server), PHP 语法检查, FTP 功能, 程式码样板等功能。

PHP Expert Editor 适合PHP初学者和高级开发人员,它包括一个内部HTTP服务器和脚本器,可以进行语法检查,测试PHP代码等。

先安装后phpxedit_42.exe后,然后将目录下的phpxedit.exe覆盖到安装目录。

PHP Expert Editor 官方有4.3版本下载,但是杀毒软件居然报毒,所以还是把我收藏的4.2中文版奉献出来,完美汉化破解版,用着舒心。

一设计工具

UML和相关设计工具

-ArgoUML

UML绘图工具,支持PHPstub生成。(commercialspinoffisPosideon)–Java编写。

-UmbrelloUML

UML绘图工具,支持PHPstub生成。需要Unix/KDE。

-Dia

支持UML的绘图工具-使用AutoDia生成PHP。

-XMI2PHP

从XMI文档生成PHP代码,用XML描述UML的一种形式。

二编码工具

推荐的IDE/编辑器

-PHPEclipse

EclipseIDE的PHP插件

-PHPEdit

可能是Windows下最好的免费IDE了

-JEdit

支持PHP的IDE(plusloadsmore)。Java编写,所以平台保持独立。

-Jext

JEdit的孪生兄弟。

-gPHPEdit

Gnome/Linux下最好的(?)PHP编辑器。

-SciTE

跨平台编辑器

-PHPModeforEmacs

UnixEMACSIDE的PHPMode

三测试工具

Debuggers和Profilers

-XDebug(推荐)

出色的.debugger和profiler扩展

-AdvancedPHPDebugger

GeorgeSchlossnagle的debugger

-PEAR::Benchmark

用PHP写的Benchmarking和profiling工具

-DBG

PHPDebugger

单元测试框架

-SimpleTest(推荐)

关于mockobjects出色的文档和支持

-PEAR::PHPUnit

四部署工具

构建/部署工具

-PEARPackageManager(推荐)

允许你安装PEARpackages(通过网络),还能将你的代码打包用于安装。在命令行下执行运行。PHP编写。

-PEAR::PackageFileManager

自动生成PackageManager使用的package.xml文件。PHP编写。

-Phing

PHP的构建工具,相当于ApacheANT。在构建大型项目时值得研究。PHP编写。

-ZZ/OSSInstaller

基于PHP的安装向导,用于专业的PHP模块化应用的发布。

加速器

-TurckMMCache(强烈推荐)

集成OPCODECache,scriptencoder,profiler和动态内容缓存(readpersistence)于一体。提供Windows版本。

-PHPAccelerator(推荐)

OPCODECache

五管理工具

文档生成工具

-phpDocumentor(推荐)

用源代码注释中生成API文档(像Javadoc)。输出可以被“模版化”,还支持HTML,PDF和CHM格式。PHP编写。

-PHPXref(推荐)

创建源代码的“交叉引用”,使你能够看见一个变量/方法/函数在哪里声明以及在哪里被引用。Perl编写。

版本控制工具(此部分为Easy添加)

-CVS

开放源代码的版本控制系统,很多大型项目,包括PHP本身,都用它管理代码。

-CVSNT

用于WindowsNT(XP也可以)的CVS服务器程序

php如何进行单元测试

何为单元测试:

指对软件中的基本单元进行测试,如函数、方法等,以检查其返回值或行为是否符合预期;实际中软件是很复杂的,由许多组件构成,执行流程连贯在一起,要进行单元片段的测试,就需要为其提供执行上下文(或者说参数)和环境(比如打桩模拟一些对象)来运行,并监控其行为和返回值,为此我们就需要写出做这件事情的程序代码,这样的代码叫做测试用例。

许多测试用例有机结合在一起形成一个整体的测试,又叫做测试套件,被测试的程序代码叫做生产代码。phpunit这个软件就是用来帮助我们写测试用例并进行测试的。

php的单元测试:phpunit

在其官网有详细教程,这里介绍一些补充内容。

首先要明白phpunit软件本身就是由php语言实现,其使用是通过命令行进行的,并不是通过浏览器访问

明白这一点很重要,许多新人被卡在这里,很基础也很简单,但似乎没怎么被提及。

在官网下载后得到一个phar文件,同时下载phpunit使用文档,按照里面的安装方法进行安装,之后在命令行输入以下命令:

phpunit --help

如果显示出了帮助信息即安装成功,在命令行当前目录下建立一个测试用例为yunke.php,内容如下:

?phpuse PHPUnitFrameworkTestCase;class yunkeTest extends TestCase{public function testPushAndPop(){$stack = [];$this-assertEquals(0, count($stack));array_push($stack, 'foo');$this-assertEquals('foo', $stack[count($stack) - 1]);$this-assertEquals(1, count($stack));$this-assertEquals('foo', array_pop($stack));$this-assertEquals(0, count($stack));}}?

然后在命令行输入以下命令:

phpunit yunke

显示如下内容:

PHPUnit 5.7.12 by Sebastian Bergmann and contributors.. 1 / 1 (100%)Time: 159 ms, Memory: 7.00MBOK (1 test, 5 assertions)

恭喜,你已经成功运行了一个单元测试。

北大青鸟设计培训:学习PHP软件开发必须知道的技能?

PHP软件开发与其他语言相比,它具有开发迅速、运行效率高、安全性好、可扩展性强、开源自由等优势。

回首PHP软件开发这几年的发展,趋势势不可挡,一定是将来web程序开发的主流技术体系。

而作为PHP软件开发员这些技能你又知道多少呢?不要在SQL查询中使用*我们通常编写SQL代码在PHP软件开发中,不过切记别在SQL查询中使用通配符,特别是数据库存在多列时。

要明确指定所需行,且只获取它们。

这有利于减少所用资源,保护数据,使之变得更清晰。

不要信任用户输入信任用户输入是不科学的。

不要故作聪明作为PHP软件开发员你只需要用优雅的代码,来清楚地表明你的想法。

恰当命名变量,为代码编写文档,注重清晰而非简洁。

不要重新发明轮子PHP软件开发已经发展很长一段时间,你想到的,或许早就有人发明了。

不要恐惧求助,Github,Composer,Packagist都能帮助到你。

无论是日志、调色、性能分析器、单元测试框架、MailchimpAPI、TwitterBootstrap等都可以。

不要忽略其它语言作为PHP软件开发员,不要只局限于你专业的,而忽略其他语言,北大青鸟建议你应该合理地学习其他语言并高效地使用它们。

PHP使用类似phpunit之类做自动测试有必要吗

PHPUnit是一个用PHP编程语言开发的开源软件,是一个单元测试框架。PHPUnit由Sebastian Bergmann创建,源于Kent Beck的SUnit,是xUnit家族的框架之一。本文将探索PHPUnit,特别介绍自动化单元测试的基本用法。你需要掌握PHP编程语言的基本知识才能继续。

介绍

单元测试是对单独的代码对象进行测试的过程,比如对函数、类、方法进行测试。单元测试可以使用任意一段已经写好的测试代码,也可以使用一些已经存在的测试框架,比如JUnit、PHPUnit或者Cantata++,单元测试框架提供了一系列共同、有用的功能来帮助人们编写自动化的检测单元,例如检查一个实际的值是否符合我们期望的值的断言。单元测试框架经常会包含每个测试的报告,以及给出你已经覆盖到的代码覆盖率。

heiing

heiing

翻译于 4年前

5人顶

顶 翻译得不错哦!

安装

PHPUnit 通常以 PEAR 包,Composer bundle 或是 PHAR 文件形式存在。如果你要安装它,你需要先安装 PHP Code Coverage 依赖。在 PEAR 中,你需要天价 phpunit.de 频道,并通过命令行安装两个包:

PHP Unit Testing with PHPUnit

(注意,在输入时,默认的 XAMPP 的 PEAR 安装已经被破坏:你需要在尝试上面代码之前先安装 PEAR PHAR)。

测试一个简单的类

试试只有单一方法的简单类:

class TruthTeller

{

public function() tellTruth

{

return true;

}

}

是的,现在 tellTruth 方法总是返回 TRUE,那么我们应改怎么通过单元测试确保今后它的返回值不变?

K6F

K6F

翻译于 4年前

4人顶

顶 翻译得不错哦!

使用PHPUnit,每组测试是PHPUnit_Framework_TestCase类的一个扩展类,它提供了常用的功能,如判断。下面是一个对上述tellTruth方法的一个基本测试:

require_once 'PHPUnit/Autoload.php';

require_once 'TruthTeller.class.php';

class TruthTester extends PHPUnit_Framework_TestCase

{

function testTruthTeller()

{

$tt = new TruthTeller();

$this-assertTrue($tt-tellTruth());

}

}

请注意,您需要包括PHPUnit的自动加载器和“被测对象”,在这种情况下的TruthTeller类文件。

我们用剩余的代码要做的就是判断,如果tellTruth方法被调用时,它将返回true。这些判断是PHPUnit的核心 - 它们将决定一个测试是通过还是失败。

Holiday_

Holiday_

翻译于 4年前

2人顶

顶 翻译得不错哦!

如果你启动了命令行提示,切换到你的测试所在目录,运行 phpunit TruthTester (参数是你的测试文件名,去除 .php 扩展名),PHPUnit 将会运行文件中指定的所有它能找到的测试(测试将是名字以 test 开头的所有方法)。

PHP Unit Testing with PHPUnit

如果你回到 TruthTeller 类,并将其方法的返回值改为 FALSE,你讲看到类似下面的信息:

PHP Unit Testing with PHPUnit

这就是单元测试的核心——编写断言并判断是否通过。当先前编写并测试通过的代码开始无法通过时,你就知道有更改的代码对现有代码起了负面影响。

在现实中,你肯定需要处理比上一个更复杂的情况。比如一个常见的测试是检查下面的outputArray方法是否返回了一个特定数据结构的数组。

class ArrayTeller

{

public function outputArray()

{

return array(1,2,3);

}

}

对此方法的一个简单测试可以这样写:

class ArrayTester extends PHPUnit_Framework_TestCase

{

function testArrayTeller()

{

$at = new ArrayTeller();

$result = $at-outputArray(1);

$this-assertInternalType("array", $result);

$this-assertCount(3, $result);

$this-assertEquals(1, $result[0]);

$this-assertEquals(3, $result[2]);

}

}

如你所见,使用PHPUnit进行单元测试时可以在每一行进行多样化的检查:可以检查ArrayTeller返回的是否是一个数组,而非任何其他数据类型;可以检查数组的长度;可以检查数组中的单个值。除这些外,还有其它一些功能的断言,比如如果你需要更复杂的判断,假设要知道一个返回值是否处于两个整数的区间内,只要你能用一个IF语句的结果来表述,你就可以用断言assertTrue来测试结果。可点击随后链接来访问PHPUnit官网文档中的所有可用断言列表,。

单元测试片面的讲就是编写覆盖被测方法所有预期行为的测试,最好基于规范文档,不过如果你在编写覆盖现有代码的单元测试,将其视为白盒测试的一种形式更有用。如果你知道一个如下的简单切换方法:

class Switcher

{

public function aOrB($switch, $a, $b)

{

if ($switch == TRUE)

{

return $a;

}

else

{

return $b;

}

}

}

… 你就知道需要编写两个测试,分别针对一种情形。但你开始质疑你是如何知道这些的——如果以后方法变为 True 返回 $a,False 返回 $b,其它情形抛出一个异常,理想情况是规范文档中的某处有提及。无论如何,上面方法的测试如下:

class SwitcherTester extends PHPUnit_Framework_TestCase

{

function testSwitchTrue()

{

$switcher = new Switcher();

$result = $switcher-aOrB(TRUE, 1, 2);

$this-assertEquals(1, $result);

}

function testSwitchFalse()

{

$switcher = new Switcher();

$result = $switcher-aOrB(FALSE, 1, 2);

$this-assertEquals(2, $result);

}

}

运行两个测试同在命令行运行 phpunit SwitcherTester 一样简单。

K6F

使用 setUp,简化多个测试

当你的测试需要覆盖越来越多的输入组合及数据设置时,使用函数: setUp 将会非常有帮助。setUp 是 PHPUnit_Framework_TestCase 类中你可以覆写以在类中所有及每个测试运行前运行的代码。(注意,还有一个简单的方法,tearDown,它会在所有测试结束后立即运行——这对关闭 socket 及文件指针很有帮助)

下面是如何精简代码的一个简单的例子。尝试一个依赖一些对象数据何输入的方法。

class DataTeller

{

private $data;

public function __construct($data)

{

$this-data = $data;

}

public function outputData($switch)

{

if ($switch == TRUE)

{

if (!empty($this-data))

return $this-data;

else

return FALSE;

}

else

{

return "switch off";

}

}

}

如果你继续之前幼稚的方法,我们需要编写三个测试,并实例化三个 DataTeller 对象,每个测试一次。然而,通过 setUp,我们可以讲对 DataTellers对象的创建外包,至少是3个中的两个。只有最后一个测试需要新的 DataTeller 被创建。

class DataTellerTester extends PHPUnit_Framework_TestCase

{

private $dt;

protected $data = "valid data";

function setUp()

{

$this-dt = new DataTeller($this-data);

}

function testOutputArraySwitchOff()

{

$this-assertEquals("switch off", $this-dt-outputData(FALSE));

}

function testOutputArraySwitchOn()

{

$this-assertEquals($this-data, $this-dt-outputData(TRUE));

}

function testOutputArrayEmptySwitchOn()

{

$new_dt = new DataTeller("");

$this-assertEquals(FALSE, $new_dt-outputData(TRUE));

}

}

PHPUnit使用断言来告诉你你所测试的代码是否如你预期那样工作。学到这里,你现在应该已经可以写一些简单的测试来覆盖一些功能相对比较独立的类了。但当要测试一些互相有交互操作的类时,就要面对真正的挑战了。为此,请收听下一次讲解,学习如何为静态类写测试,以及如何使用 mock(模拟对象)和 stubs(存根,桩点)来孤立你要测试的对象与其所在环境中其他代码的联系。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。