<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Jaunty@软件测试，音乐，还有不一样的生活 &#187; 软件测试</title>
	<atom:link href="http://jaunty.me/blog/category/%e8%bd%af%e4%bb%b6%e6%b5%8b%e8%af%95/feed/" rel="self" type="application/rss+xml" />
	<link>http://jaunty.me/blog</link>
	<description>软件测试，自动化测试，QTP，Loadrunner，Java，软件开发，性能测试，开源</description>
	<lastBuildDate>Mon, 25 Jul 2011 16:43:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>JAVA调PHP接口测试需要注意的一些特点</title>
		<link>http://jaunty.me/blog/2011/07/java%e8%b0%83php%e6%8e%a5%e5%8f%a3%e6%b5%8b%e8%af%95%e9%9c%80%e8%a6%81%e6%b3%a8%e6%84%8f%e7%9a%84%e4%b8%80%e4%ba%9b%e7%89%b9%e7%82%b9/</link>
		<comments>http://jaunty.me/blog/2011/07/java%e8%b0%83php%e6%8e%a5%e5%8f%a3%e6%b5%8b%e8%af%95%e9%9c%80%e8%a6%81%e6%b3%a8%e6%84%8f%e7%9a%84%e4%b8%80%e4%ba%9b%e7%89%b9%e7%82%b9/#comments</comments>
		<pubDate>Wed, 06 Jul 2011 07:56:21 +0000</pubDate>
		<dc:creator>jaunty</dc:creator>
				<category><![CDATA[软件测试]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[接口测试]]></category>

		<guid isPermaLink="false">http://jaunty.me/blog/?p=215</guid>
		<description><![CDATA[ java是通过系统调用，执行php程序。  就像在命令行执行php程序一样。  高强度用system调用，性能开销较大。 如果双方都遵守http协议的话 本身没啥语言方面的问题 但是可以关注一下在一些异常情况下的表现 比如请求超时 如果服务器端一直不给返回 看看客户端会不会一直处于等待状态 还可考虑一些别的异常 比如返回的数据格式不对什么的 但和语言本身关系不大]]></description>
			<content:encoded><![CDATA[<p> java是通过系统调用，执行php程序。<br />
 就像在命令行执行php程序一样。<br />
 高强度用system调用，性能开销较大。</p>
<p>如果双方都遵守http协议的话 本身没啥语言方面的问题 但是可以关注一下在一些异常情况下的表现<br />
比如请求超时</p>
<p>如果服务器端一直不给返回 看看客户端会不会一直处于等待状态</p>
<p>还可考虑一些别的异常 比如返回的数据格式不对什么的 但和语言本身关系不大</p>
]]></content:encoded>
			<wfw:commentRss>http://jaunty.me/blog/2011/07/java%e8%b0%83php%e6%8e%a5%e5%8f%a3%e6%b5%8b%e8%af%95%e9%9c%80%e8%a6%81%e6%b3%a8%e6%84%8f%e7%9a%84%e4%b8%80%e4%ba%9b%e7%89%b9%e7%82%b9/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bugzilla安装配置实录- -3</title>
		<link>http://jaunty.me/blog/2011/01/bugzilla%e5%ae%89%e8%a3%85%e9%85%8d%e7%bd%ae%e5%ae%9e%e5%bd%95-3/</link>
		<comments>http://jaunty.me/blog/2011/01/bugzilla%e5%ae%89%e8%a3%85%e9%85%8d%e7%bd%ae%e5%ae%9e%e5%bd%95-3/#comments</comments>
		<pubDate>Wed, 12 Jan 2011 09:13:42 +0000</pubDate>
		<dc:creator>jaunty</dc:creator>
				<category><![CDATA[测试管理]]></category>
		<category><![CDATA[软件测试]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[bugzilla]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://jaunty.me/blog/?p=201</guid>
		<description><![CDATA[安装及配置bugzilla 1.安装bugzilla 下载bugzilla http://www.bugzilla.org/download/ 在/usr/local下解压 Make Make test Install 2.安装perl module cd /usr/local/bugzilla ./checksetup.pl （可以检查针对bugzilla的安装的条件还缺少什么） ./install-module.pl –all （安装所有的perl module） (./install-module.pl module::name 安装指定的模块) 装完后还需要额外安装一些模块例如 DBD-mysql (v.4.00) GD(V1.20) Chart(V1.0) Template-GD(any) GDText 模块安装完成后在bugzilla的目录下会生成一个localconfig文件 * 注：有些模块可能装不成功，则就自行手动安装，安装完成后再用./checksetup来检测安装的状态。例如 Datetime：locale 模块没有。则可以用bugzilla的install-module的指定安装或者自己到下载源代码包手动编译安装 3．配置mysql数据库针对bugzilla的设置 vi /etc/my.cnf (my.cnf 有些系统安装完后不一定在这个位置。找到你的mysql启动时调用的那个配置文件，修改之) 加入下面的内容: max_allowed_packet=4M ft_min_word_len=2  4.修改bugzilla配置文件，配置bugzilla与数据的关系 进入bugzilla目录下 Vi localconfig 修改下面的内容 $webservergroup=’daemon’ （和你运行的apache webserver配置的群组相同，apache默认是daemon） $db_driver=’mysql’ (有的是用的postgresql那么就写入相应的db名称) $db_host = ‘localhost’; [...]]]></description>
			<content:encoded><![CDATA[<p><strong>安装及配置bugzilla</strong></p>
<p>1.安装bugzilla</p>
<p>下载bugzilla <a href="http://www.bugzilla.org/download/">http://www.bugzilla.org/download/</a></p>
<p>在/usr/local下解压</p>
<p>Make</p>
<p>Make test</p>
<p>Install</p>
<p>2.安装perl module</p>
<p>cd /usr/local/bugzilla</p>
<p>./checksetup.pl （可以检查针对bugzilla的安装的条件还缺少什么）</p>
<p>./install-module.pl –all （安装所有的perl module）</p>
<p>(./install-module.pl module::name 安装指定的模块)</p>
<p>装完后还需要额外安装一些模块例如</p>
<p>DBD-mysql (v.4.00)</p>
<p>GD(V1.20)</p>
<p>Chart(V1.0)</p>
<p>Template-GD(any)</p>
<p>GDText</p>
<p>模块安装完成后在bugzilla的目录下会生成一个localconfig文件</p>
<p>* 注：有些模块可能装不成功，则就自行手动安装，安装完成后再用./checksetup来检测安装的状态。例如 Datetime：locale 模块没有。则可以用bugzilla的install-module的指定安装或者自己到下载源代码包手动编译安装<span id="more-201"></span></p>
<p>3．配置mysql数据库针对bugzilla的设置</p>
<p>vi /etc/my.cnf</p>
<p>(my.cnf 有些系统安装完后不一定在这个位置。找到你的mysql启动时调用的那个配置文件，修改之)</p>
<p>加入下面的内容:</p>
<p>max_allowed_packet=4M</p>
<p>ft_min_word_len=2</p>
<p> 4.修改bugzilla配置文件，配置bugzilla与数据的关系</p>
<p>进入bugzilla目录下</p>
<p>Vi localconfig</p>
<p>修改下面的内容</p>
<p>$webservergroup=’daemon’ （和你运行的apache webserver配置的群组相同，apache默认是daemon）</p>
<p>$db_driver=’mysql’ (有的是用的postgresql那么就写入相应的db名称)</p>
<p>$db_host = ‘localhost’;</p>
<p>$db_name = ‘bugs; (你的mysql里给bugzilla建的数据库，写入相应的名字即可不一定要叫bugs)</p>
<p>$db_user = ‘bugs‘;  （给for给bugzilla的db建立的用户）</p>
<p>$db_pass = “123&#8243;;(登陆bugzilla的db的密码，个人设定);</p>
<p>$db_ports=’3306’ /指定DB的端口，mysql默认是3306</p>
<p>：q! 退出文件保存</p>
<p>5.创建数据库</p>
<p>登陆mysql</p>
<p>Mysql –umysql –p对应的密码</p>
<p>use mysql;  /使用mysql的database</p>
<p>Create database bugs; /给bugzilla建一个库</p>
<p>GRANT ALL PRIVILEGE ON bugs.* TO bugs@localhost IDENTIFIED BY ‘$db_pass’; /把bugs库下所有表都给本机的bugs用户赋予所有权限，$db_pass是在bugzilla里设置的bugzilla登陆库的用户密码。</p>
<p>SELECT * FROM information_schema.user_privileges; /查看已经赋予的权限</p>
<p>6．用bugzilla来初始化数据表</p>
<p>./checksetup</p>
<p>运行过程中注意检测的错误，逐个修复，不要中断,尤其是在初始化数据库的时候。否则还得重建清理数据库或者建库。</p>
<p>过程中会需要给bugzilla建立admin等。</p>
<p>在cmd窗口中可以看到数据库中创建相应的表结构.表结构创建完后,提示要求输入管理帐号的邮件,real name和密码,输入后,继续执行,直到提示”Now that you have installed Bugzilla&#8230;&#8230;”.安装完成。</p>
<p>7. 发布bugzilla</p>
<p>Bugzilla已经配置完成，设置apache发布整站。</p>
<p>进入apache的htdocs目录</p>
<p>&lt;1&gt;. 在下面建立一个软链接，链接到安装配置好的bugzilla的目录下。既相当于在apache的htdocs下面有一个快捷方式到bugzilla的安装目录下。</p>
<p>ln –s  源文件所在目录（源目录名称）    htdocs下的目录名称（快捷方式名称） </p>
<p>&lt;2&gt;.配置apache的主程序</p>
<p>修改apache的配置文件httpd.conf</p>
<p>AddHandler cgi-script .cgi   /配置CGI访问需要把下面这一句前面的#给去掉<br />
修改apache的缺省访问文件：在DirectoryIndex index.html index.html.var后面添加一个index.cgi</p>
<p>修改Options Indexes FollowSymLinks 为 Options Indexes FollowSymLinks ExecCGI</p>
<p>加入以下for给buzilla的webserver 配置<br />
Alias /bugzilla “/usr/local/apache2/htdocs/bugzilla”</p>
<p>&lt;Directory “/usr/local/apache2/htdocs/bugzilla”&gt;</p>
<p>    Options +ExecCGI Indexes</p>
<p>    AllowOverride Limit</p>
<p>    Order Allow,Deny</p>
<p>    Allow from all</p>
<p>&lt;/Directory&gt;</p>
<p><span style="color: #993300;">注：也可以将bugzilla的apache配置写入一个文件例如存成 bugzilla.conf ，然后在apache的主配置文件里include进来</span></p>
<p><span style="color: #993300;">例如：</span></p>
<p><span style="color: #993300;">建立单独的apache的虚拟目录</span></p>
<p><span style="color: #993300;">在bugzilla到目录下创建一个配置文件bugzilla.conf</span></p>
<p><span style="color: #993300;">输入以下内容：</span></p>
<p><span style="color: #993300;">Alias /bugzilla/ “<strong> </strong>/usr/local/apache2/htdocs/bugzilla/”</span></p>
<p><span style="color: #993300;">Alias /bugzilla “<strong> </strong>/usr/local/apache2/htdocs/bugzilla”</span></p>
<p><span style="color: #993300;"> </span></p>
<p><span style="color: #993300;">&lt;Directory “<strong> </strong>/usr/local/apache2/htdocs/bugzilla”&gt;<br />
Options +ExecCGI Indexes</span></p>
<p><span style="color: #993300;">AllowOverride Limit</span></p>
<p><span style="color: #993300;">Order Allow,Deny</span></p>
<p><span style="color: #993300;">Allow from all</span></p>
<p><span style="color: #993300;">&lt;/Directory&gt;</span></p>
<p><span style="color: #993300;">然后修改httpd.conf，在最后添加一句话：</span></p>
<p><span style="color: #993300;">Include “/usr/local/bugzilla/conf/bugzilla.conf”用于包含该配置文件。</span></p>
]]></content:encoded>
			<wfw:commentRss>http://jaunty.me/blog/2011/01/bugzilla%e5%ae%89%e8%a3%85%e9%85%8d%e7%bd%ae%e5%ae%9e%e5%bd%95-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bugzilla安装配置实录- -2</title>
		<link>http://jaunty.me/blog/2011/01/bugzilla%e5%ae%89%e8%a3%85%e9%85%8d%e7%bd%ae%e5%ae%9e%e5%bd%95-2/</link>
		<comments>http://jaunty.me/blog/2011/01/bugzilla%e5%ae%89%e8%a3%85%e9%85%8d%e7%bd%ae%e5%ae%9e%e5%bd%95-2/#comments</comments>
		<pubDate>Wed, 12 Jan 2011 08:46:04 +0000</pubDate>
		<dc:creator>jaunty</dc:creator>
				<category><![CDATA[测试管理]]></category>
		<category><![CDATA[软件测试]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[bugzilla]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://jaunty.me/blog/?p=198</guid>
		<description><![CDATA[安装apache: 1. 下载apache http://apache.etoak.com//httpd/httpd-2.2.17.tar.gz 2. copy到安装目录并解压 cp xx/httpd-2.2.17.tar.gz /usr/local/ tar -zxf httpd-2.2.17.tar.gz 3. 配置安装项及安装目录 ./configure –prefix = /usr/local/apache2 –enable-module=so (&#60;-动态模块启动) 4. 编译 make 5. 编译安装 make install 6. 启动apache /usr/local/apache2/bin/httpd-k start  (/stop/restart) 启动成功后 找一个可以访问该服务器所在ip的机器，直接访问http://ip 可以打开一个apache的测试页面。 注:apache安装启动时常见的错误 &#60;1&#62; 启动时提示无法determain qulify 的severname 原因：因为http.conf里没有指定servername 解决方法：进入http.conf中加一个servername &#60;2&#62; 启动时提示fail to enable the “httpready” accept filter 原因：这是apache22自己的一个bug,不能启动freebsd自带的一个基于http端口过滤的模块 解决方法： kldload accf_http 打开/boot/defaults/loader.conf，加入下面两行，以便下次启动自动装载模块 [...]]]></description>
			<content:encoded><![CDATA[<p><strong>安装apache:</strong></p>
<p>1. 下载apache<br />
<a href="http://apache.etoak.com/httpd/httpd-2.2.17.tar.gz">http://apache.etoak.com//httpd/httpd-2.2.17.tar.gz</a></p>
<p>2. copy到安装目录并解压</p>
<p>cp xx/httpd-2.2.17.tar.gz /usr/local/</p>
<p>tar -zxf httpd-2.2.17.tar.gz</p>
<p>3. 配置安装项及安装目录</p>
<p>./configure –prefix = /usr/local/apache2 –enable-module=so (&lt;-动态模块启动)</p>
<p>4. 编译<br />
make</p>
<p>5. 编译安装<br />
make install<span id="more-198"></span></p>
<p>6. 启动apache<br />
/usr/local/apache2/bin/httpd-k start  (/stop/restart)</p>
<p>启动成功后 找一个可以访问该服务器所在ip的机器，直接访问<a href="http://ip/">http://ip</a> 可以打开一个apache的测试页面。</p>
<p><span style="color: #993300;">注:apache安装启动时常见的错误</span></p>
<p><span style="color: #993300;">&lt;1&gt; 启动时提示无法determain qulify 的severname</span></p>
<p><span style="color: #993300;">原因：因为http.conf里没有指定servername</span></p>
<p><span style="color: #993300;">解决方法：进入http.conf中加一个servername</span></p>
<p><span style="color: #993300;">&lt;2&gt; 启动时提示fail to enable the “httpready” accept filter</span></p>
<p><span style="color: #993300;">原因：这是apache22自己的一个bug,不能启动freebsd自带的一个基于http端口过滤的模块</span></p>
<p><span style="color: #993300;">解决方法：</span></p>
<p><span style="color: #993300;">kldload accf_http</p>
<p></span></p>
<p><span style="color: #993300;">打开/boot/defaults/loader.conf，加入下面两行，以便下次启动自动装载模块</span></p>
<p><span style="color: #993300;">accf_data_load=”YES”</span></p>
<p><span style="color: #993300;">accf_http_load=”YES”</p>
<p></span></p>
<p><span style="color: #993300;">重启机器</span></p>
<p><span style="color: #993300;">（kldload是用来加载kernel的模块，列出所有的模块用kldstat，把文件从内核中卸载用kldunload）</span></p>
<p>7. 修改apache的一些配置</p>
<p>cd /usr/local/apache2/conf</p>
<p>vi httpd.conf</p>
<p>serveradmin=xxx@xxx.xx</p>
<p>documentroot “/usr/local/apache/htdocs”</p>
]]></content:encoded>
			<wfw:commentRss>http://jaunty.me/blog/2011/01/bugzilla%e5%ae%89%e8%a3%85%e9%85%8d%e7%bd%ae%e5%ae%9e%e5%bd%95-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bugzilla安装配置实录- -1</title>
		<link>http://jaunty.me/blog/2011/01/bugzilla%e5%ae%89%e8%a3%85%e9%85%8d%e7%bd%ae%e5%ae%9e%e5%bd%95-1/</link>
		<comments>http://jaunty.me/blog/2011/01/bugzilla%e5%ae%89%e8%a3%85%e9%85%8d%e7%bd%ae%e5%ae%9e%e5%bd%95-1/#comments</comments>
		<pubDate>Wed, 12 Jan 2011 08:29:13 +0000</pubDate>
		<dc:creator>jaunty</dc:creator>
				<category><![CDATA[测试管理]]></category>
		<category><![CDATA[软件测试]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[bugzilla]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[开源工具]]></category>

		<guid isPermaLink="false">http://jaunty.me/blog/?p=195</guid>
		<description><![CDATA[安装 Perl 这里是BSD系统,所以用了ports来安装 cd /usr/ports/lang/perl5.8 Make install clean 安装完成后，安装的目标文件夹在 /usr/local/lib/perl5/5.8.8  Mysql的安装 5.0.22 这里使用的源码版本，可使用RPM或者二进制。 下载mysql先 http://download.mysql.cn/download_file/gz/5.0/mysql-5.0.22.tar.gz  下载到要安装的目录下或者下载后cp到要安装的目录下 /usr/local  解压文件tar -zxvf mysql-5.0.22.tar.gz    进入解压的目录 mysql-5.0.22 （也可以修改个名字） cd mysql-5.0.22  开始配置安装mysql，受限配置一个安装目录，这里选择在/usr/local/mysql ./configure –prefix=/usr/local/mysql (想要获得更多的配置信息，使用./configure &#8211;help) 6.  编译源代码 Make  7.  安装 Make install  8．给mysql建立专门的组和用户，并设置相应的访问权限 &#60;1&#62;.    建立mysql 组 pw groupadd mysql &#60;2&#62;.    建立mysql用户并加入到mysql组 pw useradd mysql –g mysql  9.  初始化表并且规定用mysql用户来访问 ./scripts/mysql_install_db &#8211;user=mysql (初始化表的过程包括“创建系统数据库”,“初始化系统数据库中的数据”，“初始化帮助数据”，详情查看mysql_install_db.sh的脚本代码) 10.给mysql和root用户设定访问权限, 先到安装mysql的目录: cd /usr/local/mysql [...]]]></description>
			<content:encoded><![CDATA[<p><strong>安装 Perl</strong></p>
<p>这里是BSD系统,所以用了ports来安装</p>
<p>cd /usr/ports/lang/perl5.8</p>
<p>Make install clean</p>
<p>安装完成后，安装的目标文件夹在 /usr/local/lib/perl5/5.8.8</p>
<p> <strong>Mysql</strong><strong>的安装</strong></p>
<p>5.0.22 这里使用的源码版本，可使用RPM或者二进制。</p>
<ol>
<li>下载mysql先 <a href="http://download.mysql.cn/download_file/gz/5.0/mysql-5.0.22.tar.gz">http://download.mysql.cn/download_file/gz/5.0/mysql-5.0.22.tar.gz</a> </li>
<li>下载到要安装的目录下或者下载后cp到要安装的目录下 /usr/local </li>
<li>解压文件tar -zxvf mysql-5.0.22.tar.gz   </li>
<li>进入解压的目录 mysql-5.0.22 （也可以修改个名字）<br />
cd mysql-5.0.22 </li>
<li>开始配置安装mysql，受限配置一个安装目录，这里选择在/usr/local/mysql</li>
</ol>
<p>./configure –prefix=/usr/local/mysql</p>
<p>(想要获得更多的配置信息，使用./configure &#8211;help)</p>
<p><span id="more-195"></span></p>
<p>6.  编译源代码</p>
<p>Make </p>
<p>7.  安装</p>
<p>Make install </p>
<p>8．给mysql建立专门的组和用户，并设置相应的访问权限</p>
<p>&lt;1&gt;.    建立mysql 组</p>
<p>pw groupadd mysql</p>
<p>&lt;2&gt;.    建立mysql用户并加入到mysql组</p>
<p>pw useradd mysql –g mysql </p>
<p>9.  初始化表并且规定用mysql用户来访问</p>
<p>./scripts/mysql_install_db &#8211;user=mysql</p>
<p>(初始化表的过程包括“创建系统数据库”,“初始化系统数据库中的数据”，“初始化帮助数据”，详情查看mysql_install_db.sh的脚本代码)</p>
<p>10.给mysql和root用户设定访问权限, 先到安装mysql的目录:<br />
cd /usr/local/mysql</p>
<p>设置权限: </p>
<p>chown –R root .  #设root可以访问当前进入的目录，此时就是/usr/local/mysql<br />
chown –R mysql var #设置mysql用户能访问/usr/local/mysql/var ,里面存的是mysql的数据库文件<br />
chown -R mysql var/. #设置mysql可以访问var下所有文件<br />
chown -R mysql var/mysql/. 同理<br />
chgrp -R mysql . 设置mysql组能够访问/usr/local/mysql   </p>
<p>11. 给mysql 用户设置密码</p>
<p>/usr/local/mysql/bin/mysqladmin –u root password newpassword</p>
<p>Mysqladmin的一些常用参数的含义可以见mysqladmin详细命令的解释</p>
<p> 12. 运行mysql:</p>
<p>/usr/local/mysql/bin/mysqld_safe &#8211;user=mysql &amp; （以用户“mysql”来启动mysql）   </p>
<p>没有问题的话,会出现类似这样的提示:</p>
<p>[1] 42264  </p>
<p>Starting mysqld daemon with databases from /usr/local/mysql/var   </p>
<p>这就证明你安装成功了,如果出现:</p>
<p>[1] 42264  <br />
Starting mysqld daemon with databases from /usr/local/mysql/var  <br />
040818 10:53:45  mysqld ended  </p>
<p>证明mysql没有运行起来,请查看错误日志: /usr/local/mysql/var/*.err </p>
<p>然后确定安装是否成功。对症下药解决问题。</p>
<p>可以通过 /usr/local/mysql/bin/mysql 来连接mysql进行管理,<br />
控制mysql就通过 /usr/local/mysql/libexec/mysqld 来控制启动或者停止mysql:</p>
<p># /usr/local/mysql/libexec/mysqld start #启动mysql  </p>
<p># /usr/local/mysql/libexec/mysqld stop #停止mysql  </p>
<p># /usr/local/mysql/libexec/mysqld restart #重启mysql   </p>
<p> 13. 设置开机重启,可以写一个shell脚本放到 /usr/local/etc/rc.d目录下,用来运行mysql,我们写一个脚本mysql_start.sh （相同的OS，设置开机启动的方法有很多个例如bsd下还可以在/etc/rc.local里添加要启动的服务，并且不同的操作系统要把开机脚本放置的目录位置不同）</p>
<p>/bin/sh  </p>
<p>/usr/local/mysql/bin/mysqld_safe&amp;<br />
<span style="color: #993300;">注:</span></p>
<p><span style="color: #993300;">1.在freebsd中安装软件可以采用ports方式安装,非常方便 ,会自动处理软件包依赖问题,但是用ports安装的话，程序默认的一些目录将会比较难找，一定要在ports下查看了安装脚本确认位置，才好辨认。</span></p>
<p><span style="color: #993300;"> Ports下mysql的安装方法</span></p>
<p><span style="color: #993300;">cd /usr/ports/databases/mysql5-server</span></p>
<div><span style="color: #993300;">make install clean</span></div>
<p><span style="color: #993300;"> </p>
<p></span></p>
<p><span style="color: #993300;">2．Mysql启动不起来的一些解决方法:</span></p>
<p><span style="color: #993300;">可能是mysql用户没有权限,用下面的语句加入权限</span></p>
<p><span style="color: #993300;">chown -R mysql ./var</span></p>
<div><span style="color: #993300;">chown -R mysql ./bin</span></div>
<p><span style="color: #993300;"> </p>
<p></span></p>
<div><span style="color: #993300;">3.有些环境变量有问题的同学，不能用command，是因为PATH找不到，需要将mysql的路径export PATH到profile里</span></div>
<p><span style="color: #993300;"> </p>
<p></span></p>
]]></content:encoded>
			<wfw:commentRss>http://jaunty.me/blog/2011/01/bugzilla%e5%ae%89%e8%a3%85%e9%85%8d%e7%bd%ae%e5%ae%9e%e5%bd%95-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>租房启示！！</title>
		<link>http://jaunty.me/blog/2009/06/%e7%a7%9f%e6%88%bf%e5%90%af%e7%a4%ba%ef%bc%81%ef%bc%81/</link>
		<comments>http://jaunty.me/blog/2009/06/%e7%a7%9f%e6%88%bf%e5%90%af%e7%a4%ba%ef%bc%81%ef%bc%81/#comments</comments>
		<pubDate>Mon, 29 Jun 2009 17:49:22 +0000</pubDate>
		<dc:creator>jaunty</dc:creator>
				<category><![CDATA[软件测试]]></category>

		<guid isPermaLink="false">http://jaunty.me/blog/?p=132</guid>
		<description><![CDATA[深圳有租房的mm 请看这里！！ http://shenzhen.koubei.com/fang/detail-rent-rd1d4a4f0715f4454aeeab49d1c5e5918.html http://rent.sz.soufun.com/chuzu/1_49500175_-1.htm]]></description>
			<content:encoded><![CDATA[<p>深圳有租房的mm 请看这里！！ </p>
<p>http://shenzhen.koubei.com/fang/detail-rent-rd1d4a4f0715f4454aeeab49d1c5e5918.html </p>
<p>http://rent.sz.soufun.com/chuzu/1_49500175_-1.htm </p>
]]></content:encoded>
			<wfw:commentRss>http://jaunty.me/blog/2009/06/%e7%a7%9f%e6%88%bf%e5%90%af%e7%a4%ba%ef%bc%81%ef%bc%81/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>色</title>
		<link>http://jaunty.me/blog/2009/06/color/</link>
		<comments>http://jaunty.me/blog/2009/06/color/#comments</comments>
		<pubDate>Wed, 17 Jun 2009 16:19:53 +0000</pubDate>
		<dc:creator>jaunty</dc:creator>
				<category><![CDATA[软件测试]]></category>

		<guid isPermaLink="false">http://jaunty.me/blog/?p=129</guid>
		<description><![CDATA[■■★●◆lightpink（浅粉红) ■■★●◆pink（粉红） ■■★●◆crimson（腥红） ■■★●◆lavenderblush（苍白的紫罗兰红） ■■★●◆palevioletred（脸红的淡紫红） ■■★●◆hotpink（热情的粉红） ■■★●◆mediumvioletred（适中的紫罗兰红） ■■★●◆orchid（兰花紫） ■■★●◆thistle（苍紫） ■■★●◆plum（轻紫） ■■★●◆violet（紫罗兰） ■■★●◆magenta（洋紫) ■■★●◆fuchsia（紫红） ■■★●◆darkmagenta（深洋紫） ■■★●◆purple（紫） ■■★●◆mediumorchid（适中的兰花紫） ■■★●◆darkviolet（深紫罗兰） ■■★●◆indigo（靓青） ■■★●◆blueviolet（蓝紫罗兰） ■■★●◆mediumpurple（适中的紫） ■■★●◆mediumslateblue（适中的的板岩蓝） ■■★●◆slateblue（板岩蓝） ■■★●◆darkslateblue（深板岩蓝） ■■★●◆lavender（熏衣草花的淡紫） ■■★●◆ghostwhite（幽灵白） ■■★●◆blue（蓝） ■■★●◆mediumblue（适中的蓝） ■■★●◆midnightblue（午夜蓝） ■■★●◆darkblue（深蓝） ■■★●◆navy（海军蓝） ■■★●◆royalblue（皇家蓝） ■■★●◆cornflowerblue（矢车菊蓝） ■■★●◆lightsteelblue（淡钢蓝） ■■★●◆lightslategray（浅石板灰） ■■★●◆slategray（石板灰） ■■★●◆dodgerblue（道奇蓝） ■■★●◆aliceblue（爱丽丝蓝） ■■★●◆steelblue（钢蓝） ■■★●◆lightskyblue（淡天蓝） ■■★●◆skyblue（天蓝） ■■★●◆deepskyblue（深天蓝） ■■★●◆lightblue（淡蓝） ■■★●◆powderblue（火药蓝） ■■★●◆cadetblue（军校蓝） ■■★●◆azure（蔚蓝） ■■★●◆lightcyan（淡青） ■■★●◆paleturquoise（苍白的宝石绿） ■■★●◆cyan（青） ■■★●◆aqua（水绿） ■■★●◆darkturquoise（深宝石绿） ■■★●◆darkslategray（深石板灰） ■■★●◆darkcyan（深青色） ■■★●◆teal（水鸭色） ■■★●◆mediumturquoise（适中的宝石绿） ■■★●◆lightseagreen（浅海洋绿） [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-size: medium;"><span style="color: #ffb6c1;"><span style="color: #000000;">■</span>■★●◆lightpink（浅粉红)<br />
</span>■<span style="color: #ffc0cb;">■★●◆pink（粉红）</span><br />
■<span style="color: #dc143c;">■★●◆crimson（腥红）</span><br />
■<span style="color: #fff0f5;">■★●◆lavenderblush（苍白的紫罗兰红）</span><br />
■<span style="color: #db7093;">■★●◆palevioletred（脸红的淡紫红）</span><br />
■<span style="color: #ff69b4;">■★●◆hotpink（热情的粉红）</span><br />
■<span style="color: #c71585;">■★●◆mediumvioletred（适中的紫罗兰红）</span></span></p>
<p><span style="font-size: medium;"><span id="more-129"></span><br />
■<span style="color: #da70d6;">■★●◆orchid（兰花紫）</span><br />
■<span style="color: #d8bfd8;">■★●◆thistle（苍紫）</span><br />
■<span style="color: #dda0dd;">■★●◆plum（轻紫）</span><br />
■<span style="color: #ee82ee;">■★●◆violet（紫罗兰）</span><br />
■<span style="color: #ff00ff;">■★●◆magenta（洋紫)</span><br />
■<span style="color: #ff00ff;">■★●◆fuchsia（紫红）</span><br />
■<span style="color: #8b008b;">■★●◆darkmagenta（深洋紫）</span><br />
■<span style="color: #800080;">■★●◆purple（紫）</span><br />
■<span style="color: #ba55d3;">■★●◆mediumorchid（适中的兰花紫）</span><br />
■<span style="color: #9400d3;">■★●◆darkviolet（深紫罗兰）</span><br />
■<span style="color: #4b0082;">■★●◆indigo（靓青）</span><br />
■<span style="color: #8a2be2;">■★●◆blueviolet（蓝紫罗兰）</span><br />
■<span style="color: #9370db;">■★●◆mediumpurple（适中的紫）</span><br />
■<span style="color: #7b68ee;">■★●◆mediumslateblue（适中的的板岩蓝）</span><br />
■<span style="color: #6a5acd;">■★●◆slateblue（板岩蓝）</span><br />
■<span style="color: #483d8b;">■★●◆darkslateblue（深板岩蓝）</span><br />
■<span style="color: #e6e6fa;">■★●◆lavender（熏衣草花的淡紫）</span><br />
■<span style="color: #f8f8ff;">■★●◆ghostwhite（幽灵白）</span><br />
■<span style="color: #0000ff;">■★●◆blue（蓝）</span><br />
■<span style="color: #0000cd;">■★●◆mediumblue（适中的蓝）</span><br />
■<span style="color: #191970;">■★●◆midnightblue（午夜蓝）</span><br />
■<span style="color: #00008b;">■★●◆darkblue（深蓝）</span><br />
■<span style="color: #000080;">■★●◆navy（海军蓝）</span><br />
■<span style="color: #4169e1;">■★●◆royalblue（皇家蓝）</span><br />
■<span style="color: #6495ed;">■★●◆cornflowerblue（矢车菊蓝）</span><br />
■<span style="color: #b0c4de;">■★●◆lightsteelblue（淡钢蓝）</span><br />
■<span style="color: #778899;">■★●◆lightslategray（浅石板灰）</span><br />
■<span style="color: #708090;">■★●◆slategray（石板灰）</span><br />
■<span style="color: #1e90ff;">■★●◆dodgerblue（道奇蓝）</span><br />
■<span style="color: #f0f8ff;">■★●◆aliceblue（爱丽丝蓝）</span><br />
■<span style="color: #4682b4;">■★●◆steelblue（钢蓝）</span><br />
■<span style="color: #87cefa;">■★●◆lightskyblue（淡天蓝）</span><br />
■<span style="color: #87ceeb;">■★●◆skyblue（天蓝）</span><br />
■<span style="color: #00bfff;">■★●◆deepskyblue（深天蓝）</span><br />
■<span style="color: #add8e6;">■★●◆lightblue（淡蓝）</span><br />
■<span style="color: #b0e0e6;">■★●◆powderblue（火药蓝）</span><br />
■<span style="color: #5f9ea0;">■★●◆cadetblue（军校蓝）</span><br />
■<span style="color: #f0ffff;">■★●◆azure（蔚蓝）</span><br />
■<span style="color: #e0ffff;">■★●◆lightcyan（淡青）</span><br />
■<span style="color: #afeeee;">■★●◆paleturquoise（苍白的宝石绿）</span><br />
■<span style="color: #00ffff;">■★●◆cyan（青）</span><br />
■<span style="color: #00ffff;">■★●◆aqua（水绿）</span><br />
■<span style="color: #00ced1;">■★●◆darkturquoise（深宝石绿）</span><br />
■<span style="color: #2f4f4f;">■★●◆darkslategray（深石板灰）</span><br />
■<span style="color: #008b8b;">■★●◆darkcyan（深青色）</span><br />
■<span style="color: #008080;">■★●◆teal（水鸭色）</span><br />
■<span style="color: #48d1cc;">■★●◆mediumturquoise（适中的宝石绿）</span><br />
■<span style="color: #20b2aa;">■★●◆lightseagreen（浅海洋绿）</span><br />
■<span style="color: #40e0d0;">■★●◆turquoise（宝石绿）</span><br />
■<span style="color: #7fffd4;">■★●◆aquamarine（碧绿）</span><br />
■<span style="color: #66cdaa;">■★●◆mediumaquamarine（适中的碧绿）</span><br />
■<span style="color: #00fa9a;">■★●◆mediumspringgreen（适中的春天绿）</span><br />
■<span style="color: #f5fffa;">■★●◆mintcream（薄荷奶油）</span><br />
■<span style="color: #00ff7f;">■★●◆springgreen（春天绿）</span><br />
■<span style="color: #3cb371;">■★●◆mediumseagreen（适中的海洋绿）</span><br />
■<span style="color: #2e8b57;">■★●◆seagreen（海洋绿）</span><br />
■<span style="color: #f0fff0;">■★●◆honeydew（浅粉红）</span><br />
■<span style="color: #90ee90;">■★●◆lightgreen（浅绿）</span><br />
■<span style="color: #98fb98;">■★●◆palegreen（苍白绿）</span><br />
■<span style="color: #8fbc8f;">■★●◆darkseagreen（深海洋绿）</span><br />
■<span style="color: #32cd32;">■★●◆limegreen（柠檬绿）</span><br />
■<span style="color: #00ff00;">■★●◆lime（柠檬）</span><br />
■<span style="color: #228b22;">■★●◆forestgreen（森林绿）</span><br />
■<span style="color: #7fff00;">■★●◆chartreuse（查特酒绿）</span><br />
■<span style="color: #7cfc00;">■★●◆lawngreen（草坪绿）</span><br />
■<span style="color: #adff2f;">■★●◆greenyellow（绿黄）</span><br />
■<span style="color: #556b2f;">■★●◆darkolivegreen（深橄榄绿）</span><br />
■<span style="color: #9acd32;">■★●◆yellowgreen（黄绿）</span><br />
■<span style="color: #6b8e23;">■★●◆olivedrab（橄榄褐）</span><br />
■<span style="color: #f5f5dc;">■★●◆beige（米色）</span><br />
■<span style="color: #fafad2;">■★●◆lightgoldenrodyellow（浅秋黄）</span><br />
■<span style="color: #fffff0;">■★●◆ivory（象牙白）</span><br />
■<span style="color: #ffffe0;">■★●◆lightyellow（浅黄）</span><br />
■<span style="color: #ffff00;">■★●◆yellow（黄）</span><br />
■<span style="color: #808000;">■★●◆olive（橄榄）</span><br />
■<span style="color: #bdb76b;">■★●◆darkkhaki（深卡其布）</span><br />
■<span style="color: #fffacd;">■★●◆lemonchiffon（柠檬沙）</span><br />
■<span style="color: #eee8aa;">■★●◆palegoldenrod（灰秋）</span><br />
■<span style="color: #f0e68c;">■★●◆khaki（卡其布）</span><br />
■<span style="color: #ffd700;">■★●◆gold（金）</span><br />
■<span style="color: #fff8dc;">■★●◆cornsilk（玉米）</span><br />
■<span style="color: #daa520;">■★●◆goldenrod（秋）</span><br />
■<span style="color: #b8860b;">■★●◆darkgoldenrod（深秋）</span></span></p>
<p><span style="font-size: medium;">■<span style="color: #fffaf0;">■★●◆floralwhite（白花）</span><br />
■<span style="color: #fdf5e6;">■★●◆oldlace（浅米色）</span><br />
■<span style="color: #f5deb3;">■★●◆wheat（小麦）</span><br />
■<span style="color: #ffe4b5;">■★●◆moccasin（鹿皮）</span><br />
■<span style="color: #ffa500;">■★●◆orange（橙）</span><br />
■<span style="color: #ffefd5;">■★●◆papayawhip（木瓜）</span><br />
■<span style="color: #ffebcd;">■★●◆blanchedalmond（漂白后的杏仁）</span><br />
■<span style="color: #ffdead;">■★●◆navajowhite（耐而节白）</span><br />
■<span style="color: #faebd7;">■★●◆antiquewhite（古白）</span><br />
■<span style="color: #d2b48c;">■★●◆tan（晒）</span><br />
■<span style="color: #deb887;">■★●◆burlywood（树干）</span><br />
■<span style="color: #ffe4c4;">■★●◆bisque（乳脂）</span><br />
■<span style="color: #ff8c00;">■★●◆darkorange（深橙色）</span><br />
■<span style="color: #faf0e6;">■★●◆linen（亚麻）</span><br />
■<span style="color: #cd853f;">■★●◆peru（秘鲁）</span><br />
■<span style="color: #f4a460;">■★●◆sandybrown（沙棕）</span><br />
■<span style="color: #d2691e;">■★●◆chocolate（巧克力）</span><br />
■<span style="color: #c00eeb;">■★●◆chocolatesaddlebrown（马鞍棕）</span><br />
■<span style="color: #fff5ee;">■★●◆seashell（海贝）</span><br />
■<span style="color: #a0522d;">■★●◆sienna（土黄赭）</span><br />
■<span style="color: #ffa07a;">■★●◆lightsalmon（浅肉）</span><br />
■<span style="color: #ff7f50;">■★●◆coral（珊瑚）</span><br />
■<span style="color: #ff4500;">■★●◆orangered（橙红）</span><br />
■<span style="color: #ff6347;">■★●◆tomato（番茄色）</span><br />
■<span style="color: #ffe4e1;">■★●◆mistyrose（雾中玫瑰）</span><br />
■<span style="color: #fa8072;">■★●◆salmon（肉）</span><br />
■<span style="color: #fffafa;">■★●◆snow（雪）</span><br />
■<span style="color: #f08080;">■★●◆lightcoral（浅珊瑚）</span><br />
■<span style="color: #bc8f8f;">■★●◆rosybrown（玫瑰棕）</span><br />
■<span style="color: #cd5c5c;">■★●◆indianred（浅粉红）</span><br />
■<span style="color: #ff0000;">■★●◆red（红）</span><br />
■<span style="color: #a52a2a;">■★●◆brown（棕）</span><br />
■<span style="color: #b22222;">■★●◆firebrick（火砖）</span><br />
■<span style="color: #8b0000;">■★●◆darkred（深红）</span><br />
■<span style="color: #800000;">■★●◆maroon（粟色）</span><br />
■<span style="color: #ffffff;">■★●◆white（白）</span><br />
■<span style="color: #f5f5f5;">■★●◆whitesmoke（烟白）</span><br />
■<span style="color: #dcdcdc;">■★●◆gainsboro（赶死部落）</span><br />
■<span style="color: #d3d3d3;">■★●◆lightgrey（浅灰）</span><br />
■<span style="color: #c0c0c0;">■★●◆silver（银白）</span><br />
■<span style="color: #a9a9a9;">■★●◆darkgray（深灰）</span><br />
■<span style="color: #696969;">■★●◆dimgray（暗灰）</span><br />
■<span style="color: #000000;">■★●◆black（黑）</span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://jaunty.me/blog/2009/06/color/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[转]一位微软软件测试开发工程师的成长体验</title>
		<link>http://jaunty.me/blog/2009/06/sdet-in-microsoft/</link>
		<comments>http://jaunty.me/blog/2009/06/sdet-in-microsoft/#comments</comments>
		<pubDate>Tue, 02 Jun 2009 02:17:13 +0000</pubDate>
		<dc:creator>jaunty</dc:creator>
				<category><![CDATA[职业发展]]></category>
		<category><![CDATA[软件测试]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[测试基础]]></category>
		<category><![CDATA[职业规划]]></category>

		<guid isPermaLink="false">http://jaunty.me/blog/?p=121</guid>
		<description><![CDATA[虽然最近很忙，没时间更新，不过我还是会持续关注工作领域的相关事宜。看到我感兴趣的文章都会转过来。 背景资料：李敏，2005年开始在微软实习，半年后研究生毕业成为正式员工，先后经历了 System Center Configuration Manager 2007以及SP1、R2的发布，测试的领域涉及UI测试、AMT feature和安全测试等。 这篇博客，是她想分享给大家的一些体会和故事，一来给不熟悉测试工作的读者描绘一下在微软当软件测试开发工程师是怎么回事情，二来揭秘一下微软的职业发展体制。 2005年的秋天，李敏还在上海交通大学念研究生，还有半年就要毕业了。一天，同学发了个链接给她，是微软在上海招聘实习生的消息，职位的名称叫做软件测试开发工程师(Software Development Engineer in Test，简称SDET)，这个职位对学生来说还是个新鲜玩意儿，没几个人清楚具体情况，在好奇心的驱动和微软的吸引力之下，她投出了简历。接着她经历了传说中的微软五轮面试，走出美罗大厦的时候已是下午一点，时至今日她对这个时刻的印象只有两个：饥肠辘辘，大脑高速运转。经过一周的焦急等待之后，她同时收到了SDET实习生和正式员工的offer，所在的组是System Management Server(也就是System Center Configuration Manager 2007的上一个版本)。 就这样，李敏开始了在微软当软件测试开发工程师的旅程。 几个月过去了，当同学好奇地问起在微软工作的感受和SDET的情况时，她说了自己的微软测试初体验： 测试初体验一、软件测试开发工程师，很奢侈很酷 问起对软件测试开发工程师的第一印象是什么，她的回答是：挺奢侈挺酷的。 说到奢侈，先看看一个软件测试开发工程师的典型测试财产清单 一到两台配置先进的工作机;两个21寸的液晶显示器，一个屏幕用来显示产品的界面，另一个屏幕用来发bug或者编程序;再加上实验室里面十几台测试机器或是一个16G内存的巨无霸。如果你需要测试Windows Mobile，那恭喜你了，各式各样的smart phone、pocket PC可以装满一抽屉。经过一段时间的了解后，她也知道了这样奢侈的配置一方面可以提高工作效率，更重要的是让测试工程师能够考虑到各种复杂的配置以及模拟客户环境。 说到酷，印象中，软件测试开发工程师总是有机会走在尝试各种微软新技术、新产品的前端，也总是有机会通过动手能力来展示自己的酷。比如工程师会把十几台测试机器装成各种各样不同的Bench， 操作系统从Windows 2000、XP到最新的Vista、Longhorn甚至Windows 7，从x86到x64，从英文到德文、中文、日文等;微软最新的产品或者尚未发布的产品都可以拿来研究一把，比如Longhorn、Windows 7、Hyper-V等;虽然不一定考过MCSE，但是每个人都会配置DNS、DHCP、AD、network等。 测试初体验二、测试有时候就像是玩游戏，找问题的能力很重要 测试就像是玩游戏?也许你会觉得不可思议。李敏拿了道面试题来打比方，给你一台笔记本电脑，你会怎么去测试它?这是一道典型的开放式问题，即使是没有测试知识的人也可以想出很多的测试用例。比如检查笔记本的型号、颜色、硬件配置、屏幕、电池、操作系统等，相信这是很多人拿到新买的笔记本之后做的第一件事情，这些多半都属于常规的正向功能测试;还有些人指出，外观要小巧方便携带，键盘手感如何布局如何，功能键是不是方便易用，这些人对可用性要求比较高;还有些会想到用它来玩3D游戏看看显卡的性能怎么样;有些人想到装上Vista、64位的操作系统，这就是兼容性方面的考虑;还有人思维不走寻常路，提出要把笔记本放在赤道的日照、南极的冰雪环境下试试能不能正常工作，当砧板切切菜，扔下楼看看碎不碎，这就是关于可靠性和压力方面的测试，有趣的答案还可以有许多许多，只要你去想 在李敏的描述中，软件测试开发工程师真实的日常工作跟答这道题一样的好玩，只不过笔记本电脑换成了软件程序。软件测试开发工程师拿到笔记本电脑之后，会像上面说到的一样开动脑筋仔细检查，检查之前需要列出想测试的各个方面、策略、工具、风险以及怎么开展等，这称为测试计划(test plan);每项具体的测试叫做测试用例(test case)，每个test case需要列出具体操作步骤(steps);找出来软件的缺陷、问题等称为bug，bug中需要记录怎样去重现它，称为重现步骤(repro steps);找bug的过程中你可以试图找出根本原因在哪里、甚至哪一行代码有问题，这就是debugging。优秀的软件测试开发工程师在这个玩游戏的过程中需要具备足够的好奇心，想出各种各样的主意把软件搞坏，尽可能地找出bug，还要多从客户的角度去想，其终极目标就是为发布到客户手中的软件把好质量关。其中，找bug是软件测试开发工程师应该具备的基本功。 不久她就找到机会测试了一把自己的SDET指数，正好高性能计算组举办找bug比赛，优胜者可以获得一些小礼品，她拿到了一个印有Microsoft标志的水杯。 这时候，她的一个高中同学在MSN上面发了条消息：你当了测试工程师，就不用编程了吧?。看来需要澄清一下了： 测试初体验三、谁说软件测试开发工程师不用写代码了? 微软早年也设有只做手工测试而不写代码的职位，称为STE(Software Testing Engineer)。现在所有的测试工程师的职位都叫做SDET(Software Development Engineer in Test)，从名字可以看出来，需要具备编程能力，这些编程工作是为了更好地做测试。 举个例子，李敏负责的某个UI模块有1000多个测试用例，手工执行一遍想想都很累。为了偷懒，她写了些代码将其中80%的测试用例实现测试自动化，这样下班前只要让机器开始跑自动化，第二天就可以拿到结果，从而大大减少了验证这些测试用例所需要花的人工时间，又可以及时地捕捉到bug。此外，软件测试开发工程师经常会做一些实用的测试工具和研究测试技术，比如开发UI测试方面的工具，开发测试流程管理工具，和更好地运用基于模型的测试方法等。在坚持创新的公司文化引导下，大家都非常注重运用新技术新方法，不断地把测试工作推进到新的高度。 转眼间，一年过去了,李敏从上海的服务器与开发工具事业部老大谢恩伟的手中接过了一周年的水晶纪念碑，按照惯例还请大家吃了一磅的 MM巧克力。2007年秋天，她所在的团队发布了System Center [...]]]></description>
			<content:encoded><![CDATA[<p>虽然最近很忙，没时间更新，不过我还是会持续关注工作领域的相关事宜。看到我感兴趣的文章都会转过来。</p>
<p><em>背景资料：李敏，2005年开始在微软实习，半年后研究生毕业成为正式员工，先后经历了 System Center Configuration Manager 2007以及SP1、R2的发布，测试的领域涉及UI测试、AMT feature和安全测试等。</em></p>
<div class="newscon">
<div>
<div id="vogate_ad_area">
<p>这篇博客，是她想分享给大家的一些体会和故事，一来给不熟悉测试工作的读者描绘一下在微软当软件测试开发工程师是怎么回事情，二来揭秘一下微软的职业发展体制。</p>
<p>2005年的秋天，李敏还在上海交通大学念研究生，还有半年就要毕业了。一天，同学发了个链接给她，是微软在上海招聘实习生的消息，职位的名称叫做软件测试开发工程师(Software Development Engineer in Test，简称SDET)，这个职位对学生来说还是个新鲜玩意儿，没几个人清楚具体情况，在好奇心的驱动和微软的吸引力之下，她投出了简历。接着她经历了传说中的微软五轮面试，走出美罗大厦的时候已是下午一点，时至今日她对这个时刻的印象只有两个：饥肠辘辘，大脑高速运转。经过一周的焦急等待之后，她同时收到了SDET实习生和正式员工的offer，所在的组是System Management Server(也就是System Center Configuration Manager 2007的上一个版本)。</p>
<p><span id="more-121"></span></p>
<p>就这样，李敏开始了在微软当软件测试开发工程师的旅程。</p>
<p>几个月过去了，当同学好奇地问起在微软工作的感受和SDET的情况时，她说了自己的微软测试初体验：</p>
<p><strong>测试初体验一、软件测试开发工程师，很奢侈很酷</strong></p>
<p>问起对软件测试开发工程师的第一印象是什么，她的回答是：挺奢侈挺酷的。</p>
<p>说到奢侈，先看看一个软件测试开发工程师的典型测试财产清单 一到两台配置先进的工作机;两个21寸的液晶显示器，一个屏幕用来显示产品的界面，另一个屏幕用来发bug或者编程序;再加上实验室里面十几台测试机器或是一个16G内存的巨无霸。如果你需要测试Windows Mobile，那恭喜你了，各式各样的smart phone、pocket PC可以装满一抽屉。经过一段时间的了解后，她也知道了这样奢侈的配置一方面可以提高工作效率，更重要的是让测试工程师能够考虑到各种复杂的配置以及模拟客户环境。</p>
<p>说到酷，印象中，软件测试开发工程师总是有机会走在尝试各种微软新技术、新产品的前端，也总是有机会通过动手能力来展示自己的酷。比如工程师会把十几台测试机器装成各种各样不同的Bench， 操作系统从Windows 2000、XP到最新的Vista、Longhorn甚至Windows 7，从x86到x64，从英文到德文、中文、日文等;微软最新的产品或者尚未发布的产品都可以拿来研究一把，比如Longhorn、Windows 7、Hyper-V等;虽然不一定考过MCSE，但是每个人都会配置DNS、DHCP、AD、network等。</p>
<p><strong>测试初体验二、测试有时候就像是玩游戏，找问题的能力很重要</strong></p>
<p>测试就像是玩游戏?也许你会觉得不可思议。李敏拿了道面试题来打比方，给你一台笔记本电脑，你会怎么去测试它?这是一道典型的开放式问题，即使是没有测试知识的人也可以想出很多的测试用例。比如检查笔记本的型号、颜色、硬件配置、屏幕、电池、操作系统等，相信这是很多人拿到新买的笔记本之后做的第一件事情，这些多半都属于常规的正向功能测试;还有些人指出，外观要小巧方便携带，键盘手感如何布局如何，功能键是不是方便易用，这些人对可用性要求比较高;还有些会想到用它来玩3D游戏看看显卡的性能怎么样;有些人想到装上Vista、64位的操作系统，这就是兼容性方面的考虑;还有人思维不走寻常路，提出要把笔记本放在赤道的日照、南极的冰雪环境下试试能不能正常工作，当砧板切切菜，扔下楼看看碎不碎，这就是关于可靠性和压力方面的测试，有趣的答案还可以有许多许多，只要你去想</p>
<p>在李敏的描述中，软件测试开发工程师真实的日常工作跟答这道题一样的好玩，只不过笔记本电脑换成了软件程序。软件测试开发工程师拿到笔记本电脑之后，会像上面说到的一样开动脑筋仔细检查，检查之前需要列出想测试的各个方面、策略、工具、风险以及怎么开展等，这称为测试计划(test plan);每项具体的测试叫做测试用例(test case)，每个test case需要列出具体操作步骤(steps);找出来软件的缺陷、问题等称为bug，bug中需要记录怎样去重现它，称为重现步骤(repro steps);找bug的过程中你可以试图找出根本原因在哪里、甚至哪一行代码有问题，这就是debugging。优秀的软件测试开发工程师在这个玩游戏的过程中需要具备足够的好奇心，想出各种各样的主意把软件搞坏，尽可能地找出bug，还要多从客户的角度去想，其终极目标就是为发布到客户手中的软件把好质量关。其中，找bug是软件测试开发工程师应该具备的基本功。</p>
<p>不久她就找到机会测试了一把自己的SDET指数，正好高性能计算组举办找bug比赛，优胜者可以获得一些小礼品，她拿到了一个印有Microsoft标志的水杯。</p>
<p>这时候，她的一个高中同学在MSN上面发了条消息：你当了测试工程师，就不用编程了吧?。看来需要澄清一下了：</p>
<p><strong>测试初体验三、谁说软件测试开发工程师不用写代码了?</strong></p>
<p>微软早年也设有只做手工测试而不写代码的职位，称为STE(Software Testing Engineer)。现在所有的测试工程师的职位都叫做SDET(Software Development Engineer in Test)，从名字可以看出来，需要具备编程能力，这些编程工作是为了更好地做测试。</p>
<p>举个例子，李敏负责的某个UI模块有1000多个测试用例，手工执行一遍想想都很累。为了偷懒，她写了些代码将其中80%的测试用例实现测试自动化，这样下班前只要让机器开始跑自动化，第二天就可以拿到结果，从而大大减少了验证这些测试用例所需要花的人工时间，又可以及时地捕捉到bug。此外，软件测试开发工程师经常会做一些实用的测试工具和研究测试技术，比如开发UI测试方面的工具，开发测试流程管理工具，和更好地运用基于模型的测试方法等。在坚持创新的公司文化引导下，大家都非常注重运用新技术新方法，不断地把测试工作推进到新的高度。</p>
<p>转眼间，一年过去了,李敏从上海的服务器与开发工具事业部老大谢恩伟的手中接过了一周年的水晶纪念碑，按照惯例还请大家吃了一磅的 MM巧克力。2007年秋天，她所在的团队发布了System Center Configuration Manager 2007。在这段时间里，她亲身体验了微软给员工提供的多种多样的成长帮助：</p>
<p><strong>职业发展体验一、员工成长路上的多种帮助</strong></p>
<p>从加入公司的第一天起，部门就分配了一个资深员工给李敏做Mentor，Mentor的意思是良师益友，也就是师傅。Mentor会手把手地教日常工作中碰到的各种问题，很多小问题都可以请教Mentor，比如打印机怎么用、测试用例怎么设计、甚至是开会的时候有个缩写名词没听懂等。第一个 Mentor的作用就是师傅领进门。</p>
<p>公司还提供了系统的专业知识培训。半年内，她先后参加了New SDET in Microsoft、Test Automation等培训，这些都是测试工作的基础知识。说起修行在自身，公司MyLearning网站上有不少测试专题，比如性能测试、代码覆盖率研究和安全测试等;这个网站有无数的在线课程录像，在这里可以学习其他员工的知识和经验，帮助自己更好地做测试工作;近期即将进行的技术讲座、培训、会议等也会在这里公布，热门专题一定要早点去注册占座，否则就没位子了。另外，她还发现了一个非常棒的资源MSLibrary，那里有无比丰富的技术书籍、新闻杂志和研究论文等。公司还投资了一系列的综合能力培训，为员工提供从各方面提升软技能的平台：有些培训是语言方面的，比如觉得英文不够好的可以去上课，老外来到中国也可以学中文;还有一些是教你怎么说话的，比如告诉你怎么精准提问、精准回答，怎样做演讲，怎样去沟通得到大家都想要的结果; 还有一些教你怎么思考，比如创新思考，不同情况下的思考方式等。这些培训很实用，一般学完了就可以运用到实际工作和生活中。</p>
<p>再后来，李敏对安全测试的兴趣日渐浓厚，她根据自己的发展需求和兴趣找了美国这方面的大牛来做Mentor，渐渐地在System Center Configuration Manager 2007 SP1中挑起了做安全测试的担子。她还在上海的服务器与开发工具事业部中组建了一个跨产品组的虚拟团队，一方面带领团队成员学习安全知识和安全开发流程，另一方面积极向各个产品组推广实施安全开发流程的最佳实践经验。虚拟团队的成员来自各个不同的产品组，能花在安全方面的时间都是工作之余，要带领这个团队凝聚力量朝一个目标努力是并不容易的事情。最初组建团队的时候，她会用自己对安全方面的热情感染其他有兴趣的人，接着用事例让大家认识到安全对于微软产品真的很重要，而且安全方面的知识对于长期的职业发展也很有帮助，就这样招募到了团队的最初几个核心成员。接下来就是确定这个组的远景、使命和活动计划，她先提出了一个草案然后组织大家一起讨论，经过一番激烈辩论、修正大家达成了共识。其实，最大的困难还是来自于按照计划一步一步地开展活动，在团队成员兴趣减退的时候，需要振作士气让大家重新记起最初的梦想在一些成员特别忙的时候，需要灵活修改计划，让他们能两头兼顾;另外还要考虑怎样能够更好地把安全意识和最佳实践经验传递给所有员工，比如会选择技术讲座、安全知识简报和展示等多种宣传方式。在这个过程中，李敏学到了很多东西，尤其是 influence without authority的领导方式，通过影响来带动别人，而不是通过上下级的权威去要求别人。</p>
<p>此时，她对微软的职业发展也有了更加深刻的认识：</p>
<p><strong>职业发展体验二、微软的职业发展道路为不断挑战自己的人而设计</strong></p>
<p>关于员工的职业发展，年中的时候会专门有一个关于职业发展的讨论(Mid-Year Career Discussion，在公司内部内部简称MYCD)。经理会和员工一对一坐在一起，评估员工现在所处的发展阶段、能力水平等，讨论员工的未来三到五年的职业发展规划，然后进一步制定实施计划。微软给员工的职业发展道路也比较灵活，总体上有个人贡献者(Individual Contributor，简称IC)和管理(Management)两条职业发展轨迹。</p>
<p>软件测试开发工程师属于IC，也是李敏最初选择的轨迹。在微软，资深工程师很受尊敬也很有影响力。公司为工程师设计了具有挑战性的职业发展道路，所以，在这儿碰到一个为微软服务了十几年的工程师是稀松平常的事情。对于软件测试开发工程师来说，可以一路从Test(初级)做到Test II(中级)，Senior Test(高级)，甚至Principal Test(首席)，随之而来的挑战是测试工作的范围、影响力不断扩大。比如一位Senior Test的挑战可能是对整个产品的测试工作做出很大的贡献，而一位Principal Test面临的挑战则是在整个Microsoft倡导新的测试技术，这都需要多年的积累，也很有挑战性。还有一个职位叫做Test Architect，这个职位负责测试Architect设计出来的architecture，光听听就知道很酷了。</p>
<p>员工会选择一条职业发展轨迹前进，但也可以根据兴趣和能力进行调整。从2007年开始，李敏的小组需要将部分测试工作外包出去，李敏在经理的指导下开始参与组建和发展外包软件测试组的工作，这让她发掘了自己在管理方面的兴趣和潜力。组建外包测试组的第一步是招人，先确定职位所需要的能力，然后筛选简历，开始面试，多方面考察候选人，最终做出决定。然后是培训工作所需要的知识，老组员带新组员，要求新组员在一周之内学会并可以上手工作。接着是制订一些规范流程，让组员知道怎样去高效地独立工作，也让整个过程更便于管理。比如，为了保证自动化的代码质量，李敏搭建了一个回归测试平台和一个网站，所有的自动化必须在这个平台上通过3次，才能去网站上把它们标记为自动化完成。此时这个组能够较好地运作起来了，李敏会和组员定期会进行一对一的谈话，了解他们的状态和遇到的问题等，综合分析之后会想一些办法去优化流程和提高团队的效率。经过观察，她还确定了一些技术能力和综合能力不错的组员，适当授权给他们去担当更多的责任，发挥他们的聪明才智，也减少自己的管理成本。整个过程下来，她发现管理很有意思也很挑战，自己有兴趣也有潜力去做，于是她在一个 MYCD里调整了职业发展轨迹。经理了解之后也给与了相应的支持和辅导，比如会建议如何去打磨管理方面的技巧，也会抛出问题让她自己去思考该怎么解决、怎样做得更好。</p>
<p>选择不同的职业发展轨迹是一种挑战，而换个产品甚至迈进一个完全陌生的领域是另一种挑战。她身边就有一些同事选择加入其他的产品组。在这一点上，微软多元化的产品结构给员工提供了特别好的机会，从Windows到SQL Server、Visual Studio，从Office到XBox、MSN等，跨度很大，就像是一个IT业界。员工总能找到挑战自己的机会，做熟了这个产品还可以做另外一个产品。在微软，经常可以看到工作了多年依旧保持着高度激情的员工，这恐怕是和公司提供的多元化的职业发展道路是分不开的。</p>
<p>时间如白驹过隙，2009年已经到来，她所在的组正在做下一个版本的Configuration Manager，她也在带领一个小组负责产品的UI测试工作。</p>
<p>回顾这三年半的历程，激动人心的挑战、解决问题的成就感以及团队合作的乐趣始终伴随左右。而抬头向前看时，还有太多未知的探索之旅等待着。</p>
<p>希望大家能喜欢这些心得与经验的分享。</p></div>
<p><!-- 这篇新闻中是否有争论或者观点交锋呢？如果希望读者参与，请点击<a href="http://pkzone.csdn.net/AdminManage/Editor_Apply.aspx" mce_href="http://pkzone.csdn.net/AdminManage/Editor_Apply.aspx">这里</a>，创建一个观点PK &#8211;></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://jaunty.me/blog/2009/06/sdet-in-microsoft/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>漫谈Fuzz测试技术</title>
		<link>http://jaunty.me/blog/2009/05/%e6%bc%ab%e8%b0%88fuzz%e6%b5%8b%e8%af%95%e6%8a%80%e6%9c%af/</link>
		<comments>http://jaunty.me/blog/2009/05/%e6%bc%ab%e8%b0%88fuzz%e6%b5%8b%e8%af%95%e6%8a%80%e6%9c%af/#comments</comments>
		<pubDate>Wed, 20 May 2009 01:32:40 +0000</pubDate>
		<dc:creator>jaunty</dc:creator>
				<category><![CDATA[单元测试]]></category>
		<category><![CDATA[安全测试]]></category>
		<category><![CDATA[软件测试]]></category>
		<category><![CDATA[测试技巧]]></category>
		<category><![CDATA[白盒测试]]></category>

		<guid isPermaLink="false">http://jaunty.me/blog/2009/05/%e6%bc%ab%e8%b0%88fuzz%e6%b5%8b%e8%af%95%e6%8a%80%e6%9c%af/</guid>
		<description><![CDATA[Part 1  Security Testing Overview     我相信大家对测试不陌生，但是对安全测试可能有一些疑问。安全测试关心的问题是不一样的。这种测试也被人叫做工具测试、渗透测试、攻击测试、测试产品安全性。     这种测试需要首先知道各种各样的攻击的方式和原理，在攻击产生之前尽量多的找到产品的漏洞，尽量多的发现产品里面的问题，再努力把它解决掉。 What is the difference between security testing and traditional function based testing ?     这两个之间的差别我们可以用一个简单的东西来说明，Targeted towards making sure that the app does what it is supposed to do。     For Functionality testing：我设计这个产品是1、2、3、4、5，我得让它能干到1、2、3、4、5才行，不是说是1、2、3、4，少1份干不了。这是一般的出来的结果也是一二三四五。     For Security testing：是说我设计了1、2、3、4、5，我得确定你干出来的不是1、2、3、4、5、6、7，还多出来2个。大家都知道你用word去解析一个文件，看一个文档的时候，是一个代码，具体怎么发生大家可能比较清楚的。     一般来说，重点是通用的漏洞、Memory问题、堆溢出、栈溢出，还有各种各样的溢出，SQL、XSS和各种各样的validation。被黑客熟悉的除了我们耳熟能详的漏洞之外，还要关注其他的一些东西，比如说Access Control、information、加密方面的问题、认证方面的问题。一些软件安全工程师经常用加密技术，但是用错或者是设计上有一些东西出现错误。 Security Testing一般的方法就是以下这几种： （1）White BOX：我们一般会用静态的源码扫描工具。通过对源代码的扫描，我们可以把源代码的某一个函数，某一个文件，某一行用了哪些不安全的东西，有哪些漏洞，有哪些缓存区域的漏洞等等，这些东西都能扫描出来。通过扫描把这些漏洞全部做出来以后，从源代码方面能够保证基本上保证常见的漏洞不会出现。  （2）Black BOX：首先要灵活，会有很多的方法，比较好的有Injection Fuzzer和Dumb [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Part 1  Security Testing Overview</strong></p>
<p>    我相信大家对测试不陌生，但是对安全测试可能有一些疑问。安全测试关心的问题是不一样的。这种测试也被人叫做工具测试、渗透测试、攻击测试、测试产品安全性。</p>
<p>    这种测试需要首先知道各种各样的攻击的方式和原理，在攻击产生之前尽量多的找到产品的漏洞，尽量多的发现产品里面的问题，再努力把它解决掉。</p>
<p>What is the difference between security testing and traditional function based testing ?</p>
<p><span id="more-116"></span></p>
<p>    这两个之间的差别我们可以用一个简单的东西来说明，Targeted towards making sure that the app does what it is supposed to do。</p>
<p>    For Functionality testing：我设计这个产品是1、2、3、4、5，我得让它能干到1、2、3、4、5才行，不是说是1、2、3、4，少1份干不了。这是一般的出来的结果也是一二三四五。</p>
<p>    For Security testing：是说我设计了1、2、3、4、5，我得确定你干出来的不是1、2、3、4、5、6、7，还多出来2个。大家都知道你用word去解析一个文件，看一个文档的时候，是一个代码，具体怎么发生大家可能比较清楚的。</p>
<p>    一般来说，重点是通用的漏洞、Memory问题、堆溢出、栈溢出，还有各种各样的溢出，SQL、XSS和各种各样的validation。被黑客熟悉的除了我们耳熟能详的漏洞之外，还要关注其他的一些东西，比如说Access Control、information、加密方面的问题、认证方面的问题。一些软件安全工程师经常用加密技术，但是用错或者是设计上有一些东西出现错误。</p>
<p>Security Testing一般的方法就是以下这几种：</p>
<p>（1）White BOX：我们一般会用静态的源码扫描工具。通过对源代码的扫描，我们可以把源代码的某一个函数，某一个文件，某一行用了哪些不安全的东西，有哪些漏洞，有哪些缓存区域的漏洞等等，这些东西都能扫描出来。通过扫描把这些漏洞全部做出来以后，从源代码方面能够保证基本上保证常见的漏洞不会出现。 <br />
（2）Black BOX：首先要灵活，会有很多的方法，比较好的有Injection Fuzzer和Dumb Fuzzer，后面会介绍它们之间的区别。<br />
（3）Gray BOX</p>
<p><strong>Part 2  Smart Fuzz Test</strong></p>
<p>    Fuzz这个名词来自于Professor Barton Miller。在1989年一个风雨交加的夜晚，他登陆一台自己的主机，不知道怎么回事，信号通过猫传到主机上，雷电一闪，把里面的高位变低位，低位至高位了，结果到了主机以后改变了。他突发奇想，把这种方式作为一种测试的方式来做。</p>
<p>1、到底什么是Fuzz Test？</p>
<p>    Generally speaking fuzz is a brute force method which used to break software，就是用大量的测试用例一个一个试，尽可能多的找出有可能出问题的地方。</p>
<p>2、Fuzz怎么工作？<br />
    现在有无数有名的Fuzz工具，有很多人很多还在写，一般包括四个部分。<br />
（1）Generate lots of malformed data as test cases，要生成大量的测试用例。这个测试用力是malformed的，一个软件首先要找到输入点，然后把数据丢进去，这个数据有可能是一个文件，有可能是一个数据包，有可能是测试表里面的一个项，有可能是临时文件里面的一个东西，总之是一种数据，要定义malformed这种非正常的数据。<br />
（2）Drop the test cases into product，把它丢进去，看这个产品怎么反应。<br />
（3）Monitor and log any crash/exception triggered by malicious input.<br />
（4）Review the test log, investigated deeply.</p>
<p>3、Injection Fuzzer和Dumb Fuzzer的区别</p>
<p>    下面我们说一下Dumb Fuzzer和Intelligent Fuzzer之间的区别。</p>
<p>    Dumb就是哑的，就是笨的意思。刚开始Fuzz的时候用的都是这种东西，直接把非法数据丢到软件里边去，这种东西很难真正测试出问题，因为很难把问题放到缓冲区去。比如丢一个Word，不能随便写一个文件，这就很难测试到真正问题，必须基本符合Word本身的文件格式，才有可能测试到结果。要考虑到软件本身执行的流程，你的case放进去，能够放到多深，逻辑放到多深，你要考虑这个问题。你要写这种程序的话，就要非常了解要测试的文档结构。</p>
<p>    什么东西可以被Fuzzed？文件格式可能出问题，数据包也可能出问题。因为数据包在解析数据包的时候也是一个状态机，放进去以后再看下一步到哪里去。抗组件这些东西也是相当容易出问题的。这么多东西，都是可以被Fuzz的。当然有一些东西也是可以被Fuzz的，我们现在说的集中是软件产品，硬件也可能有。</p>
<p>4、几个Fuzz工具</p>
<p>    简单介绍几个Fuzz工具，因为Fuzz的工具特别多，下面结合我在工作中的用到的一些东西，用最简单的方式介绍一下。</p>
<p>（1）Com Raidor</p>
<p>    对于ActiveX，一般来说，我们用的都是Com Raidor，它是非常简单，而且是免费的，它是Idenfense的产品。你只要选中，它里面有很多的项目。因为很多问题是针对IE的，它就会生成测试用例，会把脚本拿出来，一个一个的丢到IE里跑，接下来一直是这个状态。很简单，相信点几下鼠标就可以做。大家如果在测试的时候，其实跑一下也不费什么力。</p>
<p>（2）Fuzz网络协议——SPIKE</p>
<p>    SPIKE第一个提出格式化Fuzz的概念，而且提供了免费的、开源的工具，它发现了很多著名的漏洞。如果我要用SPIKE Fuzz一个文件的话就不是很简单了。Fuzz的时候，你要保证数据结构基本是正确的，不用完全对，完全对的话就不用Fuzz了。改一些小的地方，一次改一点点，一次改一点点，一次改一个地方或者几个地方，不要改太多，这样一丢，才能测试到东西。如果改的太多，最基本的条件没有满足，进去以后它就会走到其他分值区。这是一个结构化的最基本的原理。是要注重数据之间的结构，在这种情况下才能比较准确的找到问题。</p>
<p>    协议一般都有状态，第二个包过来，第一个包回去，第三个包过来，第四个包回去，可能是第三次组合的东西某一项才会触发漏洞。但是如果你从第一个包就开始胡乱的发，也许根本进行不到第三个包去了。所以说，协议Fuzz的文件要更麻烦一点。你要想把它送的深，送的远，送的逻辑远，覆盖的逻辑深，把东西丢到程序里面深一点，你得思考程序到底是怎么样执行的，你得想它控制的东西不是一个重复的。我想它已经不是一个纯黑盒测试了，要考虑程序里面是怎么运行的，还要考虑到程序的具体逻辑。</p>
<p> </p>
<p>    本文主要内容整理自著名软件安全专家王清先生在<a href="http://www.sinoit.org.cn/Security2008/flashindex2.html"><strong>2008中国软件安全峰会</strong></a>上的演讲，欢迎<a href="http://www.sinoit.org.cn/Security2008/PPT下载页面/wangqing.html"><strong>下载本文资料</strong></a>。</p>
]]></content:encoded>
			<wfw:commentRss>http://jaunty.me/blog/2009/05/%e6%bc%ab%e8%b0%88fuzz%e6%b5%8b%e8%af%95%e6%8a%80%e6%9c%af/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>UI界面测试共性bug汇总</title>
		<link>http://jaunty.me/blog/2009/01/gui-test-guidelin/</link>
		<comments>http://jaunty.me/blog/2009/01/gui-test-guidelin/#comments</comments>
		<pubDate>Thu, 15 Jan 2009 01:57:31 +0000</pubDate>
		<dc:creator>jaunty</dc:creator>
				<category><![CDATA[手动测试]]></category>
		<category><![CDATA[软件测试]]></category>
		<category><![CDATA[GUI测试]]></category>
		<category><![CDATA[测试基础]]></category>
		<category><![CDATA[测试技巧]]></category>

		<guid isPermaLink="false">http://jaunty.me/blog/?p=74</guid>
		<description><![CDATA[对于UI界面的测试做的久了必然会发现有个共性，今早看到这个老兄给做了个汇总，甚觉受益，转过来以供备用。可以在测试的时候做checklist使用。 UI测试常见BUG汇总 发布时间: 2009-1-14 15:11    作者: my.adi    来源: 51Testing论坛 适用于新手 　　录入界面 　　1.1 输入字段要完整，且要与列表字段相符合（参照数据库进行检查） 　　1.2 必填项一律在后面用*表示（必填项为空在处理之前要有相关的提示信息） 　　1.3 字段需要做校验，如果校验不对需要在处理之前要有相关的提示信息 　　（1） 长度校验 　　（2） 数字、字母、日期等等的校验 　　（3） 范围的校验 　　1.4 录入字段的排序按照流程或使用习惯，字段特别多的时候需要进行分组显示 　　1.5 下拉框不选值的时候应该提供默认值 　　1.6 相同字段的录入方式应该统一（手动输入 、点选 、下拉选择、参照） 　　1.7 录入后自动计算的字段要随着别的字段修改更新（如单价变后，金额也变） 　　1.8 日期参照应该既能输入，又能从文本框选择 　　界面格式 　　2.1 字体颜色、大小、对齐方式（根据字段的性质确定）、加粗的一致性 　　2.2 文本框、按钮、滚动条、列表等控件的大小、对齐、位置的一致性 　　2.3 所有新增、修改、查看页面加上页面说明（如：XXX新增、XXX编辑、XXX查看等说明字样），（弹出的）界面要有标题，标题与内容要一致 　　2.4 不同界面显示相同字段的一致性（如列表界面和编辑界面） 　　2.5 界面按钮显示要求（查询、新增、删除顺序） 　　2.6 列表的顺序排列应该统一（按照某些特定条件排序） 　　2.7 下拉框中的排列顺序需要符合使用习惯或者是按照特定的规则排定 　　2.8 所有弹出窗口居中显示或者最大化显示 　　2.9 信息列表中如果某个字段显示过长用“…”或者分行显示 　　2.10 [...]]]></description>
			<content:encoded><![CDATA[<p>对于UI界面的测试做的久了必然会发现有个共性，今早看到这个老兄给做了个汇总，甚觉受益，转过来以供备用。可以在测试的时候做checklist使用。</p>
<p>UI测试常见BUG汇总<br />
发布时间: 2009-1-14 15:11    作者: my.adi    来源: 51Testing论坛</p>
<p>适用于新手</p>
<p>　　录入界面</p>
<p>　　1.1 输入字段要完整，且要与列表字段相符合（参照数据库进行检查）</p>
<p>　　1.2 必填项一律在后面用*表示（必填项为空在处理之前要有相关的提示信息）</p>
<p>　　1.3 字段需要做校验，如果校验不对需要在处理之前要有相关的提示信息</p>
<p>　　（1） 长度校验</p>
<p><span id="more-74"></span></p>
<p>　　（2） 数字、字母、日期等等的校验</p>
<p>　　（3） 范围的校验</p>
<p>　　1.4 录入字段的排序按照流程或使用习惯，字段特别多的时候需要进行分组显示</p>
<p>　　1.5 下拉框不选值的时候应该提供默认值</p>
<p>　　1.6 相同字段的录入方式应该统一（手动输入 、点选 、下拉选择、参照）</p>
<p>　　1.7 录入后自动计算的字段要随着别的字段修改更新（如单价变后，金额也变）</p>
<p>　　1.8 日期参照应该既能输入，又能从文本框选择</p>
<p>　　界面格式</p>
<p>　　2.1 字体颜色、大小、对齐方式（根据字段的性质确定）、加粗的一致性</p>
<p>　　2.2 文本框、按钮、滚动条、列表等控件的大小、对齐、位置的一致性</p>
<p>　　2.3 所有新增、修改、查看页面加上页面说明（如：XXX新增、XXX编辑、XXX查看等说明字样），（弹出的）界面要有标题，标题与内容要一致</p>
<p>　　2.4 不同界面显示相同字段的一致性（如列表界面和编辑界面）</p>
<p>　　2.5 界面按钮显示要求（查询、新增、删除顺序）</p>
<p>　　2.6 列表的顺序排列应该统一（按照某些特定条件排序）</p>
<p>　　2.7 下拉框中的排列顺序需要符合使用习惯或者是按照特定的规则排定</p>
<p>　　2.8 所有弹出窗口居中显示或者最大化显示</p>
<p>　　2.9 信息列表中如果某个字段显示过长用“…”或者分行显示</p>
<p>　　2.10 人员、时间的缺省值一般取当前登录人员和时间</p>
<p>　　2.11 对于带有单位的字段，需要字段的标签后面添加如下内容：“（单位）”</p>
<p>　　功能问题</p>
<p>　　3.1 按钮功能的实现（如返回按钮能否返回）</p>
<p>　　3.2 信息保存提交后系统给出“保存/提交成功”提示信息，并自动更新显示</p>
<p>　　3.3 所有有提交按钮的页面都要有保存按钮（每个界面风格一致）</p>
<p>　　3.4 凡是点选或者下拉选择的界面，如果一旦选择完了无法回到不选择的情况，需要加上“清除选择”功能按钮</p>
<p>　　3.5 没有选择记录点击删除/修改按钮要提示“请先选择记录”</p>
<p>　　3.6 选择记录后点击删除按钮要提示“确实要删除吗？”</p>
<p>　　3.7 需要考虑删除的关联性，即删除某一个内容需要同时删除其关联的某些内容</p>
<p>　　3.8 界面只读的时候（查询、统计、导入）等，应该不能编辑</p>
<p>　　查询问题</p>
<p>　　4.1 查询条件缺少一些可以查询的字段</p>
<p>　　4.2 有些查询条件需要支持模糊查询</p>
<p>　　4.3 需要考虑有些查询条件本身的关联性（即某个查询条件的取值范围是依赖于其它查询条件的取值）</p>
<p>　　4.4 查询条件名称与信息列表及信息编辑页面相应的字段名称完全统一</p>
<p>　　4.5 不同模块相同字段的查询方式应该统一（手动输入 、点选 、下拉选择）</p>
<p>　　4.6 出报表的时候，查询条件需要显示在报表标题的下面，这样看报表的时候知道数据的依据是什么</p>
<p>　　4.7 对于范围的查询采用全闭的形式（如 [2006-1-1,2006-12-30]）</p>
]]></content:encoded>
			<wfw:commentRss>http://jaunty.me/blog/2009/01/gui-test-guidelin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IBM自动化测试专题</title>
		<link>http://jaunty.me/blog/2009/01/ibm-automation-test/</link>
		<comments>http://jaunty.me/blog/2009/01/ibm-automation-test/#comments</comments>
		<pubDate>Fri, 09 Jan 2009 07:30:15 +0000</pubDate>
		<dc:creator>jaunty</dc:creator>
				<category><![CDATA[软件测试]]></category>
		<category><![CDATA[IBM]]></category>
		<category><![CDATA[rft]]></category>
		<category><![CDATA[自动化测试]]></category>

		<guid isPermaLink="false">http://jaunty.me/blog/?p=66</guid>
		<description><![CDATA[今天收到订的IBM的通知邮件~有个自动化测试的专题： 大概浏览一下，还是有些东西有点用，虽然IBM有些东西很擅长故弄玄虚，不过读一下当补充业余知识了。 http://www.ibm.com/developerworks/cn/s_newsletter/dw_s_20090108.html 尤其是rup原则的自动化测试的实施。以及ITCL的面向对象组织测试的思想可以学习一下。 虽然测试上来说IBM的工具和很多理念并没有多大的市场，但是毕竟道理都是相通的。可以理解一下。深化一下认识。]]></description>
			<content:encoded><![CDATA[<p>今天收到订的IBM的通知邮件~有个自动化测试的专题：<br />
大概浏览一下，还是有些东西有点用，虽然IBM有些东西很擅长故弄玄虚，不过读一下当补充业余知识了。</p>
<p>http://www.ibm.com/developerworks/cn/s_newsletter/dw_s_20090108.html</p>
<p>尤其是rup原则的自动化测试的实施。以及ITCL的面向对象组织测试的思想可以学习一下。<br />
虽然测试上来说IBM的工具和很多理念并没有多大的市场，但是毕竟道理都是相通的。可以理解一下。深化一下认识。</p>
]]></content:encoded>
			<wfw:commentRss>http://jaunty.me/blog/2009/01/ibm-automation-test/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

