selenium
http://seleniumhq.org/docs/
http://wenku.baidu.com/view/ae5b5f0e7cd184254b353549.html
http://www.ibm.com/developerworks/cn/java/wa-selenium-ajax/
http://www.javaeye.com/topic/107276
验收测试管理工具FitNesse
http://www.testage.net/html/85/n-1085.html
http://hi.bccn.net/space-21499-do-blog-id-15443.html
PHP资源收集
http://www.foolbirds.com/php-resources
continuum
http://continuum.apache.org/
From:建鑫 2010-07-16
PHPUnit3.0发布 集成Selenium组件!!!
Selenium RC是一款测试工具,允许你为web应用编写自动化的用户接口测试,支持任何程序设计语言、任何HTTP站点以及任何主流浏览器。它使用Selenium Core,这是个利用JavaScript执行自动浏览器任务的库。Selenium测试直接运行于浏览器中,就像真实做的那样。这些测试既可用于验收测试(通过在集成系统上执行更高级的测试而不是只独立地测试系统的各个单元),又可用于浏览器兼容性测试(通过测试不同操作系统和浏览器上的web应用)。
----------------------------------------------------------------------------------------------------------------------------------------------------------------
近日,Sebastian Bergmann宣布PHPUnit 3.0版本正式发布。此次发布的PHPUnit 3.0主要对几大开源PHP应用的调试,并加入了许多新的特性和修正了许多的Bug。
新特性
PHPUnit 3.0引入了一系列的新特性以便用户更加方便地用它进行调试,并且使得3版本比以前任何版本的功能都更加丰富。
伪对象调试
你如何才能测试一个对象里面的方法被另外一个方法调用的时候运行是正确的呢?你如何可以忽略外部资源而单独进行调试呢?伪对象和局部测试可以为你解决这些问题。部分提供答复对这些和其它问题。
集成了Selenium组件
PHPUnit 3 集成了Selenium RC组件来提供更好的调试 (更高层次的平台测试来代替系统单一模块的独立测试)和浏览器兼容性测试(在不同的操作系统和浏览器中测试web应用) 。
代码覆盖面分析
怎么评估你的测试呢?怎么发现没有被测试的代码,或者换句话说,还没有被涉及到的代码呢?你怎么衡量代码测试的完整性? 所有这些问题可以由称为代码覆盖面分析的功能组件来解决。PHPUnit 3的一个新的特性就是为测试提供了更为详细的代码覆盖面详细信息。
http://blog.chinaunix.net/u1/57558/showart_519548.html
http://seleniumhq.org/docs/
http://wenku.baidu.com/view/ae5b5f0e7cd184254b353549.html
http://www.ibm.com/developerworks/cn/java/wa-selenium-ajax/
http://www.javaeye.com/topic/107276
验收测试管理工具FitNesse
http://www.testage.net/html/85/n-1085.html
http://hi.bccn.net/space-21499-do-blog-id-15443.html
PHP资源收集
http://www.foolbirds.com/php-resources
continuum
http://continuum.apache.org/
From:建鑫 2010-07-16
PHPUnit3.0发布 集成Selenium组件!!!
Selenium RC是一款测试工具,允许你为web应用编写自动化的用户接口测试,支持任何程序设计语言、任何HTTP站点以及任何主流浏览器。它使用Selenium Core,这是个利用JavaScript执行自动浏览器任务的库。Selenium测试直接运行于浏览器中,就像真实做的那样。这些测试既可用于验收测试(通过在集成系统上执行更高级的测试而不是只独立地测试系统的各个单元),又可用于浏览器兼容性测试(通过测试不同操作系统和浏览器上的web应用)。
----------------------------------------------------------------------------------------------------------------------------------------------------------------
近日,Sebastian Bergmann宣布PHPUnit 3.0版本正式发布。此次发布的PHPUnit 3.0主要对几大开源PHP应用的调试,并加入了许多新的特性和修正了许多的Bug。
新特性
PHPUnit 3.0引入了一系列的新特性以便用户更加方便地用它进行调试,并且使得3版本比以前任何版本的功能都更加丰富。
伪对象调试
你如何才能测试一个对象里面的方法被另外一个方法调用的时候运行是正确的呢?你如何可以忽略外部资源而单独进行调试呢?伪对象和局部测试可以为你解决这些问题。部分提供答复对这些和其它问题。
集成了Selenium组件
PHPUnit 3 集成了Selenium RC组件来提供更好的调试 (更高层次的平台测试来代替系统单一模块的独立测试)和浏览器兼容性测试(在不同的操作系统和浏览器中测试web应用) 。
代码覆盖面分析
怎么评估你的测试呢?怎么发现没有被测试的代码,或者换句话说,还没有被涉及到的代码呢?你怎么衡量代码测试的完整性? 所有这些问题可以由称为代码覆盖面分析的功能组件来解决。PHPUnit 3的一个新的特性就是为测试提供了更为详细的代码覆盖面详细信息。
http://blog.chinaunix.net/u1/57558/showart_519548.html
openSUSE11.3 是一个自由的、基于 Linux 的操作系统,适用于您的个人电脑、笔记本电脑或服务器。您可以畅游网络、管理您的电子邮件与照片、办公、欣赏视频与音乐。 have a lot of fun!
Release in 5 hours...
德国人做的东西就是精细,Tencent也用的是这个suse,当然是企业阉割版本了,为此,同样开源版本的opensuse同样值得期待。
下载地址:http://www.opensuse.org/zh-cn/
Release in 5 hours...
德国人做的东西就是精细,Tencent也用的是这个suse,当然是企业阉割版本了,为此,同样开源版本的opensuse同样值得期待。
下载地址:http://www.opensuse.org/zh-cn/
./configure --prefix=/home/service/http/apache2/ --sysconfdir=/etc/ --enable-so --with-mpm=worker --enable-ssl --with-ssl=/usr/local/ssl/ --enable-rewrite --disable-autoindex --disable-userdir --disable-autoindex
编译加上:
--disable-userdir 禁用用户有自己的HTML目录
#
# UserDir: The name of the directory that is appended onto a user's home
# directory if a ~user request is received.
#
#UserDir public_html
UserDir disabled
编译加上:
--disable-userdir 禁用用户有自己的HTML目录
#
# UserDir: The name of the directory that is appended onto a user's home
# directory if a ~user request is received.
#
#UserDir public_html
UserDir disabled
昨天做测试的时候遇到一个问题,做好的SWF在Flash AS3中调试通过,但是发布到html中之后就无法得到数据了。查了一些资料之后找到了解决办法。这里感谢 剑心 提供帮助,以及同事若水三千提供Java代码及日志记录。
阅读全文

