首先,我不知道它是否称为单元测试。如果它有不同的名称,请随时纠正我。
我目前正在开发这样的网络应用程序。
假设我正在开发一个表单来将值保存到数据库中。我开发 HTML 和 PHP。我不时在浏览器中按 F5 并检查 HTML/jQuery 是否没有错误,并且 PHP 不会给出错过分号之类的错误。
当它完成并且一切都准备好进行测试时,我开始测试我的一小部分代码。像;
- -$_POST 数组是否正确地从表单文件中获取值?(我用 print_r 测试)
- -“$email”变量是否被正确清理为有效的电子邮件?(我用不同的可能性对其进行测试,例如:aaa@bbb、aa@bb.com、a@@b.net 等)
- - 提交的表单是否通过所有控制,并成功插入数据库?(我检查了我的 MySQL 表。)
- - 表单是否正确显示错误/成功消息?
- -...ETC。
如果它以正确的值工作,并且以错误的值失败;我相信表单按预期工作并且没有错误,所以我转向其他事情。
我不想这样做,而是想确保一切正常运行,否则会在不向浏览器发送垃圾邮件 F5 的情况下通知我问题。
像这样;
<?php
/* Unit Testing Start --
-ensure: isset($_POST['submit']) returns TRUE;
-ensure: isset($email) returns TRUE;
-ensure: isValidEmail($email) returns TRUE;
-ensure: connectDatabase() returns TRUE;
-ensure: getMysqlAffectedRows() returns 1;
-ensure: hasErrors() returns false;
*/
?>
我的表单代码,使用我上面发布的功能。
当它运行时,它应该向我显示这样的消息:(最好也记录它)
Test complete. Tested (6) possibilities, (4) succeeded, (2) failed.
Failed 1: isValidEmail() returned FALSE, expected: TRUE.
Failed 2: getMysqlAffectedRows returned NULL/0, expected INTEGER 1.
这样的事情会节省我很多时间,并且更容易维护我的代码。
我不想这样做:
$email = 'xxx@yyy.com';
echo isValidEmail($email) ? 'true' : 'false';
然后我必须从我的 PHP 脚本中删除这些行。测试必须永远留在那里,除非我手动删除它们。它们应该像评论一样在生产网站中,它们不会被执行。但是,在我的开发 PC 中,我将安装我需要安装的任何东西,并且必须解析/记录这些评论。
是的。就这样。现在进入问题:
有可能与PHP有关吗?如果是这样,我该怎么做?
它叫什么,单元测试,还是什么?
你们如何测试你开发的任何东西?
你们如何在不担心的情况下设法开发大型 Web 应用程序?“如果我改变这个功能,整个网站可能会崩溃。”?另外,您如何确定更改功能没有破坏任何东西?X 页面可能工作正常,但 Y 页面可能会因为您之前没有想到的事情而损坏。比如,X 页除以 3 可以正常工作,但是 Y 页除以 0 肯定会出错,但你只检查了 X 页?
如果您能回答我的问题并帮助我成为更好的开发人员,我将非常高兴。
谢谢!