企业家 – Entrepreneur

by benfangd
可是,企业家有一点是共同的,就是他们的思维方式。
(海归论坛 http://www.haiguinet.com)人在生活中总是遇到各种各样的问题,可是,不同的人对问题的反应是不一样的。有些人是唉声叹气,这是命啊,然后就尽量做到对问题视而不见,听而不闻。
(海归论坛 http://www.haiguinet.com)

也有些人遇到问题,就觉得解决问题是政府的事,所以,他们会在报刊上发表文章,呼吁政府重视,很多人还会给政府领导写公开信。虽然他们也知道政府领导不一定会看。
(海归论坛 http://www.haiguinet.com)

还有一些人会谴责社会,指责大众麻木不仁,比如,看到公共汽车上有歹徒抢劫,而没有人管时候,他们就会在报纸上发一通牢骚,质问大众为什么变成冷血动物了。
(海归论坛 http://www.haiguinet.com)

而企业家不一样,企业家会想到,如何用市场的方法去解决问题,比如,同样看到公共汽车上抢劫案,他可能会想到,报警的速度太慢了,也许可以在公共汽车上装一个按钮,只要一按,就自动接到公安局,而且,同时在公共汽车上装个定位仪,在揿按钮的同时,也把自己的方位送到警察局去,这样,可以确保警察及时赶到。
(海归论坛 http://www.haiguinet.com)

在常人看来是问题的东西,在企业家看来都是机会。
(海归论坛 http://www.haiguinet.com)

当有人抱怨中国没有互联网时,企业家看到了机会,有人从美国回去,开了亚信公司,取得了巨大成功。
(海归论坛 http://www.haiguinet.com)

当有人抱怨中国电讯落后时,企业家看到商机,比如,有人从美国回去,开了UTStarcom公司,也获得了巨大成功。
(海归论坛 http://www.haiguinet.com)

受这些企业家的影响,我的思维方式也慢慢发生改变。
(海归论坛 http://www.haiguinet.com)

我开始寻找社会不完善的地方,或者说那些社会缺点,然后考虑解决办法。
(海归论坛 http://www.haiguinet.com)

比如说,我以前常感慨国内盗版问题严重,软件开发商的梦魇是自己辛辛苦苦开发出来的软件,被人盗版了。还有一些程序员想开发软件,因为盗版猖獗,失去了开发软件的兴趣。
(海归论坛 http://www.haiguinet.com)

现在我感到,这种现象可能蕴藏了潜在的商业机会。比如,可以成立一个“防盗版公司”,为软件开发商提供防盗版的功能。

又比如,国内论文抄袭现象严重,可以做检查抄袭的软件,让这些抄袭者很容易就暴露。
(海归论坛 http://www.haiguinet.com)

当然,通过市场解决问题需要经济发展到一定水平。
(海归论坛 http://www.haiguinet.com)

我上次回国,住在我哥哥的家中,他是前两年刚买的公寓,可在他公寓的门口,有人把一些广告贴在煤气表上,很难洗去。把房子弄得很陈旧的感觉。我觉得这就是个问题。
(海归论坛 http://www.haiguinet.com)

后来看到分众传媒公司做的业务,其实就用市场方法解决了这个问题。他们在大楼里放电视,在电视中做广告,这样,就不会把大楼中的墙弄得很脏。可是,大楼里放电视,成本比较高,现在只适合高档住宅区,在中小城市的公寓房,还不具备这个条件。
(海归论坛 http://www.haiguinet.com)

不过,我相信,如果大家都考虑用市场来解决问题,那么,这本身就可以促进经济的发展,使得解决问题的时机提早到来。
(海归论坛 http://www.haiguinet.com)

对一个人是毒药的东西,可能是另一个人的美食。谈起中国,有人摇头,问题成堆。可是,在企业家看来,每个问题都代表着一个机会,每个问题都可能造就将来的一位百万富翁。

Advertisements

Link to Datasource error 1 – Not set the target server for DS


By W.ZH Oct 2009
Issue:

You setup datasource (jdbc/AAA_DS)in the Weblogic server by the manage console, test DS connection ok,, deploy your web application. It gets unable to resolve “jdbc.AAA_DS” error.  then your application can not run .Solve: After create DS, you need set data source Targets. in your — Targets  – select one manged server of your WLS domain. the server should be the server that you deployed your web application to it..

After you set the server target, then ur DS can be used by your application in WLS.

Selenium Better Practice

Selenium Better Pratice

By 桃之夭夭

Selenium 是 thoughtworks公司的一个集成测试的强大工具。最近参与了一个系统移植的项目,正好用到这个工具,

把一些使用心得分享给大家,希望大家能多多使用这样的强大的,免费的工具,来保证我们的质量。

Selenium 的文档现存的不少,不过都太简单了。使用Selenium的时候,我更多的是直接去看API文档,好在API不错,

一个一个看,就能找到所需要的 🙂   官方网站:http://www.openqa.org/selenium/

好,下面进入正题!

一、Selenium 的版本

Selenium 现在存在2个版本,一个叫 selenium-core, 一个叫selenium-rc 。

selenium-core 是使用HTML的方式来编写测试脚本,你也可以使用 Selenium-IDE来录制脚本,但是目前Selenium-IDE
只有 FireFox 版本。

Selenium-RC 是 selenium-remote control 缩写,是使用具体的语言来编写测试类。

selenium-rc 支持的语言非常多,这里我们着重关注java的方式。这里讲的也主要是 selenium-rc,因为个人还是喜欢这种
方式 🙂

 二、一些准备工作

1、当然是下载 selenium 了,到 http://www.openqa.org/selenium/ 下载就可以了,记得选择selenium-rc 的版本。

2、学习一下 xpath 的知识。有个教程:http://www.zvon.org/xxl/XPathTutorial/General_chi/examples.html
     一定要学习这个,不然你根本看不懂下面的内容!

3、安装 jdk1.5

 三、selenium-rc 一些使用方法

selenium-remote-control-0.9.0\server 目录里,我们运行 java -jar selenium-server.jar
之后你就会看到一些启动信息。要使用 selenium-rc ,启动这个server 是必须的。

当然,启动的时候有许多参数,这些用法可以在网站里看看教程,不过不加参数也已经足够了。

selenium server 启动完毕了,那么我们就可以开始编写测试类了!

我们先有个概念,selenium 是模仿浏览器的行为的,当你运行测试类的时候,你就会发现selenium 会打开一个

浏览器,然后浏览器执行你的操作。

 好吧,首先生成我们的测试类:

java 代码

  1. public class TestPage2 extends TestCase {   
  2.   private Selenium selenium;   
  3.   
  4.   protected void setUp() throws Exception {   
  5.      String url = “http://xxx.xxx.xxx.xxx/yyy”;   
  6.      selenium = new DefaultSelenium(“localhost”, SeleniumServer.getDefaultPort   
  7.                                 (), “*iexplore”, url);   
  8.      selenium.start();   
  9.                
  10.      super.setUp();                        
  11.            
  12.   }   
  13.   
  14.   protected void tearDown() throws Exception {   
  15.            
  16.       selenium.stop();   
  17.       super.tearDown();   
  18.                
  19.   
  20.   }   
  21.   
  22. }  

代码十分简单,作用就是初始化一个 Selenium 对象。其中:
url : 就是你要测试的网站
localhost:  可以不是localhost,但是必须是 selenium server 启动的地址
*iexplore :  可以是其它浏览器类型,可以在网站上看都支持哪些。

下面我就要讲讲怎么使用selenium 这个对象来进行测试。

1、测试文本输入框

假设页面上有一个文本输入框,我们要测试的内容是 在其中输入一些内容,然后点击一个按钮,看看页面的是否跳转
到需要的页面。

  1. public void test1() {   
  2.            
  3.     selenium.open(“http://xxx.xxx.xxx/yyy”);   
  4.            
  5.     selenium.type(“xpath=//input[@name=’userID’]”, “test-user”);   
  6.     selenium.click(“xpath=//input[@type=’button’]”);   
  7.     selenium.waitForPageToLoad(“2000”);   
  8.     assertEquals(selenium.getTitle(), “Welcome”);   
  9. }  

上面的代码是这个意思:
1、调用 selenium.open 方法,浏览器会打开相应的页面
2、使用 type 方法来给输入框输入文字
3、等待页面载入
4、看看新的页面标题是不是我们想要的。

2、测试下拉框

java 代码

  1. public void test1() {       
  2.                
  3.     selenium.open(“http://xxx.xxx.xxx/yyy”);       
  4.                
  5.     selenium.select(“xpath=//SELECT[@name=’SBBUSYO’]”, “index=1”);   
  6.     selenium.click(“xpath=//input[@type=’button’]”);       
  7.     selenium.waitForPageToLoad(“2000”);       
  8.     assertEquals(selenium.getTitle(), “Welcome”);       
  9. }     

可以看到,我们可以使用 select 方法来确定选择下拉框中的哪个选项。
select 方法还有很多用法,具体去看看文档吧。

3、测试check box

java 代码

  1. public void test1() {           
  2.                    
  3.     selenium.open(“http://xxx.xxx.xxx/yyy”);           
  4.                    
  5.     selenium.check(“xpath=//input[@name=’MEICK_000′]”);     
  6.     selenium.click(“xpath=//input[@type=’button’]”);           
  7.     selenium.waitForPageToLoad(“2000”);           
  8.     assertEquals(selenium.getTitle(), “Welcome”);           
  9. }      

我们可以使用 check 方法来确定选择哪个radio button

4、得到文本框里的文字

java 代码

  1. assertEquals(selenium.getValue(“xpath=//input[@name=’WNO’]”), “1”);  

getValue 方法就是得到文本框里的数值,可不是 getText 方法,用错了可就郁闷了。

5、判断页面是否存在一个元素

java 代码

  1. assertTrue(selenium.isElementPresent(“xpath=//input[@name=’MEICK_000′]”));  

一般这个是用来测试当删除一些数据后,页面上有些东西就不会显示的情况。

6、判断下拉框里选择了哪个选项

java 代码

  1. assertEquals(selenium.getSelectedIndex(“xpath=//SELECT[@name=’HATIMING’]”), “1”);  

这个可以用来判断下拉框显示的选项是否是期望的选项。

7、如果有 alert 弹出对话框怎么办?

这个问题弄了挺长时间,可以这样来关闭弹出的对跨框:

java 代码

  1. if(selenium.isAlertPresent()) {   
  2.   
  3.    selenium.getAlert();   
  4.   
  5. }  

其实当调用 selenium.getAlert() 时,就会关闭 alert 弹出的对话框。
也可以使用 System.out.println(selenium.getAlert()) 来查看对跨框显示的信息。

在测试的时候,有的人会显示许多alert 来查看运行时的数据,那么我们可以用下面的方式来关闭那些 alert:

java 代码

  1. while(selenium.isAlertPresent()) {       
  2.       
  3.    selenium.getAlert();       
  4.       
  5. }   

8、如何测试一些错误消息的显示?

java 代码

  1. assertTrue(selenium.getBodyText().indexOf(“错误消息”)>=0);  

切记: getBodyText 返回的时浏览器页面上的文字,不回包含html 代码的,如果要显示html 代码,用下面这个:

java 代码

  1. System.out.println(selenium.getHtmlSource());  

以上就是最常用的几个方法了,例如 click, type, getValue 等等。
还有就是一定要学习 xpath, 其实xpath 也可以有“与、或、非”的操作:

java 代码

  1. selenium.check(“xpath=//input[(@name=’KNYKBN’)and(@value=’Y’)]”);  

四、其他

selenium 还有更多的用法,例如弹出页面等等。当面对没见过的测试要求时,我最笨的方法就是按照api文档一个一个找,
好在不多,肯定能找到。

 

 

 

使用 selenium 测试文件上传的时候就不好办了,
因为安全问题,使用 javascript 是不能修改 <input type=file>
的元素的.

如果你有幸使用firefox,那么可以设置安全权限,让selenium
可以通过 type 方法来改变 <input type=file>的值.

如果你不幸使用IE,那么目前是没有办法的

我的方法就是……

在点击最后的确认按钮之前,我先

Thread.sleep(40000);

然后用一段message提示我该手动上传文件了.
然后在40秒之内,我手动选择好上传的文件,之后就是selenium
自己做了.

这样做就无法自动测试了,不过,就算是半自动化,也能满足我的
要求了

 

 

 

测试页面中的多个输入框,你还在使用这样的方式吗:

Java代码

  

selenium.type(“xpath//input[@name=’user_name’]”,   

“”);   

selenium.click(“xpath=//input[@name=’submit’]”);   

assertTrue(selenium.getBodyText().   

    indexOf(“User Name can not be blank.”)!=-1);   

selenium.type(“xpath//input[@name=’user_name’]”,   

“abc\/def”);   

selenium.click(“xpath=//input[@name=’submit’]”);   

assertTrue(selenium.getBodyText().   

    indexOf(“User Name include wrong character.”)!=-1);  

 

selenium.type(“xpath//input[@name=’user_name’]”,

“”);

selenium.click(“xpath=//input[@name=’submit’]”);

assertTrue(selenium.getBodyText().

    indexOf(“User Name can not be blank.”)!=-1);

selenium.type(“xpath//input[@name=’user_name’]”,

“abc\/def”);

selenium.click(“xpath=//input[@name=’submit’]”);

assertTrue(selenium.getBodyText().

    indexOf(“User Name include wrong character.”)!=-1);

这是一个页面上一个输入框有效性校验的测试代码。
如果只有一个 user_name 输入框,当然很简单,但是如果有20多个,甚至 30 多个,就麻烦了!

那么,你可以参考下面的方式:

Java代码

  

String checkTextVar[] = new String[]{“user_name”,   

         “user_address”, “user_info”};   

  

for(int i = 0, m = checkTextVar.length; i < m; i++) {   

  

  checkTextValidate(checkTextVar[i]);   

  

}  

 

String checkTextVar[] = new String[]{“user_name”,

         “user_address”, “user_info”};

 

for(int i = 0, m = checkTextVar.length; i < m; i++) {

 

  checkTextValidate(checkTextVar[i]);

 

}

 

其中,checkTextValidate 可以为如下方式:

Java代码

  

private void checkTextValidate(String var) {   

  

 selenium.type(“xpath//input[@name='”+var+”‘]”,   

“”);   

selenium.click(“xpath=//input[@name=’submit’]”);   

assertTrue(selenium.getBodyText().   

    indexOf(“can not be blank.”)!=-1);   

selenium.type(“xpath//input[@name='”+var+”‘]”,   

“abc\/def”);   

selenium.click(“xpath=//input[@name=’submit’]”);   

assertTrue(selenium.getBodyText().   

    indexOf(“include wrong character.”)!=-1);   

  

  

  

}  

 

private void checkTextValidate(String var) {

 

 selenium.type(“xpath//input[@name='”+var+”‘]”,

“”);

selenium.click(“xpath=//input[@name=’submit’]”);

assertTrue(selenium.getBodyText().

    indexOf(“can not be blank.”)!=-1);

selenium.type(“xpath//input[@name='”+var+”‘]”,

“abc\/def”);

selenium.click(“xpath=//input[@name=’submit’]”);

assertTrue(selenium.getBodyText().

    indexOf(“include wrong character.”)!=-1);

 

 

 

}

 

这种方式可以免去校验好多个输入框的校验,文本,数字,日期,
都可以用这种方式。

ADF lib not found for a total new project in 11g

By W.ZH Oct 15 2009
Issue:  When you install latest Jdev, create a new project and deploy it..  you always have the ADF lib issue like this:

“When you create a regular Fusion application you get two projects a Model one and a ViewController one.

If you right click the ViewController one and choose deploy you’ll be able to create a WAR file and directly deploy to WebLogic, but then you might run into an error message which will have this line somewhere in it:

java.lang.ClassNotFoundException: oracle.adf.library.webapp.ResourceServletThe right way to deploy the complete application is to do it from the application level menu – where you’ll find another deploy option – this will create an EAR file that will deploy successfully.”

 

Refer to http://blogs.oracle.com/shay/2008/11/common_pitfalls_when_deploying.html

 

Solve,, this means you can deploy the project like the normal way to right click the project button. You need to click “Application Menu” beside the application list to deploy your project, it will inside an application deploy profile to deploy your project…

What does this means?  Sometimes useage somtimes can kill your several days easily!