笔记本没串口RS232的接口,这样就启动不了ARM9实验箱,后来发现了用USB转串口的线解决
阅读全文

怎么不是image/pjpeg呀,郁闷,我说桌面掉不出图片,类型不对。
怎么改成上传图片识别为image/pjpeg?是flash上传的缺陷?
$_FILES
Array
(
[Filedata] => Array
(
[name] => 7378.jpg
[type] => application/octet-stream
[tmp_name] => /tmp/phpRxNdJ6
[error] => 0
[size] => 1244385
)
)
进来时 $_FILES 都错了,明白了,我以为是我的程序问题!!!
$typeMap = array ('image/gif' => 'gif', 'image/jpeg' => 'jpg', 'image/png' => 'png','image/pjpeg'=>'jpg','application/octet-
stream'=>'jpg');
怎么改成上传图片识别为image/pjpeg?是flash上传的缺陷?
$_FILES
Array
(
[Filedata] => Array
(
[name] => 7378.jpg
[type] => application/octet-stream
[tmp_name] => /tmp/phpRxNdJ6
[error] => 0
[size] => 1244385
)
)
进来时 $_FILES 都错了,明白了,我以为是我的程序问题!!!
$typeMap = array ('image/gif' => 'gif', 'image/jpeg' => 'jpg', 'image/png' => 'png','image/pjpeg'=>'jpg','application/octet-
stream'=>'jpg');
问题:
如果你的Firefox升级到了最新版,同时也再使用Flash Debug Player对Flash和Flex应用程序进行调试,那么你应该已经注意到Firefox3.6.6支持插件的方式发生了改变。
今天我不是来警告你的,而是让你避免这个错误继续愉快的工作。Firefox控制进程、关闭进程是因为它发现了一些错误的东西。这一操作使你的插件完全无法工作从而阻止你进行程序调试。
这同时也产生了一个问题,因为任何一个不会正确地处理错误并抛出空对象的网站都会导致Flash插件失效。
解决:
你需要进入Firefox的配置设置项并找出dom.ipc.plugins.enabled.npswf32.dll,双击它使之无效。同时你也要把dom.ipc.plugins.timeoutSecs设为-1。现在,重启你的浏览器,一切OK。
如果你的Firefox升级到了最新版,同时也再使用Flash Debug Player对Flash和Flex应用程序进行调试,那么你应该已经注意到Firefox3.6.6支持插件的方式发生了改变。
今天我不是来警告你的,而是让你避免这个错误继续愉快的工作。Firefox控制进程、关闭进程是因为它发现了一些错误的东西。这一操作使你的插件完全无法工作从而阻止你进行程序调试。
这同时也产生了一个问题,因为任何一个不会正确地处理错误并抛出空对象的网站都会导致Flash插件失效。
解决:
你需要进入Firefox的配置设置项并找出dom.ipc.plugins.enabled.npswf32.dll,双击它使之无效。同时你也要把dom.ipc.plugins.timeoutSecs设为-1。现在,重启你的浏览器,一切OK。
虽然Drupal核心的运行只需要你的服务器分配8MB的内存,但是根据你站点上使用的模块数量,你可能需要增加些内存分配。当你访问?q=admin/moudles时会加载你站点上的所有模块,不管你是否启用。如果你出现了白屏,你只有两个选择:增加分配给PHP的内存,或者删除不使用的模块。
根据你的主机的不同,有几个地方都可以完成这个配置,一般是php.ini,或者htaccess,具体要看你的主机状态。
比如:
在你的php.ini文件里设置memory_limit = 12M(推荐使用,如果你拥有这个权限的话)
在你的sites/default/settings.php文件里设置ini_set('memory_limit','12M');
在你的Drupal根目录下的.htaccess文件中设置php_value memory_limit 12M
你需要做点试验来确定最适合你的值。
阅读全文
根据你的主机的不同,有几个地方都可以完成这个配置,一般是php.ini,或者htaccess,具体要看你的主机状态。
比如:
在你的php.ini文件里设置memory_limit = 12M(推荐使用,如果你拥有这个权限的话)
在你的sites/default/settings.php文件里设置ini_set('memory_limit','12M');
在你的Drupal根目录下的.htaccess文件中设置php_value memory_limit 12M
你需要做点试验来确定最适合你的值。

这里直接是取主场景上的BitmapData,场景上的任何对象将最终转为图片,值得注意的是stage.width为场景上绘制对象的宽,而非整个场景的宽,PNGEncoder是来自adobe的官方的类库,可将图片转为BitmapData,它支持转jpg格式,并可以设置图片精度,不过png支持透明,颜色更棒!你可以在http://code.google.com/p/as3corelib/下载到这个类库:corelib ActionScript 3 Library,我的程序就用到了com.adobe.images下的3个类BitString.as、JPGEncoder.as、PNGEncoder.as
#
import com.adobe.images.*;
#
import flash.net.*;
#
import flash.display.*;
#
import flash.utils.ByteArray;
#
var myBitmapData:BitmapData=new BitmapData(stage.width,stage.height,true,0);
#
myBitmapData.draw(stage);
#
//var jpegEnc:JPGEncoder= new JPGEncoder(100);
#
//var dat:ByteArray = jpegEnc.encode(myBitmapData);
#
var dat:ByteArray = PNGEncoder.encode(myBitmapData);
#
var req:URLRequest = new URLRequest( "http://localhost/img/psavepic.php");
#
req.data = dat;
#
req.method = URLRequestMethod.POST;
#
req.contentType = 'application/octet-stream ';
#
var loader:URLLoader = new URLLoader();
#
loader.addEventListener(Event.COMPLETE, completeHandler);
#
loader.addEventListener(IOErrorEvent.IO_ERROR,errorHandler);
#
function completeHandler(event:Event):void{
#
trace("图片上传成功");
#
}
#
function errorHandler(event:IOErrorEvent):void{
#
trace("图片上传失败");
#
}
#
loader.dataFormat = URLLoaderDataFormat.BINARY;
#
loader.load(req);
savepic.php获得从flash传过来的图片数据,写入到文件,数据有点特别,所以$_REQUEST是取不到,要用$HTTP_RAW_POST_DATA,当然也可以用jsp、asp、asp.net来实现,不过就没有php的代码简单高效了!i like php!
1.
<?php
2.
if(isset($HTTP_RAW_POST_DATA)){
3.
$name =time().'.jpg';
4.
$im = fopen($name,'a');
5.
fwrite($im,$HTTP_RAW_POST_DATA);
6.
fclose($im);
7.
}
8.
?>
public function SaveFlashJpgOrGif(array $data)
{
$input = $this->parseFormParams($data['input']);
$qq = ".".$input['FQQ'];
$uploadPicKinds = ".".$input['uploadPicKinds'];
if (isset($GLOBALS["HTTP_RAW_POST_DATA"]))
{
$jpg = $GLOBALS["HTTP_RAW_POST_DATA"];
}else
{
//failed
echo "HTTP_RAW_POST_DATA is Empty";
exit;
}
$path = ROOT_PATH."view/data/";
$fileName = $qq.date("Y_m_d_H_i_s").$uploadPicKinds; //QQ+date
$filename=$path.$fileName;
file_put_contents($filename,$jpg);
$this->set(__CLASS__."_".__FUNCTION__,$fileName);
}
来源:http://hi.baidu.com/jhmis/blog/item/68a0fd2ab89567f2e7cd4030.html
继续参考:http://www.04js.cn/content.asp?id=1097
调试另外一种post的上传方式:首先是打印$_FILE后去接受变量即可!
#
import com.adobe.images.*;
#
import flash.net.*;
#
import flash.display.*;
#
import flash.utils.ByteArray;
#
var myBitmapData:BitmapData=new BitmapData(stage.width,stage.height,true,0);
#
myBitmapData.draw(stage);
#
//var jpegEnc:JPGEncoder= new JPGEncoder(100);
#
//var dat:ByteArray = jpegEnc.encode(myBitmapData);
#
var dat:ByteArray = PNGEncoder.encode(myBitmapData);
#
var req:URLRequest = new URLRequest( "http://localhost/img/psavepic.php");
#
req.data = dat;
#
req.method = URLRequestMethod.POST;
#
req.contentType = 'application/octet-stream ';
#
var loader:URLLoader = new URLLoader();
#
loader.addEventListener(Event.COMPLETE, completeHandler);
#
loader.addEventListener(IOErrorEvent.IO_ERROR,errorHandler);
#
function completeHandler(event:Event):void{
#
trace("图片上传成功");
#
}
#
function errorHandler(event:IOErrorEvent):void{
#
trace("图片上传失败");
#
}
#
loader.dataFormat = URLLoaderDataFormat.BINARY;
#
loader.load(req);
savepic.php获得从flash传过来的图片数据,写入到文件,数据有点特别,所以$_REQUEST是取不到,要用$HTTP_RAW_POST_DATA,当然也可以用jsp、asp、asp.net来实现,不过就没有php的代码简单高效了!i like php!
1.
<?php
2.
if(isset($HTTP_RAW_POST_DATA)){
3.
$name =time().'.jpg';
4.
$im = fopen($name,'a');
5.
fwrite($im,$HTTP_RAW_POST_DATA);
6.
fclose($im);
7.
}
8.
?>
public function SaveFlashJpgOrGif(array $data)
{
$input = $this->parseFormParams($data['input']);
$qq = ".".$input['FQQ'];
$uploadPicKinds = ".".$input['uploadPicKinds'];
if (isset($GLOBALS["HTTP_RAW_POST_DATA"]))
{
$jpg = $GLOBALS["HTTP_RAW_POST_DATA"];
}else
{
//failed
echo "HTTP_RAW_POST_DATA is Empty";
exit;
}
$path = ROOT_PATH."view/data/";
$fileName = $qq.date("Y_m_d_H_i_s").$uploadPicKinds; //QQ+date
$filename=$path.$fileName;
file_put_contents($filename,$jpg);
$this->set(__CLASS__."_".__FUNCTION__,$fileName);
}
来源:http://hi.baidu.com/jhmis/blog/item/68a0fd2ab89567f2e7cd4030.html
继续参考:http://www.04js.cn/content.asp?id=1097
调试另外一种post的上传方式:首先是打印$_FILE后去接受变量即可!
<?php
$str="sdfsafasdfasdfa";
$len=strlen($str);
header("ContentType:APPLICATION/OCTET-STREAM");
header("Content-Disposition:attachment;filename=Test.htm");
header("Content-Length:$len");
echo $str;
?>
<?php
$headers = apache_request_headers();
foreach ($headers as $header => $value) {
echo "$header: $value <br />\n";
}
?>
<?php
/**
* 功能: 套接字
* 作者: qh663
* 参数: string $url 网址,如:[url]http://qh8.net/php/index.php?abc=123[/url]
* 参数: bool $get_header 是否返回header标头
* 参数: bool $real_url 用于测试网址是否正确
* 返回: bool/string
*/
function socket($url, $get_header = false,$real_url = false){
$arr = explode('/',$url);
$host = $arr[2];
unset($arr[0], $arr[1], $arr[2]);
$path = '/'.implode('/', $arr);
unset($arr);
$service_port = getservbyname('www', 'tcp');
$address = gethostbyname($host);
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket >= 0) {
$result = socket_connect($socket, $address, $service_port);
if ($result >= 0) {
$in = "HEAD $path HTTP/1.1\r\n";
$in .= "Host: $host\r\rn";
$in .= "Connection: Close\r\n\r\n";
socket_write($socket, $in, strlen($in));
if($real_url){
if(strpos(socket_read($socket, 15), '200')) return true;
}elseif($get_header){
while ( $out = socket_read($socket, 512)){
$re .= $out;
}
return $re;
}
socket_close($socket);
}
}
return false;
}
?>
//test1 发送一个socket,多线程
//(此例在当前目录新建5个文件 1_tmp.txt、2_tmp.txt、3_tmp.txt、4_tmp.txt、5_tmp.txt)
if(empty($_GET['str'])){
$url = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['SCRIPT_NAME'];
while ($a++ < 5){
socket("$url?str={$a}_tmp.txt");
}
} else {
fopen($_GET['str'], "w");;
die();
}
$u = 'http://down1.sz1001.net/up/小型软件2_0810/TomatoGhostXP.rar';
echo "<pre>";
//test2 返回一个地址的header,实验证明运行速度比get_headers更快
echo socket($u,true);
//test3 测试页面是否存在,实验证明运行速度比get_headers更快
echo socket($u,true,true) ? "\n网址正确": "\n网址错误";
文章引用自:http://www.phpx.com/happy/thread-119670-1-1.html
<?php
//设置文件头;
Header("Content-type: image/PNG");
function make_rand($length="32"){//验证码文字生成函数
$str="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
$result="";
for($i=0;$i<$length;$i++){
$num[$i]=rand(0,61);
$result.=$str[$num[$i]];
}
return $result;
}
$checkcode = make_rand(5);
//生成验证码图片;
$im = imagecreate(60,22);
$black = ImageColorAllocate($im, 0,0,0);
$white = ImageColorAllocate($im, 255,255,255);
imagefill($im, 68, 30, $gray);
$text = $checkcode;
$font = 'c:\\WINDOWS\\Fonts\\arial.ttf';
for ($i=0;$i<strlen($text);$i++)
{
$tmp =substr($text,$i,1);
$array = array(-1,1);
$p = array_rand($array);
$an = $p*mt_rand(1,20);//角度
$size = 10;
imagettftext($im,$size,$an,10+$i*$size,15,$white,$font,$tmp);
}
//将五位验证码绘入图片;
//imagestring($im, 5, 8, 3, $checkcode, $black);
//加入干扰象素;
$count = 150;//干扰像素的数量
for($i=0; $i<$count; $i++){
$randcolor = ImageColorallocate($im,rand(0,255),rand(0,255),rand(0,255));
imagesetpixel($im, rand()%70 , rand()%30 , $randcolor);
}
//以PNG格式将图像输出到浏览器或文件;
ImagePNG($im);
//销毁一图像,释放与image关联的内存;
ImageDestroy($im);
?>
来源:http://blog.sina.com.cn/s/blog_53fa176f01008tby.html
服务器apache有一模块可以自动生成一个cookie,但是此模块必须要在特定的域名下A才可以。但是现在要在B域名下使用此cookie,没有办法只好中转一次了。结合php和js实现在B域名下设置cookie。
A下建立一个php文件:
<?php
echo "cookiename = \"" .$_COOKIE[' cookiename']. "\";";
?>
B下用js获取并设置Cookie
<script src = "http://www.a.com/cookie.php"></script>
<script>
function getCookie(name)
{
var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
if(arr=document.cookie.match(reg)) return unescape(arr[2]);
else return null;
}
function SetCookie(sName, sValue)
{
document.cookie = sName + "=" + escape(sValue) + "; expires=Tue, 02 Jun 2037 20:00:00 GMT";
}
if (!getCookie("cookiename"))
{
SetCookie("cookiename ",cookiename);
}
</script>
这样就会在B下生成和A域名同样的cookies了。
本来的考虑是在b域名下也用php设置cookies。但是在服务器上用php读取http://www.a.com/cookie.php,是服务器获取的cookie,并不是每个客户自己获取的cookie,所以暂时只是想到这个办法。
来源:http://blog.sina.com.cn/s/blog_53fa176f01008tbx.html
A下建立一个php文件:
<?php
echo "cookiename = \"" .$_COOKIE[' cookiename']. "\";";
?>
B下用js获取并设置Cookie
<script src = "http://www.a.com/cookie.php"></script>
<script>
function getCookie(name)
{
var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
if(arr=document.cookie.match(reg)) return unescape(arr[2]);
else return null;
}
function SetCookie(sName, sValue)
{
document.cookie = sName + "=" + escape(sValue) + "; expires=Tue, 02 Jun 2037 20:00:00 GMT";
}
if (!getCookie("cookiename"))
{
SetCookie("cookiename ",cookiename);
}
</script>
这样就会在B下生成和A域名同样的cookies了。
本来的考虑是在b域名下也用php设置cookies。但是在服务器上用php读取http://www.a.com/cookie.php,是服务器获取的cookie,并不是每个客户自己获取的cookie,所以暂时只是想到这个办法。
来源:http://blog.sina.com.cn/s/blog_53fa176f01008tbx.html
虚拟机 :VMware.Workstation.v7.0
Guest operating system 'fedora' is not supported.
Please select a guest operating system from the General page on the Options tab of Virtual Machine Settings.
1 选择,稍后安装系统
2 选择red hat linux
3点击customize hardware
4 加入fc系统
完成,这样就可以了,power on ,ok
来源:http://blog.163.com/prevBlogPerma.do?host=sunkesheng@126&srl=3600917420104260226475&mode=prev
Guest operating system 'fedora' is not supported.
Please select a guest operating system from the General page on the Options tab of Virtual Machine Settings.
1 选择,稍后安装系统
2 选择red hat linux
3点击customize hardware
4 加入fc系统
完成,这样就可以了,power on ,ok
来源:http://blog.163.com/prevBlogPerma.do?host=sunkesheng@126&srl=3600917420104260226475&mode=prev
终于有了替代Visio的免费软件—— EDraw Mind Map(主页|视频教程|功能示意图)。这款于2007年10月最新发布 V1.0的国产免费软件,终结了流程图软件“好用则价高,免费则难用”的局面。它体积小巧、功能丰富、作为免费软件,完全可以满足普通用户绘制流程图的需求。
|出品公司:EDraw Soft
|当前版本:V1.0(2007-10-11)
|下载链接:EDrawMindMap.exe 7.8MB
下载:http://xbeta.info/edraw-guide.htm
亿图图示专家 ((EDraw Max) V4.6 绿色版
http://www.zhuaijun.cn/archives/category/waitrruby
http://hi.baidu.com/duangr/blog/item/45b57f2634fa12108a82a14f.html
做自动化测试也有一年多了,回想起来觉得这一年收获很多。写在这里鞭策一下自己。
最初接触自动化测试是QTP + VBS来实现的,描述性编程只体会到了一点点就拿来反复的用,当时也就知道如何去让脚本代替手动去测一些需要回归的东西。最主要的是框架的搭建,至于如何实现其实并不是太难。VBScript的语法并不复杂,不过这是相对于有一定编程经验的人来说的。因为语言通常是这样,一通百通。看一下,记住语法规则和特征就差不多可以用了。而且vbs的语法相对简单,建议新手可以通过这样的方式入门,因为如果不会写,可以用QTP的录制功能先录一遍,然后再模仿着写一些脚本去运行,看看能否替代录制的脚本去执行动作。这个阶段最大的失误就是没有仔细去看经理搭建的自动化测试框架。
后来因为公司业务的需要,在新的项目中改用了celerity+JRuby+cucumber来做自动化,初次接触ruby,经理给我们培训了2周就开始做了。由于celerity和cucumber是新加坡的GTO推荐的开源测试工具,是一个很新的工具,国外的版本才0.3,所以国内几乎找不到资料,全部要去国外网站找(就算是国外,用的人也不多),一开始确实困难重重。不过celerity这个工具用的蛮爽,无界面,全部加载到内存中运行,速度超快(尤其在用了watir以后感受更深),只不过对弹出的对话框没有很好的解决办法(这也是后来另外一个项目改用watir的原因之一),做了两个月以后,因为工作安排的需要,我又被调去做新的项目的自动化测试,初次接触watir。
说来也有趣,当时仍然打算用celerity来做,但是发现celerity对Ajax形成的页面支持的不好,因为celerity读取页面是一下加载到内存中的,对于需要服务器响应生成页面的形式,不太感冒。于是向经理推荐了watir这款工具。watir这款工具总的来说挺好的,虽然工具本身还是存在一定的bug的,比如waitr 1.6.5对click_no_wait的支持反而没有1.6.2的好,但是也有对应的方法去解决了。如果有大牛能通过修改源码来解决这个问题,就真是造福于民了。之前想了很多总结性的话,现在脑子又混乱了。大家就当看着好玩吧。
收获:工作2年多了,觉得在工作中学到的知识非常非常多。专业知识,沟通技巧,独立解决问题的能力,团队合作能力,英语交流等等都得到了巨大的提高,虽然有时候很浮躁,但是能够及时的让自己清醒。
缺点:软件测试基础理论知识太欠缺,脚本语言基础知识不牢,英语口语需要提高,只会2种脚本语言,太单一。测试领域中很多专业测试都只听过,没做过,比如性能测试,白盒测试,安全性测试等等。
希望接下来的时间能够踏踏实实的工作,不要受到外界影响,虽然普遍都认为测试不如开发,但是我希望有朝一日我能告诉那些做开发的同学,你会的我都会,你不会的我也会。
来源:http://www.testwo.com/space-1213-do-blog-id-463.html
http://hi.baidu.com/duangr/blog/item/45b57f2634fa12108a82a14f.html
做自动化测试也有一年多了,回想起来觉得这一年收获很多。写在这里鞭策一下自己。
最初接触自动化测试是QTP + VBS来实现的,描述性编程只体会到了一点点就拿来反复的用,当时也就知道如何去让脚本代替手动去测一些需要回归的东西。最主要的是框架的搭建,至于如何实现其实并不是太难。VBScript的语法并不复杂,不过这是相对于有一定编程经验的人来说的。因为语言通常是这样,一通百通。看一下,记住语法规则和特征就差不多可以用了。而且vbs的语法相对简单,建议新手可以通过这样的方式入门,因为如果不会写,可以用QTP的录制功能先录一遍,然后再模仿着写一些脚本去运行,看看能否替代录制的脚本去执行动作。这个阶段最大的失误就是没有仔细去看经理搭建的自动化测试框架。
后来因为公司业务的需要,在新的项目中改用了celerity+JRuby+cucumber来做自动化,初次接触ruby,经理给我们培训了2周就开始做了。由于celerity和cucumber是新加坡的GTO推荐的开源测试工具,是一个很新的工具,国外的版本才0.3,所以国内几乎找不到资料,全部要去国外网站找(就算是国外,用的人也不多),一开始确实困难重重。不过celerity这个工具用的蛮爽,无界面,全部加载到内存中运行,速度超快(尤其在用了watir以后感受更深),只不过对弹出的对话框没有很好的解决办法(这也是后来另外一个项目改用watir的原因之一),做了两个月以后,因为工作安排的需要,我又被调去做新的项目的自动化测试,初次接触watir。
说来也有趣,当时仍然打算用celerity来做,但是发现celerity对Ajax形成的页面支持的不好,因为celerity读取页面是一下加载到内存中的,对于需要服务器响应生成页面的形式,不太感冒。于是向经理推荐了watir这款工具。watir这款工具总的来说挺好的,虽然工具本身还是存在一定的bug的,比如waitr 1.6.5对click_no_wait的支持反而没有1.6.2的好,但是也有对应的方法去解决了。如果有大牛能通过修改源码来解决这个问题,就真是造福于民了。之前想了很多总结性的话,现在脑子又混乱了。大家就当看着好玩吧。
收获:工作2年多了,觉得在工作中学到的知识非常非常多。专业知识,沟通技巧,独立解决问题的能力,团队合作能力,英语交流等等都得到了巨大的提高,虽然有时候很浮躁,但是能够及时的让自己清醒。
缺点:软件测试基础理论知识太欠缺,脚本语言基础知识不牢,英语口语需要提高,只会2种脚本语言,太单一。测试领域中很多专业测试都只听过,没做过,比如性能测试,白盒测试,安全性测试等等。
希望接下来的时间能够踏踏实实的工作,不要受到外界影响,虽然普遍都认为测试不如开发,但是我希望有朝一日我能告诉那些做开发的同学,你会的我都会,你不会的我也会。
来源:http://www.testwo.com/space-1213-do-blog-id-463.html