发布新日志

  • 有效选择回归测试用例

    2008-10-20 11:57:43

    本文出自51Testing论坛每周一问活动,感谢会员godn_1981的精彩回答。
    转载请保留出处及链接:http://bbs.51testing.com/forum-157-1.html

      今天看到51testing上有这个问题,觉得很值得探讨一下,就在此谈谈我的看法。

      关于这个问题,我粗粗的搜索以下网上的关于这个问题的说法,大都是空空理论之谈,实际操作起来并不一定适合。

      说到回归测试用例,先说什么是回归测试。顾名思义,回归测试就是修改完bug之后对程序的新的一轮测试,据微软的统计,按照他们的经验,一般开发人员解决3~4个bug会衍生出一个新的bug,这就是必须作回归测试的原因。简单的说,就是检测一下解决了bug之后有没有带进新的问题,以免把聋子给治成哑巴,就得不偿失了~~

      一般的软件测试的流程是后期快速迭代的,bug在后期是快速收敛的,debug和测试的周期也是越来越短,频率是越来越高,譬如说第一轮测试需要花上10天跑用例,那么到后期就没那么长的时间,可能就是1~2天的测试时间,在后期有时候一天就有一个新的版本,这时候就要求测试人员能快速的进行一轮回归测试。

      一般来说,覆盖越高,风险越低,但是效率就越差,反之亦然。所以如果时间允许的话,能把所有的用例都再跑一边是最好不过的,但是一般不会有那么多的时间,这就需要在效率和覆盖之间有一个适当的平衡,选择其中一部分测试用例用来作回归测试。

      选择回归测试的时候,首先要确定的是,回归测试用例的比例,这个要根据时间情况了,100%是最好了,我个人一般这个比例在60%左右。然后要确定回归测试用例的优先级。根据我的经验,一般有如下必须回归的用例:

      第一,新修改的功能,这个显然是重点

      第二,新修改的功能的关联功能,就是有耦合的部分,这个一般最好咨询一下开发人员

      第三,程序最有卖点或者说亮点的部分,这个地方一旦有问题,会使程序质量大打折扣

      第四,程序中最致命的部分,譬如说安全隐患,数据泄露,加密注册,

      第五,程序中比较脆弱的部分,这个要咨询开发人员,一般就是他们心中最没底的地方

      第六,程序的主干功能

      第七,如果以上做完,还有时间的话,最好把用例中级别比较高的用例再执行一遍。

      OK ,以上是回归测试用例的选择优先级。

      其实,即使这样做,还是有风险的。最根本的解决方法是自动化测试工具加上手工测试。具体就是常用的程序主干功能,主要功能,用自动化测试,保证每一个版本都能够执行一遍,其他修改频繁的小功能手工测试了。

      说了这么多,好像比较乱,总结一下。

      个人觉得解决这个回归测试的终极解决方案是:

      a.作每日构建

      b.基线功能自动化

      c.编写用例时一定要分级(按照风险度,常用度,重要度)

      d.手工执行回归测试用例(就是我上面说的7项)

      好了,这是我对这个问题的解决方案,欢迎大家补充,讨论,拍砖~~~~~~~~

  • 测试用例设计步骤【转】

    2008-10-20 11:52:18

      设计测试案例的时候,需要有清晰的测试思路,对要测试什么,按照什么顺序测试,覆盖哪些需求做到心中有数。测试用例编写者不仅要掌握软件测试的技术和流程,而且要对被测软件的设计、功能规格说明、用户试用场景以及程序/模块的结构都有比较透彻的理解。测试用例设计一般包括以下几个步骤:
    1、测试需求分析
    从软件需求文档中,找出待测试软件/模块的需求,通过自己的分析、理解,整理成为测试需求,清楚被测试对象具有哪些功能。测试需求的特点是:包含软件需求,具有可测试性。
    测试需求应该在软件需求基础上进行归纳、分类或细分,方便测试用例设计。测试用例中的测试集与测试需求的关系是多对一的关系,即一个或多个测试用例集对应一个测试需求。
    2、业务流程分析
    软件测试,不单纯是基于功能的黑盒测试,还需要对软件的内部处理逻辑进行测试。为了不遗漏测试点,需要清楚的了解软件产品的业务流程。建议在做复杂的测试用例设计前,先画出软件的业务流程。如果设计文档中已经有业务流程设计,可以从测试角度对现有流程进行补充。如果无法从设计中得到业务流程,测试工程师应通过阅读设计文档,与开发人员交流,最终画出业务流程图。业务流程图可以帮助理解软件的处理逻辑和数据流向,从而指导测试用例的设计。
    从业务流程上,应得到以下信息:
    A、 主流程是什么
    B、 条件备选流程是什么
    C、 数据流向是什么
    D、 关键的判断条件是什么
    3、测试用例设计
    完成了测试需求分析和软件流程分析后,开始着手设计测试用例。测试用例设计的类型包括功能测试,边界测试,异常测试,性能测试,压力测试等。在用例设计中,除了功能测试用例外,应尽量考虑边界、异常、性能的情况,以便发现更多的隐藏问题。
    黑盒测试的测试用例设计方法有:等价类划分、边界值划分、因果图分析和错误猜测,白盒测试的测试用例设计方法有:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、多重条件覆盖。在这里主要讨论黑盒测试。在设计测试用例的时候可以使用软件测试用例设计方法,结合前面的需求分析和软件流程分析进行设计:
    功能测试:测试某个功能是否满足需求的定义,功能是否正确,完备。
    适合的技术:由业务需求和设计说明导出的功能测试、等价类划分
    边界测试:对某个功能的边界情况进行测试。
              适合的技术:边界值划分
    异常测试:对某些功能来说,其边界情况无法简单的了解或某些操作不完全是正确的但又是可能发生的,类似这样的情况需要书写相关的异常测试。
              适合的技术:由业务需求和设计说明导出的特殊业务流程、错误猜测法、边界值分析、内部边界值测试、
    性能测试:检查系统是否满足在需求中所规定达到的性能,性能主要包括了解程序的内外部性能因素。内部性能因素包括测试环境的配置,系统资源使用状况;外部因素包括响应时间,吞吐量等。
             适合的技术:业务需求和设计说明导出的测试
    压力测试:压力测试又称强度测试,主要是检查系统运行环境在极限情况下软件运行的能力,比如说给一个相当大的负荷或网络流量给应用软件兼容测试:测试软件产品在不同的平台,不同的工具,相同工具的不同版本下功能的兼容性。
            
    4、测试用例评审
    测试用例设计完成后,为了确认测试过程和方法是否正确,是否有遗漏的测试点,需要进行测试用例的评审。
    测试用例评审一般是由测试leader安排,参加的人员包括:测试用例设计者、测试leader、项目经理、开发工程师、其它相关开发测试工程师。测试用例评审完毕,测试工程师根据评审结果,对测试用例进行修改,并记录修改日志。

    5、测试用例更新完善
    测试用例编写完成之后需要不断完善,软件产品新增功能或更新需求后,测试用例必须配套修改更新;在测试过程中发现设计测试用例时考虑不周,需要对测试用例进行修改完善;在软件交付使用后客户反馈的软件缺陷,而缺陷又是因测试用例存在漏洞造成,也需要对测试用例进行完善。一般小的修改完善可在原测试用例文档上修改,但文档要有更改记录。软件的版本升级更新,测试用例一般也应随之编制升级更新版本。测试用例是“活”的,在软件的生命周期中不断更新与完善。

     

  • QTP 学习视频汇总【转载】

    2008-10-20 09:18:37

     

    QTP 学习视频汇总

    http://bbs.51testing.com/viewthread.php?tid=129165

    很好的东东,与大家共分享。

    谢谢原创作者

  • 上海居住证是骗外地人的(转)

    2008-08-23 12:30:08

    上海居住证是骗外地人的(转)

    身为HR,总要帮员工办理居住证交金以及解答员工的疑惑。但是在长期的工作中,我发现了上海居住证交金的黑暗面所在,那就是居住证跟上海户口交一样多的金,但却享受不到上海户口的待遇。谨以此献给非上海户口却拼死拼活要办居住证为了交金的同志们
    一、目前上海社保的分类
    包括城镇保险、小城镇保险、外来人员综合保险三样。
    ★城镇养老保险适用人群
    本市范围内的城镇机关、事业单位、社会团体、企业、民办非企业单位的职工及其退休人员,城镇个体工商户和帮工及其退休人员。:
    ★小城镇养老保险适用人群
    [本市郊区范围内用人单位及其具有本是户籍的从业人员,以及经市政府批准的其他人员。
    一县八区:崇明、宝山、松江、嘉定、青浦、闸北、金山、奉贤、浦东新区(含南汇、川沙部分)原则上:新成立的公司参加镇保。参加农保的创造条件参加镇保。
    外来人员综合保险适用人群
    符合本市就业条件在本市务工、经商但不具有本市常住户籍的外省、自治区、直辖市的人员
    注: 1、从事家政服务的人员2、从事农业劳动的人员3、按照《引进人才实行〈上海市居住证〉制度暂行规定》引进的人员三类人

    二、 三种保险的购买费率、享受待遇等
    城镇保险 单位缴纳部分:养老金 22%, 医疗保险金 12%, 失业保险金 2%, 生育0.5%,工伤0.5%,(合计37%)公积金 7%
    个人缴纳部分:养老金 8%, 医疗保险金 2%, 失业保险金 1%, 公积金 7%
    享受待遇:1养老:基础养老金按本人退休时上年本市职工月平均工资的20%计发,个人帐户养老金按本人帐户储存额除以120计发;2医疗保险:门诊急诊大病住院都可以报。
    备注:必须办理居住证,同时在合同中要求公司按照城保来买。缴费基数是按照职工本人上年度工资总额的加权平均以后得出,最高为上年度全市职工月平均工资的300%,最低为上年度全市职工月平均工资的60%个人自己要缴纳11%,按照最低标准单位交约547。

    小城镇保险 单位缴纳部分:养老金 17%, 医疗保险金 5%, 失业保险金 2% ,生育0.5%,工伤0.5%(共25%), 公积金
    个人缴纳部分:公积金 7%,其他不需要缴纳 .
    享受待遇:1养老:缴费年限满15年的,养老金按其办理手续时上年度全市职工月平均工资的20%计发,缴费年限每增加1年,相应增加上年度全市职工月平均工资的0.5%的养老金,但最高不超过上年度全市职工月平均工资的30%;2 只能报大病和住院,医保卡内无钱

    备注:必须办理引进人才居住证;缴费基数为上年度全市职工月平均工资的60%,单位缴费约369.6
    综合保险 全部由公司替劳动者交纳,用人单位缴纳综合保险费的基数,为其使用外来从业人员的总人数乘以上年度全市职工月平均工资的60%。用人单位和无单位的外来从业人员按照缴费基数 12.5%的比例,缴纳综合保险费。(另外单位还要为每个人交纳20元管理费)


    享受待遇:享受工伤、住院医疗和老年补贴;只能报大病和住院;连续缴费满一年以上的,享受住院医疗待遇的最高额,为上年度全市职工年平均工资的4倍。外来从业人员可以获得一份老年补贴凭证,其额度为本人实际缴费基数的 7%

    备注:每月医疗卡中20元;无须办理引进人才居住证;缴费为204.80元!

    三、关于居住证的说明:
    由于上海的社保与户口和居住证紧密结合在一起,所以以下探讨的是居住证的实用性问题:,
    1养老: 持上海户口者,养老纳入上海市养老保险体系 。持居住证者,养老保险不纳入上海市养老保险体系,不能在上海市领取养老金,但离开上海的时候,可以提取养老金个人帐户部分,(如果是小城镇保险的话,由于个人不交纳费用,故离开上海时不能提取任何费用)企业所交部分将纳入社会统筹,不予提取。至于以后如何养老,需要看持居住证者户籍所在地的政策,与上海无关。
    2、医疗:按现行政策,在没有退休的时候,基本上两者无差别,退休后上海不承担持居住证的医保。

    3、购买公积金是一样的

    4、居住证都是有期限的,虽然最长是五年,可是居住证期限不能超过工作合同签定的期限,而上海的公司目前一般都是一年一签;那么每一年都要申请一次。

    5、如果你不幸在持有居住证期间社保缴纳有间断,那么对不起,你居住证期间的社保是没有办法转到上海户口的社保户头上的,如果你想要,你必须要把间断的这些钱补上。而且个人的、企业的都要你来交。否则前面交的社保你别想要。

    6、如果连续三月没缴社保或居住证到期后续办不及时得,社保帐户及医保卡等就会封存,且永远不能启封,这部分社保帐户必须转出上海(只能转个人缴纳得8%,单位缴纳得22%已统筹归上海). 如果不转存就不能继续缴四金(新政策),社保中心将自动停止社保缴纳并转从本市社保系统转出(即本市社保缴费年限归零)。 居住证要中间从不间断地办理且一直成功,连续15年以上
      各位XDJMS,发现了居住证交金和上海户口交金的不平等之处了吗?也就是说,如果你跳槽新公司,新公司不给你交四金,你前面所交的全部归零。如果你离职,两个月之内没有新公司接受并且缴纳四金,你前面所交的全部归零。如果你想休息一年,或者生个大病住院,如果你没有交满15年,你前面所交的全部归零。你交的钱全部归上海社会统筹,为上海户口的人做贡献了
    拼死拼活去办居住证交金,值得吗?要么就办户口交,要么干脆只交综合险吧。上海居住证交金,就是上海糊弄外地人的玩意儿~~~~~~~~
     
    万恶的户籍制度。。。。。。。。。。。
  • QTP 资料“索引”【转载】

    2008-08-17 10:40:00

    对于测试新手来说,查阅QTP 的帮助文档是遇到问题时的一个很好的解决方法。我发现论坛上关于这方面的资料不少,可就是比较零散,不容易被查找到。因此有必要为这些文档建立一个“索引”。下面是根据论坛上朋友们的反馈后总结的QTP 资料及其链接:

        1, QTTutorial.pdf。 安装好QTP后,此文档位于 C:\Program Files\Mercury Interactive\QuickTest Professional\help 下,如果你没有改变是默认的安装目录的话。

       2,QTP 8 Tutorial 中文版.pdf。 此文档是对QTTutorial.pdf 的翻译,可以在
    http://bbs.51testing.com/thread-1893-1-1.html 下载。此文档是初学者的第一参考文档。

       3, MainUsersGuide.pdf。安装好QTP后,此文档位于 C:\Program Files\Mercury Interactive\QuickTest Professional\help 下,如果你没有改变是默认的安装目录的话。

       4,Main_Users_Guide中文版.pdf。此文档是对MainUsersGuide.pdf的翻译,可以在
    http://bbs.51testing.com/thread-29114-1-1.html下载。此文档是深入研究和学习QTP的重要的参考文档。
       
      由于 QTP 的脚本是用VBscrīpt 写的,因此推荐一个VBscrīpt教程:

       5, VBscrīpt教程.chm。  此文档是学习VBscrīpt 的非常好的参考资料,可以在
    http://bbs.51testing.com/thread-11556-1-1.html 下载。
       
       有朋友使用了QTP后,对使用QTP后遇到的许多问题以及解决办法进行了总结,这方面不错的帖子有:
      
      6,QTP 问题个人总结
      
    http://bbs.51testing.com/thread-24154-1-1.html

      7,基础代码交流贴   http://bbs.51testing.com/thread-18429-1-1.html

    还有一些不错的帖子,他们都在 QuickTestPro 精华区里面。

    小娟发现的好东东呵呵:

      8. Oldsidney 的Homepage: http://blog.joycode.com/oldsidney/Default.aspx 

     看到好的东东,小娟还会补充加上的^-^

     

  • QTP用户指南(中文版6.80M)【转载】

    2008-08-17 10:27:37

    【源】http://bbs.51testing.com/thread-34250-1-1.html

    QTP用户指南(中文版6.80M)

    好不容易找到了中文的,送给大家吧~!

    解压说明:
    1、将三个rar文件下载;
    2、打开WinRAR;
    3、选中三个rar文件;
    4、选择WinRAR菜单中的“解压到”即可。

    附件:

    Main_Users_Guide.part1.rar (1.95 MB)
    Main_Users_Guide.part2.rar (1.95 MB)
    Main_Users_Guide.part3.rar (599.52 KB)

    【源】http://bbs.51testing.com/thread-34250-1-1.html

     

     

  • 何謂 Keyword-Driven Testing?[zz]

    2008-08-17 10:16:57

    好久没有来园子里面干活了,首先向我的瓜瓜果果们说声抱歉,对不起了!

    最近在练测试的基本功,自动化、性能测试的工具当然少不了啊!贴一些学习过程中找到的好东东,顺便给园子里面除除草、浇浇水啊!呵呵

    何謂 Keyword-Driven Testing?

    Mercury 新發表的 QuickTest Professional 8.0,又出現了一個新的名詞 (對我來說是新的名辭啦) - Keyword-Driven Testing。到底什麼是 Keyword-Driven Testing 呢?【更新一下呵呵,Mercury 现在已经被HP收购,QTP目前的版本已经9.5啦,上面说到的已经不新了呵呵

    以錄製方式建立測試的問題

    一般來說,自動化測試通常是透過錄製的方式建立測試腳本的,這樣的方式看似容易,但是實際上會遇到下列的問題:

    1. 測試人員大多不具技術背景,難以完全掌握測試工具
    2. 應用軟體必須達到一定的穩定性,才能開始錄製測試腳本
    3. 自動化測試腳本與文件是分開的
    4. 維護自動化測試腳本的成本非常高
    關鍵字驅動 (Keyword-driven )

    在 QuickTest 8 的「關鍵字驅動 (Keyword-driven )」測試架構,主要是為了解決上述「透過錄製產生測試腳本」的問題的。

    透過「關鍵字驅動 (Keyword-driven )」測試架構,測試人員不需要「錄製測試腳本」,進而改成「設計測試腳本」。

    建立 Object Repository

    在之前的文章有提到,通常測試工具都是「Object Base」的。在 QuickTest 儲存 Object 的地方稱為「Object Repository」。

    所以一開始,要先將應用軟體的 GUI Object,先記錄在「Object Repository」中。所以會先開啟「Object Repository」,按下「Add Objects」按鈕,將應用軟體的 GUI Object 加入「Object Repository」中。



    接下來點選應用軟體視窗的標題列,會出現對話視窗問您是不是要把您剛剛點選的視窗加入「Object Repository」,點選「OK」。



    由於您選擇的 Object 是一個視窗,所以 QuickTest 還會進一步問您,是不是連視窗內的所有 Object 都要加入「Object Repository」,選取「Selected object and all its descendants」後點選「OK」。



    之後,您就會看到 「Object Repository」中會出現這個視窗內的所有 GUI Object。



    接下來,建議您將那些 Object 名稱很奇怪,或是看不出代表哪一個 Object 的 Object 名稱作個修改。例如我將原本名為「Button_5」的 object,改名成為「NewOrder」。

    在使用測試工具時,這是非常重要的一個動作,為您測試腳本中的 object 名稱,訂定一個統一的規範,可以替日後的維護,減少非常多的成本喔!



    可以開始設計測試腳本了

    接下來,您可以開始設計測試腳本的工作了!注意我使用的是「設計」而不是「錄製」,因為建立測試腳本的過程,就像是您在一個 Excel 文件上設計測試個案一樣。

    您將會設計每個測試步驟,每個測試步驟主要有三個元素:

    • Item:這個測試步驟是作用在哪個 object 上,可能是個視窗、按鈕、或是輸入欄位。
    • Operation:在這個 object 上,您要執行什麼動作,如Click、Type、Select。
    • Value:有些動作,會需要輸入資料,如從一個清單 (list) 上選擇某個選項,或是在輸入欄位 (edit box) 中輸入某些值,您必須告訴 QuickTest 要用什麼資料。
    而且當您設計好一個測試步驟後,在 Documentation 欄位,會自動以英文句子顯示這個步驟的說明,這也是 QuickTest 的另一個新功能「Auto-documentation」,您在設計測試步驟的同時,文件也自動產生了。

    接下來,我將以在 Flight ( QuickTest 內建的範例程式 ),建立一個「新增訂單」的測試個案。

    這個測試個案的第一個步驟就是先 Active Flight Reservation 的主視窗。要建立這一個測試步驟,以要在 Keyword View 上的 Action1 下方點一下,就會出現 Object 的清單,供我選擇要作用的 object。我只要選擇「Flight Reservation」這個視窗 object 就行啦。



    接下來,因為我要讓這個 Flight Reservation 視窗 Active,所以我只要在 「Operation」欄位選取 Active 。因為這個 Active 不需要任何的資料,所以我不用在 「Value」欄位中輸入任何資料。

    所以我的第一個測試步驟就完成了。同時也可以看到在 「Documentation」欄位中自動出現「Make the "Flight Reservation" window active.」的說明。



    第二個測試步驟,我需要在主視窗上的「Data of Flight:」中輸入出發日期,我同樣也按照上面的方式,在「Item」欄位選擇「Data of Flight:」,在「Operation」欄位選擇「Type」,然後在「Value」欄位輸入我要出發的日期「12/12/04」,到這裡我已經完成我的第二個測試步驟。



    至於其餘的步驟,我也是以同樣的方式去完成,你可以看到整個測試腳本其實和你透過錄製的方式所建立的測試腳本一樣,這個測試腳本已經是一個可以執行的測試腳本。



    結論

    所以,您可以看到整個測試腳本建立的過程,完全不需要去執行整個「新增訂單」的操作流程,只要先完成應用軟體的使用介面 (UI) ,就可以建立一個已經準備好可以執行的測試腳本。

    這也表示您的應用軟體只要有使用介面 (UI) 就可以了,並不需要真的可以運作。所以測試人員不需要等到應用軟體已經開發得差不多,才開始建立測試腳本。測試人員可以更早就開始建立測試腳本了。

    聽起來是不是有點像 XP 所說的「測試先行」的概念呀!

    同時在建立測試腳本的過程中,測試步驟的文件也同時產生。

    至於測試腳本的維護,也與建立的過程一樣簡單,不管是使用介面 (UI) 還是操作流程的變動,都可以輕鬆改變測試腳本。

    對於技術背景不深的測試人員、系統分析師、使用者,建立測試腳本就像是在一個 Excel 中撰寫測試個案一樣簡單。

    以上就是我目前所了解的 Keyword-Driven Testing!

  • 使用nohup让程序在远程主机后台运行【转】

    2008-08-05 16:31:40

       因为我购买的一个国外主机居然开放了Telnet权限,因此我也使用Telnet登录上去玩玩Linux,但发现一关闭窗口就自动和主机断开了,和Windows的终端不一样,所以就上网找啊找,找到了一个从后台一直运行某个程序的方法。

      Unix/Linux下一般比如想让某个程序在后台运行,很多都是使用 & 在程序结尾来让程序自动运行。比如我们要运行mysql在后台:

      /usr/local/mysql/bin/mysqld_safe --user=mysql &

      但是加入我们很多程序并不象mysqld一样做成守护进程,可能我们的程序只是普通程序而已,一般这种程序使用 & 结尾,但是如果终端关闭,那么程序也会被关闭。但是为了能够后台运行,那么我们就可以使用nohup这个命令,比如我们有个test.php需要在后台运行,并且希望在后台能够定期运行,那么就使用nohup:

      nohup /root/test.php &

      提示:

      [~]$ appending output to nohup.out

      嗯,证明运行成功,同时把程序运行的输出信息放到当前目录的 nohup.out 文件中去。

      附:nohup命令参考

      nohup 命令

      用途:不挂断地运行命令。

      语法:nohup Command [ Arg ... ] [ & ]

      描述:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示“and”的符号)到命令的尾部。

      无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用。如果标准错误是一个终端,那么把指定的命令写给标准错误的所有输出作为标准输出重定向到相同的文件描述符。

      退出状态:该命令返回下列出口值:

      126 可以查找但不能调用 Command 参数指定的命令。

      127 nohup 命令发生错误或不能查找由 Command 参数指定的命令。

      否则,nohup 命令的退出状态是 Command 参数指定命令的退出状态。

      nohup命令及其输出文件

      nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。nohup就是不挂起的意思( no hang up)。

      该命令的一般形式为:nohup command &

      使用nohup命令提交作业

      如果使用nohup命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件:

      nohup command > myout.file 2>&1 &

      在上面的例子中,输出被重定向到myout.file文件中。

      使用 jobs 查看任务。

      使用 fg %n 关闭。

      另外有两个常用的ftp工具ncftpget和ncftpput,可以实现后台的ftp上传和下载,这样我就可以利用这些命令在后台上传和下载文件了。

  • 经济的真相【转】

    2008-07-27 16:59:56

            很久以前就看过的东东,这次又被看到,感觉不错,茶余饭后看看呵呵

         看完之后,知道自己又能做些什么吗?!!!!!!!!

    本文以最浅显的道理阐述经济的真相。不会有任何所谓的学术妓 女们常用来欺骗人民的深奥的学术理论,还事实以清白,真相只有一个,让我们擦亮眼睛,洞观今天发生的一切。本文在以下几方面阐述中国经济的真相。 

    1、 什么是经济发展? 
          简单的讲经济发展就是有钱,但钱从何来?钱只能印出来。那么到底是什么使印钞机不停的运转?
      假设一个岛上有1000口人,与世隔绝,人与人之间交换物品过活,但有时候你手里用来交换的东西不一定就是对方想要的,怎么办?于是人们就用都喜欢的金银作为交换的东西,于是交换方便了。但金银要磨损,携带也不方便,当交换活动频繁时,发现这个东西太繁琐,限制了交换活动,于是为了解决这个问题,想了一个办法,就是由岛上的管理者发行一种符号,用它来代替金银,于是钞票出现了。 
    刚开始这种钞票可以随时得兑换金银。大家都很放心,因为钞票就是金银。可是岛上金银的产量太小,当人们的交换活动更加频繁时,钞票不够用了,只能暂停交换。暂停交换的后果就是大家不生产别人想要的东西了,因为虽然别人用,但交换不出去,套用现在的话说就是经济发展减速了。

      于是大家想了一个办法,成立一家钱庄,这个钱庄是大家的,由钱庄来发行钞票,印出的钞票借给想用钱的人,然后这
    个人有钱了再还给钱庄。于是银行就出现了。 银行的出现,能保证交换活动更持续的进行,大家都拼命的生产,岛上的东西越来越多,银行根据产品的生产数量,不停的印制钞票,以保证交换能更深入的进行。 后来人们的交换活动更频繁了,一家钱庄太少了,于是出现了很多钱庄,总要有个管钱庄的吧,于是指定一家钱庄管理其他钱庄,并且钞票只能由这家钱庄印刷,然后通过其他钱庄借给用钱的人,中央银行就这么也出现了。  

    2、什么是对外贸易?
      有一天岛上的人发明了船,于是就到处划船跑,发现了另一个岛屿,那上面也有人,也有钞票,也像自己岛上这么活动。但自己岛上生产的东西多,那个岛上生产的东西少,1元钱在自己的岛上能买1斤大米,那个岛上的一元钱只能买半斤大米,于是另外岛上的钱来这个岛上买东西时只能2元换1元才行。于是汇率出现了。算好汇率后,他们开始互相买卖东西到对方岛上,这就是对外贸易。对外贸易丰富了人们的
    生活生产需要,使交换活动到了一个空前的高潮。  

       
    3、什么是通货膨胀?
      由于岛上生产的产品太多了,以至于没法准确估计到底该发行多少钞票,发行多了的时候,因为没有那么多产品可买,产品就开始涨价,发行少了呢就开始降价,为了保证价格稳定,央行要求各钱庄要把一部分钱放在央行里面用来调节产品的价格,根据价格情况多放和少放。这就是存款准备金率。
      可是有一部分聪明人开始怎么才能把钱弄到自己手上,他在海边捡了一颗石子,说这个石子值100万快钱,把它卖给了一个人,这个人觉得整个岛上的钱加一起也没有100万啊,怎么办,于是向钱庄借,钱庄也没有这么多钱,于是把印钞机打开,印了这100万,借给了他买了这个石子。
      然后这个人开始卖这个石子,100万卖给了第二个人,由于第一个卖石子的人把钱花了,所以岛上的钱多了,所以这一百万可以筹集到,多买些产品就有了。但当把这个石子以200万转让的时候,钱庄只能又印了100万钞票,就这样钞票越印越多,可是当这个石子不停的流动转让时,大家并不觉得岛上的钱多,产品价格还是原来的那样。可是当这个石子不流通或流通的慢时,大家觉得钱多了,可是如果当持有石子的人把它扔到大海里,那就等于岛上凭空多出N多个100 万来,怎么办,央行最害怕的就是这颗石子没了。它没了岛上产品的价格就会飞涨,就会通货膨胀。那么持有石子的人就绑架了岛上的经济。

    4、房价能绑架中国经济吗? 
      中国的房地产已经使中国央行发行了太多的人民币,如果房价下降,等于把那颗石子投进了海里,那么多印出来的钱会使中国产品价格飞涨,会发生严重的通货膨胀。
      看似房价与石子毫无相干,可是他们的属性是一样的,就是价格和价值严重的背离。实际上房地产的崩盘受害最大的并不是中国的商业银行,而是整个中国经济体系。为什么go-vern-ment迟迟没有把房价降下来,不是降不下来,如果真想降房价,只需要一道政令,房地产价格会在一夜之间土崩瓦解。可是后果谁能承担,严重通货膨胀谁来负责?房地产业已经绑架了中国的经济,是无可置疑的,是客观实在的,没有人能改变。不管谁是总理,廉洁也好,贪污也好,都希望社会和谐,可这是一个棘手的问题。


    5、房价和通货膨胀有关系吗?
      可更棘手的问题还不仅仅在这里。如果降房价,面对的是马上的通货膨胀,可不降房价,那么面对的就是更严重的通货膨胀,何去何从?
      所以最可靠的办法就是稳定房价,然后在社会产品增加时,减少货币的投放量,加上其他政策如加息、增加商业银行准备金率、缩小信贷规模等辅助手段,来使中国经济软着陆,这是最好的办法,我们看到的一切政令也是这个逻辑。不信的话,可以查阅一下近年来go-vern-ment发布的一系列调控房地产业的措施。
      可是为什么房价不稳定而且更加的疯长呢?难道是开发商与go-vern-ment在博弈吗?告诉你在中国没有人能和party叫板,几个肚子大点的开发商是没有这个实力的。实际上是幕后的另一只黑手在和中国go-vern-ment博弈,这支黑手就是外资,以美国为代表的帝国主义攫取中国人民血汗的黑手。

    6、房价高涨的原动力是什么?
      使房价上涨的动力很多,房价上涨对其有利的人就是动力之一,比如:为了GDP和个人利益的地方go-vern-ment、为了赚钱的开发商、炒房族、以至于买了房的所谓“房奴”都是是房价上涨的动力,可是最大的原动力不是这些,是外资,是美国的以攫取超额利润的各大财团。
          开发商作为商人,为了赚取高额利润不是什么伤天害理的事情,可是各行各业都有商人,难道想赚就有吗?那除非是神话。房地产业的开发商也一样,不是他们想赚多少就有多少的。根据价值规律,当商品的价格和价值严重背离时,会有一种趋向正常价格回归的力量钳制价格的上涨,可是在中国的房地产业,这种规律似乎不起作用,一个重要的原因是忽视了一个参考范围的原因,如果以中国经济本身而言确实打破了这个规律,可是目前的情况是有一股力量在维持着房地产业的价格,即托市,那么谁在托市呢?
      谁能在房地产业失控能得到巨额利润的人就是托市的人。 讨论这个问题前,现看一下中国的外汇储备情况。中国的外汇储备在近几年迅速由1、2千亿突破万亿,并且还在迅速的增长,难道是中国人民奋发图强,挣来的吗?这个不需要证明,看中国的GDP增幅就知道,外汇储备的增长速度明显大于GDP的增幅。显然不是挣来的,那么除了挣来的一部分,那么就是所谓的 “国际热钱”的涌入,而国际热钱的涌入的目的只有一个,就是要取得高额的回报。
      国际热钱进入中国市场后,首先要兑换成人民币,那么一下子哪有这么多人民币呢?只有一个办法就是让印钞机没日没夜的
    工作,然后这笔钱用来托住已是烫手山芋的房地产市场,就是拼命的投资房地产业,当房地产价格因背离价值而向下波动时,通过托市再把它抬高,反复如此,给人的表象就是房产价格决没有偏离价值。导致房价越涨越高。 而开发商呢,他们一到房子将要卖不出去的时候,就有人出高价买下来,他们怎么会降价,如果没有这部分资金在运作,别说是开发商联盟,就是全国只有一个开发商,价格也会降下来,没有人买了,难道等房子发霉吗? 那么外资持有这么多高价房产做什么?不怕砸到手里吗? 不怕!为什么呢?在这个资本运作的过程中,有一个冤大头在最底下接着呢,是谁呢?就是中国的商业银行,由于火爆的房地产市场,一流的流通性,近年来没有看到任何萎缩的迹象,放了贷款就盈利,为什么不贷款呢?没有理由不放贷款。 加之中国老百姓买房的心情,外资可以轻易的把高价房转嫁到中国的银行和消费者身上,连炒房的农民都能赚到一杯羹,职业的外资会赔钱吗?


     7、房价一直涨下去,开发商会笑还是会哭?什么情况下会笑?什么情况下会哭? 在中国go-vern-ment近几年来密集的几十道金牌的调控下,房价还是如脱了缰的野马一样狂奔不止。暂且不论何时能停止上涨的势头,毕竟房价在目前还是上涨的,所以我们就看看房价上涨不止会带来什么。 首先:由于GDP上涨,中国go-vern-ment为了维持上文说的“保持产品交换的继续”要不断地投放人民币,即开动印钞机。只要房地产这个石子还没有投入到大海里去,还有一定的流通性,那么就不会有通货膨胀的发生。 其次:开发商会在这个过程中也赚取巨大的利润。 再次:能看到的是,炒房族会赚钱、所谓的买房的“房奴”会增值。 都赚钱!可是在这个过程中到底谁亏了呢?钱从哪里来呢?如果你是有炒股的经验就会知道,如果投资价格和价值背离的商品,你赚的钱就是别人赔的钱,那么套用到房地产上,就是买房自住的人,现在看似增值,那是镜中月、水中花,你不变现就不是你的。再有就是当价格完全回归真实价值的时候,有时甚至会到真实价值一下,被高价房套住的投资者。还有一个就是开发商! 为什么说开发商也有赔钱呢?大家知道商人的本性是赚钱,赚取利润。如果一个商人投机一次就永远都不做这个生意了,他是赚钱了,可他不是商人,这种商业行为没有意义。由于商人的本性,所以赚来的钱会继续扩大再生产,在能赚钱的领域不断的加大投资。这个道理从生活中就可看出来,越是做大生意的人总喊没钱,因为要更大的流动资金来维持其扩大再生产的需要。 所以一旦房价回归真实的价值之时,就是有一大批开发商崩溃之日。这个是不以任何人的意志和任何行为为转移的。如果现在有开发商逃离房地产业的角斗场,那么跑得慢的就是最后的输家。如果都不跑,就像击鼓传花一样,最后拿到接力棒的就是接盘者。有句话叫:“出来混迟早是要还的”。也许只不过是方式不一样,看谁的运气好而已。 可是现在却没有任何的开发商赔钱的迹象,有的是开发商不断的赚钱,老百姓送钱都来不及。只是因为目前房价还在上涨,房产还在不断的流动。

    8、坐在华尔街办公室的财团们是如何吸干中国山区一个农民的血汗的 
      毛主席说过:“帝国主义没有睡大觉,而是天天在蠢蠢欲动,在图谋不轨,想达到他们的罪恶目的。诚然他们的气焰的确没有以前那么嚣张,但他们确实在活动着。”是不是冷战结束就代表着人类的和平得以实现呢?“一句上帝面前人人平等”就能掩盖帝国主义噬血的本质吗?人人平等的理念是对的,但它只不过是帝国主义用来欺骗人们的伎俩罢了,说到和做到永远是两码事。 国际财团通过国际热钱涌入中国,使人民币加大发行量,然后通过房地产炒作,把中国的国内价格水平无限制的提高,GDP的增长又一次使人民币的发行量被迫提高。国际财团心黑手狠,双管齐下,目的就是使中国经济热到烫手,热到让每个中国人为之狂。 我们暂不去关心这个过程,我们放眼未来,看看这一过程的结果是什么样呢?换句话说财团的目的是什么呢? 很明显,中国人最不愿意看到的事情,就是财团们最乐见的结果。先做个假设,比如国际热钱在投资的中国房地产领域里上演最后的疯狂后,然后把房产成功解套全部变现,如果此时人民币兑美元的汇率达到美国预期最高时,汇率是热钱逃离时需要相乘的那个倍数,会发生什么谁都能想到,所有热钱会一夜之间全部兑换美元逃离。财团们会赚得沟满壕平,中国市场上除了钱就是钱,能遮住天的大把人民币将成为中国人民的噩梦。 这是中国人最不愿意看到的事情,也是财团最乐见的结果。近期美国不断的通过政治、贸易等手段逼迫人民币升值,而中国go-vern-ment迟迟不升值或小范围的升值,远远没有达到美国go-vern-ment的预期,这是在出口处的中美之间的博弈。美国逼迫人民币升值的狼子野心昭然若揭! 顺便提一句,如果真的这个升值预期达到了,中国楼市将重演日本上世纪90年代崩盘的历史。只是那时中国经济也会像日本一样进入一个连续低迷不振的不归路。 在这种攸关民族生存的问题上,go-vern-ment会坐视不管吗?就算是退一步来讲,一个完全不负责任的go-vern-ment遇到这种情况,因为这个资本运作同时也极大侵犯了go-vern-ment的利益,也会拼命反搏的。

    9、在有关这场围绕房价和通货膨胀之间的各方博弈中可能选择的中庸路线
      我一直相信:物极必反,中庸,是老祖宗留给后人解决棘手问题的杀手锏! 既然是中国房地产“绑架”了中国的经济,那么我们就从“绑架”说起。何为“绑架”,应该是相对弱的一方,拿着相对强的一方的“要害”,使相对强的一方即便有能力对付弱的一方,但碍于投鼠忌器,无力可施。 我们先来看看绑架双方的阵容和各自手上的筹码。房地产业的主体是开发商,所以开发商算一方,它绑架的要害是中国经济,那中国经济是谁的要害呢?是中国人民的要害,代表中国人民的,目前只能是中国go-vern-ment。中国go-vern-ment算一方。外资呢?它是煽风点火者,划到开发商一方。中国go-vern-ment一方有公权力,可以通过税收、财政、经济政策、行政手段对开发商阵营施力,开发商阵营通过源源不断的后备资金来绑架中国经济,且不断的提高赎金。 问题已经摆在这里,怎么办呢?冲上去一枪击毙,那歹徒非撕票不可,太极端不可行。所以有为go-vern-ment开出药方,只要实现了某某一条既可降低房价的主意,就犹如这一枪击毙一样是不可行的。我们想象如何解救绑架事件的,首先要稳定住对方的情绪,再一步步地靠近,但这种靠近虽会引起歹徒的敌意,但不会导致他撕票,然后再进一步稳定情绪,再靠近,然后条件成熟时,再稳准狠,即保证人质的安全,又要保证歹徒一举拿下。这才是真正的营救。 所以中庸才是解决棘手问题的杀手锏。极端、盲目、冒进是要不得的。 针对如何解决中国房地产市场的绑架问题,就要围绕问题的关键部分一步步地施加反作用力,然后一举成功,才是正道。
         第一个关键的部分就是汇率,中国go-vern-ment会严把汇率关,我们可以预期的是,人民币兑美元的汇率决不会过快升值,但会小幅升值,就是要稳定对方的情绪,如果一点不升,对方会狗急跳墙,如果升的过快,是给自己掘墓,所以为什么中国汇率升幅总是犹抱琵琶半遮面,看看美国go-vern-ment的态度跟一个绑匪是多么的贴切,我要一瓶果汁,为什么拿来半瓶水。可又说不出什么来,毕竟还能暂时解渴。
            第二个关键是限制资产流动性,既然房地产能绑架中国经济,说明它举足轻重,限制房产的流通性,就可以限制资产的流动性,注意这里是两个概念,“资产流动性”和“房产流通性”。两者完全不同,但又息息相关。房产流通性减弱,资产流动性减弱,那么需要印刷的人民币就减少。就像那个石子,不流通马上通胀,不涨价流通没问题,可是行不通,外资也不同意。既然是不断的上涨价格,只能一步步地限制房产流通,只要房产流通性少一点,通胀就会显现一点,然后再通过上调准备金率和加息等柔性政策来调整一点,用柳叶棉丝掌来化解泰森的一记重拳,以绵柔克强刚、化千钧于无形,这就是中国go-vern-ment的策略(这好像是中国人最擅长的事情)。我们从官方媒体就能看到相关的消息,楼市签约率在下降,即流通性在下降,然后物价开始有所涨幅,如猪肉等副食产品,但央行马上上调准备金率和加息,来稳定物价。不知各位看官是否也看出些端倪。可预期的是,到完全化解危机之前,会不断地加息和调高准备金率,同时房产流通性会越来越弱,这个预言是否准确可在以后的央行政策上验证。等完全消除了由于经济过热导致的通货膨胀预期,那么就是房地产价格回归真实价值之时。
      不管你看到没看到,这已是最后的疯狂,我们从两方面来分析:

            第一,如果这场博弈以外资胜利而告终,那么中国经济将步日本90年代持续下滑的深渊,由于外资撤走,房市赖以生存的支柱坍塌,房价会一落千丈,可到时候不管是开发商还是老百姓都将承受经济下滑之苦,持有的货币迅速贬值,即便房价落下,也不一定买的起。这是中国go-vern-ment和中国人民不可接受的,也是无法接受的。

            第二,如果外资以失败而告终,即在汇率上把住出口,让房价回归真实价值,把外资同样套在中国,这才是胜利的前提。那么以美国财团为首的帝国主义噬血者必将疯狂报复,会在投资、出口等各方面对中国施加压力。我们今天人民币升值没有达到美国预期,已经导致中国出口到美国的产品受打压,进而引起了众多的贸易摩擦,由此可见一斑。我们知道,经济发展的三套马车是,投资、出口和消费,在投资、出口领域遭到报复会影响中国经济的发展,但我相信不会影响我们的发展速度,别忘了还有一套马车是“消费”,房价下降后,如果你是爱国者,请现在保护好你的钱包,到时千万别羞羞答答,要果断地出手买房,中国经济会在消费领域异军突起,继续独占世界经济引擎的鳌头。
       所以我们要相信我们的go-vern-ment,配合我们的go-vern-ment,go-vern-ment在事关全局的问题上是和老百姓站在一起的。

     

  • 基于Tomcat5.0和Axis2开发Web Service应用实例【转】

    2008-07-18 10:12:50

    这几天都在研究WebService 了呵呵,Tomcat,Axis,Axis2,Eclipse,WebService ,学习理论还得实践啊,下面的这个例子不错呵呵,至少让小娟明白什么是WEB服务,WEB服务如何发布调用,简单的不能再简单了呵呵,谁让我是菜鸟呢
     
    有问题欢迎大家一起学习讨论呵呵。。。。

    基于Tomcat5.0和Axis2开发Web Service应用实例
     
    1.工作环境 Eclipse
    http://ws.apache.org/axis2/download/1_0/download.cgi页面下,下载AXIS2的Binary Distribution url: http://apache.justdn.org/ws/axis2/1_0/axis2-std-1.0-bin.zip和 war Distribution url: http://apache.justdn.org/ws/axis2/1_0/axis2-1.0-docs.zip。把这两个文件解压,比如解压缩的后得目录为C:\axis2-std-1.0-bin和C:\axis2.war。
    在Eclipse下通过菜单window—preferences…--Java—Build Path—User Libraries 新建一个user library,比如名字就叫axis2把C:\axis2-std-1.0-bin\lib下的所有jar文件包含进来。把axis2.war拷贝到%TOMCAT-HOME%/webapps下面。
     
    2.检验安装
          启动Tomcat,在地址栏内输入http://localhost:8080/axis2/【如果不能够正常启动请参考其它文献
     
    3.WebService中的HelloWorld
    HelloWorld功能非常简单,在客户端输入你的姓名,本例中为Jack。参数传递到服务器端后,经过处理将返回name+"HelloWorld!",本例中为Jack HelloWorld!
    1)新建一个动态web工程,取名ffhello,右键点击项目名,选择Properties-Java Build Path-Add Library-User Library-axis2。
     
    2)新建package sample,建立HelloWorld.java,代码如下。
    HelloWorld.java
    package sample;
    import org.apache.axiom.om.OMAbstractFactory;
    import org.apache.axiom.om.OMElement;
    import org.apache.axiom.om.OMFactory;
    import org.apache.axiom.om.OMNamespace;
    public class HelloWorld {
         //读取client端getSayHelloOMElement()方法传递的参数in。
            public OMElement sayHello(OMElement in){
             //将in转换为String。
                   String name=in.getText();
                   String info=name+"HelloWorld!";
             //创建response SOAP包。
                   OMFactory fac=OMAbstractFactory.getOMFactory();
             // OMNamespace指定此SOAP文档名称空间。
                   OMNamespace ōmNs=fac.createOMNamespace("http://helloworld.com/","hw");
             //创建元素sayHello,并指定其在omNs指代的名称空间中。
                   OMElement resp=fac.createOMElement("sayHelloResponse",omNs);
             //指定元素的文本内容。
                   resp.setText(info);
                   return resp;
            }
    }
     
    3)建立META-INF文件夹 创建services.xml文件,代码如下。
    services.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <service name="HelloWorld">
    <descrīption>
       This is a sample Web Service.
    </descrīption>
    <!-- ServiceClass指定Java Class的位置,即实现服务的类。 -->
    <parameter name="ServiceClass" locked="false">sample.HelloWorld</parameter>
    <!-- operation 与Java Class中方法名对应。 -->
    <operation name="sayHello">
       <messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
    </operation>
    </service>
     
    4)将目录sample和目录META-INF组织如下(新建目录example)。
    +-example
    |-------- +-sample
         |------- HelloWorld.class 【是生成的.class文件不是.java 文件目录】
    |---------+-META-INF
       |------- services.xml
     
    5)打包生成aar文件。
    在命令符环境下,将当前目录转到example。
    jar cvf HelloWorld.aar . //注意最后一个点,在当前目录下生成HelloWorld.aar。
     
    6)在Eclipse中启动Tomcat,在地址栏下键入http://localhost:8080/axis2/。选择Administration,输入用户名admin,密码axis2。选择左侧工具栏Tools- Upload Service,上传之前打包的HelloWorld.aar。该文件将在<CATALINA_HOME>/webapps/axis2\WEB-INF\services目录下。
     
    7)编写客户端检验代码。新建Java Project,取名为ZZaxisClient。右键点击项目名,选择Properties-Java Build Path-Add Library-User Library-axis2。
     
    8)新建package  example.client。建立TestClient.java,代码如下。
    TestClient.java
    package example.client;
    import org.apache.axiom.om.OMAbstractFactory;
    import org.apache.axiom.om.OMElement;
    import org.apache.axiom.om.OMFactory;
    import org.apache.axiom.om.OMNamespace;
    import org.apache.axis2.addressing.EndpointReference;
    import org.apache.axis2.client.Options;
    import org.apache.axis2.client.ServiceClient;
    public class TestClient {
         // targetEPR指定打包的Service(.aar文件)在容器中的物理位置。
            private static EndpointReference targetEPR=new EndpointReference
              ("http://localhost:8080/axis2/services/HelloWorld");
            public static OMElement getSayHelloOMElement(){
             //创建request SOAP包。
                   OMFactory fac=OMAbstractFactory.getOMFactory();
             // OMNamespace指定此SOAP文档名称空间。
                   OMNamespace ōmNs=fac.createOMNamespace("http://helloworld.com/","hw");
             //创建元素sayHello,并指定其在omNs指代的名称空间中。
                   OMElement method=fac.createOMElement("sayHello",omNs);
             //指定元素的文本内容。
                   method.setText("ZJ");
                   return method;
            }
            public static void main(String[] args){
                   try{
                          Options ōptions=new Options();
                          options.setTo(targetEPR);
                          ServiceClient sender=new ServiceClient();
                          sender.setOptions(options);
                          OMElement sayHello=TestClient.getSayHelloOMElement();
                 //发出request SOAP,
    //同时将得到的远端由sayHello方法返回的信息保存到result。
    //通过services.xml能准确找到sayHello方法所在的文件。
                          OMElement result=sender.sendReceive(sayHello);
                   }
                   catch(Exception axisFault){
                          axisFault.printStackTrace();
                   }
            }
    }
     
    9)测试TestClient.java ,在Eclipse中执行 run  --> as Java Application。结果:
     
    <hw:sayHelloResponse xmlns:hw="http://helloworld.com/"
    xmlns:tns="http://ws.apache.org/axis2">
    JackHelloWorld!
    </hw:sayHelloResponse>
     
    4. Axis2简介
    Apache Axis2 是Axis的后续版本,是新一代的SOAP引擎。Axis2的主要特点有:
          1)采用名为 AXIOM(AXIs Object Model)的新核心 XML 处理模型,利用新的XML解析器提供的灵活性按需构造对象模型。
          2)支持不同的消息交换模式。目前Axis2支持三种模式:In-Only、Robust-In和In-Out。In-Only消息交换模式只有SOAP请求,而不需要应答;Robust-In消息交换模式发送SOAP请求,只有在出错的情况下才返回应答;In-Out消息交换模式总是存在SOAP请求和应答。
          3)提供阻塞和非阻塞客户端 API。
          4)支持内置的 Web服务寻址 (WS-Addressing) 。
          5)灵活的数据绑定,可以选择直接使用 AXIOM,使用与原来的 Axis 相似的简单数据绑定方法,或使用 XMLBeans、JiBX 或 JAXB 2.0 等专用数据绑定框架。
          6)新的部署模型,支持热部署。
          7)支持HTTP,SMTP,JMS,TCP传输协议。
          8)支持REST (Representational State Transfer)。
     
    5.Axis2 支持的规范包括:
        -SOAP 1.1 and 1.2
       -Message Transmission Optimization Mechanism (MTOM), XML Optimized Packaging (XOP) and SOAP with Attachments
       -WSDL 1.1, including both SOAP and HTTP bindings
       -WS-Addressing (submission and final)
       -WS-Policy
       -SAAJ 1.1
     
    有关Axis2更加详细的介绍,可以访问Axis2网站http://ws.apache.org/axis2/
     
     
     
  • 软件测试职业发展三步曲之一 - 软件测试职业发展方向 【转】

    2008-07-14 18:25:39

    小娟强烈推荐这篇文章,精华!比较长,您得有耐心看完哦

    附上原创作者叶赫华老师的blog: http://sinckyzhang.blog.sohu.com/ 里面的东东很不错哦,小娟没有在做广告,只是觉得很好,和大家一起分享。欣赏叶老师的才华呵呵

       ——软件测试职业发展方向

         作者:叶赫华

       天地玄黄,宇宙洪荒;所谓光阴似箭,因为一转眼滚滚的历史车轮就将人类文明推进了二十一世纪的信息时代!葛大爷有对白曰:“二十一世纪最宝贵的是什么?”对曰:“人才!”何为人才?sincky曰:“适应时代潮流,把握社会需求,并为我中华老大帝国创造社会价值的人!”哎哟,不诹了,其实今天笔者在这里要和大家探讨的,是软件测试的职业发展问题,重点要阐述的是软件测试从业者的职业发展方向,欢迎大家按enter键换行,继续浏览!

       一个人从大学毕业,即开始发生从学生时代向职业人士的过渡,这种过渡走的好,可以实现毕生宿愿,体现个人价值,不管你是否喜欢,功名、利禄尽收眼底;如果走的不好,则会误入歧途,纵有凌云壮志、万丈豪情,难免一生郁郁不得志,终归化作片片飞尘,无语对穹苍!那么如何才能顺利的完成这种过渡、踏上我们豪迈的职业旅程呢?答曰:认清自己,选择适途!战国的魏人荆轲具有“十步杀一人,千里不留行”的本领,曾向魏王献策曰:“国君,我是职业杀手,我杀人的技术很强!”魏王问:“那么你想杀谁呢?”对曰:“杀他个国君如何?”魏王大惊,慌然离去!后来荆轲离开魏国,与燕太子丹密谋,留下了“图穷匕首见”、“荆轲刺秦王”的千古佳话。荆轲,良禽也,择木而栖和太子丹合作,是他的高明之处;不过笔者认为他是一个典型的“低管理、高技能”的人才,当他紧握嬴政的脖领、持剑相逼时,他太得意忘性了,可见他没有领导的“统御力”和“决断力”,所以落了个刺杀失败、拔剑自刎的下场,虽然他的侠义与胆识流畅千古,但是终究是个“杀手”而已;当今社会下,如果“低管理、高技能”的人干工作干到丢了性命,那也真是一个笑谈了!

       目前我们国家高等学历大幅度扩招,造成社会的低端人才严重过剩,大学生毕业找不到工作、或者找不到合适的工作例子鳞次栉比;但是社会各行各业对高端人才的需求又求贤若渴;那么如何解决这种矛盾呢?从大环境来说,国家应该改革教育体制、提高教学质量、重视高端人才的培养,但是,一个问题一旦上升到国家的层次,就要等它个十年八年!我们没有办法改变世界,但是我们有能力改变自己;所以我们从个人的角度来讲,讲讲我们这些软件测试的从业者们,如何“认清自己、选择适途!”

       纵观当今社会各行各业,对于个人的职业发展方向,从宏观上都可以划分为四个群体,即:

       “低管理、低技能”
       “高管理、低技能”
       “低管理、高技能”
       “高管理、高技能”

       而在IT 行业这种划分方法更为合理,sincky为其命名为“一起点-三方向示意图”:

     

           告别了象牙塔,带着对校园生活里那段风花雪月的追忆,年轻的毕业生们走上了社会;这时候的年轻人,大多数是属于“低管理、低技能”的群体,我们没有工作经验,不知道企业的工作流程,不清楚各个职业的工作技能,更不具备任何行业的管理能力;然而值得庆幸的是,人类问明发展到现在所出现的众多行业,都已经有了众多可以参考的群体,这些群体就理所当然的成了我们可以借鉴的发展方向!虽然我们的起点都是一个,但是可以选择的发展方向却是丰富多样!

       高管理-低技能,即是我们通常所说的管理路线!在IT业,这个方向的成功者不乏项目经理、项目总监直至企业的最高管理层;但是走这个方向也要有技术方面的积累,因为管理者的影响力中,除了职位赋予的权力以外,还包括个人人格方面的能力和专业领域的专业能力,而后者就是技术水平!而计算机行业本身,也决定了技术底蕴对职业发展的重要影响,所以年轻的IT朋友们,如果想为自己的职业人生设计成这个路线,除了适当的技术积累外,更要有意识的锻炼自己的管理素质,下图可做参考:

             低管理-高技能,即通常所说的技术路线!IT业以技术为主导,对于喜欢钻研技术、探讨技术的人,可以选择该条路线,走的深入、走的彻底!只因中国对于技术与管理的认识不同,造成很多人认为做技术不赚钱、不被重视,自身误以为不过是个工程师而已,所做事情只是辅助企业的运作。实际上,在欧美发达国家,资深技术人员的薪资非常高,从业时间的周期也相当长,在Microsoft、IBM等巨头企业,不乏年龄在50岁以上的资深程序员或系统架构师,而其薪资也和高级管理者一样高!而另外一个不争的事实是,企业对于管理的职位是有限的,并且一些优秀的技术人员不愿做管理,或者不适合做管理,因此社会上出现的资深技术专家(或者类似职位),为喜好技术的从业人员提供向上的通道。

       高管理-高技能,即咨询方向是较为均衡、全面的路线,也是众多企业希望员工努力的方向。然而有调查结果显示,由于现实种种因素的制约,大约90%的个人是分别沿着管理方向或者专家方向发展的,真正实现在咨询方向达到一定的高度的人少之又少,而且在这为数不多的咨询方向达到又一定高度的人才,往往又会由于企业资源的限制无法将个人价值完全发挥而最终离开所在企业,成为专业培训师、咨询师;一些国际知名的咨询公司如麦肯锡、安达信乃至毕博或其他,可谓大家在个人职业生涯到达一定阶段,作为自己继续突破职业瓶颈的发展路线。

       那么,对于软件测试的从业者,我们的出路在哪里?我们的职业发展该如何设计?我们的发展方向又有哪些呢?这里笔者和大多数测试同行意识相同,笔者也曾在多篇文章里标明,中国的软件测试行业尚属起步阶段,其发展的步履上布满了荆棘与泥泞;然而其发展速度可谓惊人的,从笔者刚毕业时候对软件测试的“0”概念、从业同行者寥寥无几,到最近2年的各大媒体纷纷报道的中国软件测试人才缺口20万、软件测试工程师将成为未来10年最紧缺的人才之一、包括笔者所接触的众多国内外优秀企业对高端测试人才年薪10万、15万、20万的招聘需求……可见,选择软件测试这个朝阳行业的朋友,做了一个比较正确的选择!然而,如何任何事物总有它的两面性和矛盾性:2006年初在北京、上海、深圳举办的几次春季大型招聘会上,多家企业纷纷打出各类高薪招聘软件测试人员的海报,出人意料的是,收到的简历尚不足招聘岗位数的50%,而合格的竟不足30%……引起我们思考的是,我们的软件测试从业人员还有很大一部分不满足当今社会的需求;而另一层含义是,我们还有很大的提升空间!因此解决该矛盾的突破点是:每个人在这个行业里找到自己的发展方向,规划自己的职业蓝图,从而有针对性的锻炼自己的职业技能,增加个人的职业砝码!

    软件测试职业发展模型图
    软件测试职业发展模型图

       软件测试职业发展方向,大体上与上述的通用职业发展路线图相吻合,也可以分为管理路线、技术路线、管理+技术路线;只是针对该行业本身,有其特殊性和细致性。其图示如同两个重叠的”V”字样,我们为其命名为“双V模型”;该模型适用于大多数行业性软件测试从业人员,一些特殊领域如游戏测试、嵌入式测试、硬件测试,也可作为参考。本文是三部曲之一,只介绍职业发展方向定义,在下一曲会介绍各个职业方向应该具备的知识与技能体系!

       双V的底点是测试工程师,属于软件测试职业生涯的初级域,其适用范围是入行软件测试3年内的常规测试从业者,其主要工作内容是按照测试主管(即直接上司)分配的任务计划,编写测试用例、执行测试用例、提交软件缺陷,包括提交阶段性测试报告、参与阶段性评审等。初入测试行业,进入企业从事测试工作的人员,都要从该层次做起,虽然有时感觉乏味无趣,甚至迷茫困惑,但是我们可以根据个人的兴趣与特长,向上选择适合自己的路线,因为谁都不会甘心一辈子只做一个普通的测试工程师,那么大家看到这里,就可以摩拳擦掌,看看向上发展的通道中,哪一个适合自己,然后立刻从现在开始,确定自己未来5年、10年甚至一生的发展目标迈进,用笔者经常跟学员说的一句话来形容:把握现在,即刻做起,相信自己是最强的!

       首先是常规路线,即双V模型的重叠线,这条发展路线要求管理与技术并重,因为软件测试的行业特点决定了这个因素:测试工程师向上晋升到测试主管、测试经理、测试总监,直至咨询域的更高方向!

       测试主管是企业项目级主管,对于中小型软件公司也可以是企业级主管,属于中级发展域,适用范围是2到5年职业经验的测试从业者。其工作内容是根据项目经理或测试经理的计划安排,调配测试工程师执行模块级或项目级测试工作,并控制与监督软件缺陷的追踪,保证每个测试环节与阶段的顺利进行。严格来说,这个级别更多属于测试的设计者,因为企业的测试流程搭建是由更高级别的测试经理或相关管理者来做的,测试主管负责该流程的具体实施;而更多的工作,是思考如何对软件进行更加深入、全面的测试。因此笔者认为测试主管比较有创造性的工作内容就是测试设计,而恰恰很多公司忽略了或没有精力来执行此工作内容!应该说,在一个企业里做了3年左右测试工作的人员,很容易晋升到该职位,而之所以晋升,是与个人测试技术的过硬、测试方法的丰富,加上对测试流程的监控力与执行力的职业素质息息相关!

       测试经理是更高级别的测试管理者,属于高级测试方向域。对于大中型软件公司,该职位尤为重要,并且对其职业要求也比较高,一般适合4到8年的测试从业者,在管理与技术能力双双比较成熟的情况下,可以结合具体环境晋升到该级别。测试经理负责企业级或大型项目级总体测试工作的策划与实施。随着软件行业的发展,企业对软件工程里各个角色的定位逐渐明显,测试经理完全与开发经理(一些公司也成为项目经理)平齐,除了需要统筹整个企业级或项目级测试流程外,还要对于不同软件架构、不同开发技术下的测试方法进行研究与探索,为企业的测试团队成员提供指导与解决思路,同时还要合理调配不同专项测试的人力资源(如业务测试工程师、自动化测试工程师、白盒测试工程师、性能测试工程师),对软件进行全面的测试;另外,一些企业里,测试经理还需要与客户交流与沟通,负责部分的销售性或技术支持性工作。嘿嘿,看看那些高薪招聘测试经理的企业对该职位的要求里外语口语的描述,就可见一斑!

       测试总监,属于常规发展路线的最高域,如果再往上发展,那只能是咨询域了;不过笔者并没有将其在图中标记出来,因为该职位对于国内目前的大多数软件公司根本没有设立,也就没必要再在图中体现了。该职位一般在大型或跨国型软件企业,或者专向于测试服务型企业有所设立,由于其企业自身的职位定位不同,以及软件测试整体行情所处的阶段,这里不好归纳陈述;但是一般设立测试总监的企业,该职位都相当于CTO或副总的级别,是企业级或集团级测试工作的最高领导者,驾驭着企业全部的测试与测试相关资源,管理着企业的全部测试及质量类工作。而其职业要求,也是技术与管理双结合;基于目前软件测试行情看,这种高管理-高技能的发展目标,不会适合大多数人的选择,社会也不会提供如此众多的测试总监职位让我们去应征!

       应该说,大多数测试从业者都不是技术与管理双优的人,而如今一些到达测试经理或测试总监级别的优秀测试人才,已经领先一步开辟了这条发展路线的先河,希望这些朋友和大家多多分享经验,让更多的朋友弥补自己管理或技术上的不足,在这条路线上有所建树,共同提高,在实现个人人生价值的同时,也自然而然的推动了软件测试行业的发展;行业发展了,测试人员不再被忽视了,待遇自然也提高了,也就不会有很多朋友迷茫的跟我说“我的日常工作只是点击按钮和按键盘”了,因为我们相信行业的不断成熟,会逐渐将软件测试职业细化,我们的从业者就可以真正的在如下的管理路线和技术路线找到自己的位置,并潜心走向深入的!

       软件测试,是技术主导的职业;不管选择哪条发展路线,都是需要一定的技术沉淀,只是相对来说,管理路线对技术方面要求不高而已。那么我们就先挑重头的技术路线展开讨论。一般来说,一个普通的测试工程师刚入行,3个月左右熟悉企业的工作流程和模式,那么今后的工作内容趋于平稳。然而社会是残酷的!如果单单停留在测试工程师的阶段,若干年后,相信你再也竞争不过那个时候的应届毕业生,当你的工作技能和职业素质趋于与那些朝气蓬勃的年轻人相当时,企业会毫不留情的选择他们,而release你,因为你的成本消耗要比他们高,这是大实话!然而现实又是公平的!因为软件开发技术的不断日新月异,软件功能需求的不断丰富多样,决定软件开发这一系统工程的错综复杂,因此为了保证软件的质量,就要提高测试的水平,这也就为软件测试职业的细化起到先决因素,也是目前社会上出现招聘专项测试工程师的必然趋势!因此,这个趋势给了我们这些常规测试工程师一个空前的好机会!所谓“以毒攻毒”,软件开发靠的是技术,为了测试软件,也必须用技术;那么我们就来看一下从技术路线,软件测试职业发展有哪些方向。

       技术路线,笔者结合国内外软件测试行业现状,划分为三个半方向,分别是自动化测试工程师、白盒测试工程师、性能测试工程师和认证测试工程师,在“双V模型”中右侧体现;前三者适用于通用软件测试领域,认证测试工程师乃嵌入式测试领域职位,至少目前仅出现在嵌入式领域,因此以虚线标记,即“三个半”的“半”。前三条路线对技术的要求程度逐渐增加,三条曲线的斜率也依次递增(认证工程师不参与比较)。

       自动化测试工程师,笔者为其定义在功能测试范畴,指通常所说的依靠自动化测试工具进行软件黑盒测试的工程师。笔者接触的很多测试界朋友,尤其年轻的刚入行者,对测试工具充满了无限的兴趣,他们喜欢那种编写脚本、调试成功后的快感,喜欢看到自定义的日志里记录了本来手工测试烦琐的无聊头顶的工作、而采用自动化方式实现后如此清晰丰富的内容后的兴奋!可以理解,因为笔者也是从那段时光走过来的,现在也负责于我们学员的自动化测试教学工作。从大环境讲,自动化测试是软件测试执行阶段的必然趋势,社会对于软件测试的认可度以及对自动化测试人才的需求必将日益增加,从目前国内做自动化测试的从业者薪资情况看,也普遍高于常规测试工程师,最浅显的道理是“自动化测试比手工测试有了技术含量,^--^”虽然自动化测试在整个行业的普及不是一朝一夕,但是从个人角度讲,自动化测试可以作为个人的发展方向之一,因为如果你率先掌握了这种技术,等到社会需要时,你已成为这个职位的成熟操作者!而国内的51testing把握了时代前沿,与自动化测试工具巨头厂商Mercury(美科利)合作,在中国唯一推出Mercury自动化测试全套技能认证(CPE/SP/CPC),相比其它初等认证,它的实效性和价值性更具意义,也为测试从业者提供了一个进入自动化测试领域的快捷方式!

       白盒测试工程师,笔者定位于在软件测试周期的单元测试阶段对软件进行的代码级测试的人,包括代码走读、代码功能与逻辑测试、代码内存泄漏检查、代码运行效率检查、代码测试覆盖率分析等。如果说,自动化测试只是依靠脚本语言完成测试脚本编写与调试的过程(因为自动化测试工程师的工作重点不在编写脚本),对于自动化测试工程师的技术要求要相对偏低的话,那么白盒测试工程师就要对大型程序开发语言的完全掌握,因此其技术要求相对偏高!而另一方面,白盒测试在目前国内软件行情下,一些公司根本不做,其成本高、代价大的特点决定了这个现状,而一些对软件质量要求非常高(如军事类、电信类、财务金融类等)的企业,也会调动开发工程师来实施此事。但是,还是那句话,测试行业在发展,测试人员能力在提升,软件的开发技术在复杂化,要对软件进行尽可能全面的测试,白盒测试不可忽视!当下专门高薪招聘白盒测试工程师的企业也比比皆是,从中我们可以感知,白盒测试工程师会是很多有开发背景、意欲进入测试行业的良好突破口,白盒测试人员的需求也会逐渐增加。

       性能测试工程师,即在系统测试阶段、功能测试后对软件系统性能指标进行采集分析和运行效率检测的人。笔者认为,在一个尽量压缩的测试流程里,功能测试可以手工进行,白盒测试可以不做,但是性能测试必须要做,除非该软件非网络类软件即单机版软件!这里笔者再提一个观点供大家参考:软件测试,从宏观上可以划分为三个大方面:功能测试、性能测试、安全性测试,功能测试说明软件做对了,功能测试+性能测试说明软件做好了,三者结合起来说明软件做的非常好!安全测试暂且抛之不提,这是下一个发展域的内容,但是为了把软件做好,为了真正保证软件的质量,性能测试绝不容忽视;只因目前很多企业由于时间、成本、人力条件的限制,暂且不做性能测试。性能测试工程师相对来说,是三个技术路线里技术要求最高的,因为软件的性能瓶颈归根结底落实到代码的运行效率这个问题上,因此性能测试要做好,性能测试工程师起码要懂开发;而为了发现性能问题,要懂软件开发架构;为了定位性能问题,要懂操作系统、网络协议、应用服务器乃至数据库的原理与使用;为了最终解决性能问题,要根据定位的问题有针对性的对代码、操作系统、网络架构、服务器、数据库进行优化!当然性能测试是一个系统工程师,绝对不是一两个人的事情,对于常规性能测试工程师,具备定位性能问题的能力即可。正因为性能测试工程师技术要求的高超,该职位的待遇也是目前测试技术路线最高薪的一个,实为综合技术能力较强的测试人员的明智选择!

       上述四职业路线由于其技术程度的突出,一般在企业里由测试经理直接所属,与测试主管级别具有相同的待遇,并处于相同发展域。

       进入技术路线的高级域,根据中级域的四个路线,可以细分成五个路线,分别是资深自动化测试工程师、资深白盒测试工程师、资深性能测试工程师、安全性测试工程师、标准化工程师,这些高级技术类人才完全与常规测试经理平齐,属于软件测试职业发展高级域。

       资深自动化测试工程师由自动化测试工程师晋升而来。如果说常规自动化测试工程师只是负责自动化测试脚本本身的设计与开发,那么资深自动化测试工程师的工作内容就是自动化测试这项工作的实施!笔者早年在IBM公开讲座时候,讲过一篇《以RUP原则实施自动化测试》的主题,RUP里提倡自动化测试是一个庞大的系统工程,绝对不是有了技术、有了工具、有了掌握技术和使用工具的人就可以实施的,而是应该把自动化测试当成一个针对企业自身的项目来看待,需要经过引入、计划、设计、测试、执行、配置管理等环节(参加sincky的blog“天行健-君子以自强不息”),而这些自动化测试的流程搭建,就是资深自动化测试工程师的份内之事。另外,笔者要强调,按照国内外自动化测试领域的发展趋势,我们把自动化测试划分为四个发展阶段(我的blog里也有阐述);也就是说,录制脚本-添加验证点-回放脚本只是最初始的自动化阶段,要在企业实施自动化测试,要有资深自动化测试工程师来设计数据驱动,开发测试框架,甚至一些企业内部自主开发小型测试工具(而非商业工具)的先例,这些也都是建立在资深自动化测试工程师具有深厚的技术底蕴后,主导其他人员协调完成的事情。

       资深白盒测试工程师,其工作内容包含常规白盒测试工程师的内容,除此之外,要协助测试经理或测试总监攻关测试方法与技术性难题,因此其技术水平更加雄厚。如果常规白盒测试工程师是停留在某种程序设计语言类型的代码级测试,那么资深白盒测试工程师就要脱离程序设计语言本身,结合不同架构、多种开发技术交互的情况下,寻找代码测试方法,并具有对代码优化的能力。由于该路线在国内很少有实例参考,这里不再赘述。

       资深性能测试工程师,来源于常规性能测试工程师,按照常规性能测试工程师的技术要求,资深性能测试工程师应该具备性能测试整体方案的设计能力,以及软件系统性能问题定位和性能优化的能力!初此之外,也要对主流的软件开发模式下的应用系统具有敏锐的洞察意识和感知意识。软件开发的架构会日益复杂化,软件应用的各种软硬件平台、数据库类型、服务器类型、网络协议层出不穷,不得不说,都为性能测试的从业者们提出了严峻的考验!值得庆幸的是,各种同类产品的厂商在开发产品时都遵从业内统一标准,性能测试人员结合自身的丰富经验,加上对软件性能测试技术的研究,这样的考验我们欣然面对,这样的人才则会日益增多,在软件测试行业里充当佼佼者地位。

       安全性测试工程师,笔者将其从性能测试工程师衍生出来,因为只有具备性能测试经验的人,才对软件的开发模式、实现架构和技术本身充分了解,才会感知和预见软件系统存在的安全漏洞,加上其本人是测试出身,才知道如何通过系统漏洞尝试攻击软件系统,达到测试的目的。目前国内软件行业对于安全性测试的认识尚未清晰,该职业也更没有普及,一般只限于军事类、机密类、防病毒类或其他高安全性软件的测试工作中。

       再次强调,人类进入文明社会后,任何社会活动都不是独立的个体能够实现的;在高度讲究团队合作、协同办公的今天,软件测试工作更不是测试工程师几个人就能做完所有的事情的;上述各发展路线的技能要求,只是为了增强个人职业突破的砝码,你的砝码越多,“被利用”价值越大,为企业创造利润的程度越高,企业自然给予你更丰厚的回馈!达尔文伯伯的“优胜劣汰”自然规律不会变,“多劳多得、少劳少得”的市场规律也不会变!

       曾经有如此众多的测试职业发展路线放在我面前,结果我没有珍惜;等到软件测试行业发展到成熟阶段,我想入行却入不了行的时候,我才后悔莫及;尘世间干测试最大的不幸莫过于此;如果非要问sincky:再往上的发展通道是什么,那么sincky一定要告诉你,技术专家域!

       在技术路线,向上继续提升的方向,我们称之为“技术专家”;如果说前面描述的技术职位的所涉范围都定位在企业内部,即企业级资深性能测试工程师,那么技术专家,我们可以看作是领域级专项人才!随着软件测试行业的职位不断细化,每个人在自己擅长的领域走向深入,都可以成为该领域的技术专家,技术专家在自已经营的领域里,具有个人独到的见解和深厚的技术实力,而这类人才可以不再从事具体的测试工作,而是提供行业性测试技术咨询、培训等,为软件测试整体行业的发展,起到了鲜明的带头作用。在一些专业的咨询、培训公司,或者IBM、Microsoft等巨型公司,不乏这样的人才;然而目前在我国,这样的人才较少,但是却可以为我们大家提供努力方向,只要我们每个在技术路线供职的测试从业者,规划好自己的职业人生,并以坚韧的毅力和顽强的斗志,若干年后,你我皆可笑谈测试人生,把酒临风,其喜洋洋者矣!而目前在国内几个IT行业发达的省市,专项于软件测试服务或一些大型软件企业,也有这样的职位暂露头角,我们深信,社会对高端人才的需求趋势是越来越大的,更多的优秀企业也会为员工提供更多、更广的发展空间,值此大好形势,就看我们个人如何充分利用这些上升通道了。

       在我们的软件测试从业人员里,有这样一部分群体:他们非计算机相关专业毕业,不懂软件开发,由于国内种种对软件测试人才的偏激认识,认为测试人员不需要懂开发,只要会编写文档、执行用例即可;因此很多测试工程师并不具备开发背景,并且对软件技术掌握肤浅,而对于没有技术底蕴的人强迫其走技术路线,不能不说是一种折磨!因此,这个群体里的朋友,是不是认为自己只能做一辈子常规测试工程师呢?答案是否定的,因为在“双V模型”的左侧,是软件测试职业发展的管理路线。软件测试的管理路线,与通用职业发展示意图的“高管理-低技能”并不完全相同,只因软件测试独具的行业特点,我们认为软件测试行业的非技术路线发展方向,更多的是从软件测试行业衍生出来的职位,如质量保证、配置管理。如果说软件测试职业发展的技术路线更侧重于职业技能的提升,那么这条管理路线则更侧重于职业素质的积累(笔者强调是“侧重”,并不表示不需要);换句话说,技术路线更侧重人的智力因素,而管理路线更侧重人的非智力因素。

       从事了1到3年左右的常规测试工程师,在经过对个人性格特点剖析后,如果认为自己是一个倾向于“高管理-低技能”的类型,那么想要实现自己的职业提升,可以向中级发展域的配置管理工程师、质量保证工程师、业务测试工程师转型。

       配置管理(SCM)与质量保证(SQA)同是CMM中的关键过程域(KPA),也同是现代软件工程里的必要角色,与软件测试同属软件开发团队的重要组成部分。只因这两个角色在软件工程里的人员配比数量相对较少,还不如软件测试这样规模化乃至于形成行业,而最多是一个职业;另外一个社会现象是,企业很少直接从社会直接招聘配置管理工程师和质量保证工程师,而通常的做法是从企业内部的现有测试员工队伍里选拔,而转型后的测试工程师,就成为SCM或SQA。分析其原因,我们可以感知,SCM、SQA与软件测试工程师都是关注于软件质量的相似职位,社会对于配置管理、质量保证的定义和工作内容并未普及,与其直接从社会招聘“0”基础的人来培养,倒不如从软件测试人员里升华!一般来说,这两种职位的上报对象是项目经理或相同级别管理者。

       转型后的配置管理与质量保证工程师,一定要转变一个意识,那就是常规测试工程师的工作范围很大一部分(不是全部)只限于测试流程,而配置管理和质量保证的工作范围是面向整个软件开发流程,二者的职业要求都非常重视软件工程知识体系的建立和软件开发总体流程的实施能力。由于配置管理工程师除了企业配置管理流程的搭建与实施外,一般会涉及配置管理工具的管理与维护,而质量保证工程师更多的工作是软件开发流程的控制与维护,故而配置管理对技术的要求稍高于质量保证。随着我国软件行业水平的不断发展,众多软件公司纷纷通过CMM/CMMI,企业对于软件开发团队的角色配比制度也将逐渐健全,当前社会对配置管理与质量保证工程师的职位需求日益增加,种种现象表明,对于软件测试工程师出身的从业者,转型至SCM/SQA不失为突破个人职业生涯瓶颈的又一通道!

       业务测试工程师,笔者定义为面向行业类软件业务逻辑与工作流测试的人员。当前软件开发类型,很大一部分是行业类软件的应用,如ERP、SCM、CRM、OA、电信、金融、财务、嵌入式、通信、手机、游戏……这就要求从事行业类软件测试的人员具备行业背景、业务知识,熟练该行业工作流程。从社会上出现的很多对此类经验要求的测试工程师招聘信息中,我们更加肯定这种趋势;所谓存在即是道理,既然社会上有了需求,那么就可以作为个人发展的方向。而另外一个特点是,业务测试工程师的工作内容主要是黑盒测试,属于功能范畴,因此对技术要求不大,设置一些大型行业类软件公司的业务测试工程师薪资丰厚,但是完全可以不懂技术,因为它的工作性质决定了不需要懂很多的技术!他们甚至连软件的界面测试都不做——交给常规测试工程师实施,而完全关注软件的业务性和易用性,由于其深厚的行业背景,可以为软件的在正式发布前提出很多建设性的意见,而这些建议正是软件开发商提高产品易用性、增加用户满意度、开拓市场、创造利润的关键因素之一!

       当管理路线的中级域方向继续上升至高级域,就分别到达配置管理经理、质量保证经理、产品经理、业务专家,这类人才地位高、待遇厚,一般资深的软件工程领域专家都聚集于此。

       如果说配置管理工程师、质量保证工程师更加侧重于配置管理流程、质量保证流程的实施与日常管理维护,那么配置管理经理、质量保证经理就是更侧重于配置管理流程、质量保证流程的建立与改进。一般在中小软件企业,可能没有这两个角色,而全部的配置管理或质量保证工作都由工程师担当;但是大中型软件企业对资深配置管理经理、资深质保经理求贤若渴。软件系统越庞大,软件开发团队规模就越庞大,软件开发流程中出现问题的几率就越高,高效管理软件开发流程,不断改进软件质量,是每个软件公司在技术上没有顾虑后的下一个急需攻破的难关!

       业务专家,属于行业内咨询、顾问的角色,已经几乎脱离了测试工作本身,而更多为企业的产品需求分析、设计、开发、测试等各个环节提供指导工作,其目的也是提高软件的易用性和稳定性,减少后期不必要的需求变更。该职位也同样在目前热点行业的大中型软件企业有所设立。

       产品经理,这个职位在很多企业有所设立,笔者认为它是质保经理的派生,只是它更侧重于软件在产品化之前的质量监控工作,包括软件开发流程、软件测试等技术与管理的各个方面。由于该职位在业内没有明显定义,而根据不同企业的职位定位不同,这里无法统一陈述。

       管理路线的最高发展域是咨询域,与技术路线的专家域类似,在配置管理、质量保证、软件产品化、行业领域达到高深造诣的人才,他们有丰富的从业经验、深厚的管理底蕴,具有对软件工程高瞻远瞩的慧眼和胆识,往往供职在专业的咨询与培训公司,提供IT业管理类咨询与培训的服务,推动着软件行业的前进。国内外很多为软件企业进行CMM咨询和实施的公司里,就是这些人才的大本营之一!

       笔者认为,在“双V模型”的管理路线里,中低级发展域的人才对技术与管理的区分较为明显,而到了高级与更高级发展域,更多的是复合型人才,软件业以技术为主导,没有一定技术积累,还是很难达到高级境界;要在管理路线练出“上乘武功”,还是希望大家在主攻管理与流程类课题的同时,多丰富下自身的技术层面,嘿嘿!

    另外,笔者提倡管理与技术两条路线的平齐,而并非目前社会上认为的技术要比管理低一等,技术是靠吃青春饭,在这些人才到达最高发展域的“咨询”与“专家”层面,二者应该完全具有相同的地位和待遇,只是“称谓”不同罢了!

       “双V模型”是sincky结合当前国内外软件测试行业现状提出的职业发展流程图,仅供测试从业者参考,并非一个“死”的框架,大家不要拘泥于流程图本身;其实目前国内很多上升到高级域或最高域的资深人才,很多都是跳跃式、甚至跨越式的职业发展,因为命运掌握在自己手里,任何人都剥夺不了设计自身人生蓝图的权利;而另外一个角度是,任何人都不该不珍惜为自己规划职业生涯的机会!

       软件测试,一个日出东方的国际型行业,虽然偶尔会弥漫晨雾,甚或有暴雨来袭,但是我们都该坚持!有人说:“什么叫失败?”答曰:“放弃就是失败!”每一次当我们身处逆境时,决不能用软弱的眼泪作为走向明天的见证,更不能用脆弱的感情去拴住生命的航线;是雄鹰就该搏击长空,是蛟龙就该挽起狂澜;沧海横流,方显英雄本色,疆场搏斗,可露壮士肝胆!人生没有豁免权,每位从业者只有怀着不息的斗志,乘千里长风,破万里巨浪,才能支配命运走向辉煌的明天!

      终于看完啦........................

  • 要做好性能测试,该掌握些什么?【转】

    2008-07-14 12:31:38

      【转】

    今天有同行在blog上留言,问“想从功能测试转向性能测试,但不知道需要哪些了解哪些知识,及怎样进行一个系统的学习”。这类问题之前也被问到很多次了,所以这次干脆整理一下,发个主题供同行们参考。如果需要补充,也欢迎大家留言一起讨论。

    如果想真的做好性能测试,需要学习的东西还是比较多的。简单列一下吧。

    1. 精通性能测试的基本概念,过程,方法论,了解性能工程;

    2. 精通1个商业性能测试工具+1个开源性能测试工具,知道工具可以做什么,不可以做什么,以及工具使用中常见的问题和解决思路;

    3. 扎实的计算机专业基础知识,包括计算机组成原理、操作系统数据库原理、计算机网络原理;

    4. 熟悉至少1个常用的数据库产品,例如SQL Server或者 Oracle,能进行一般的数据库管理操作,熟悉SQL脚本的使用,熟悉常用的数据调优工具和常用的counter;

    5. 熟悉至少一个操作系统的原理,Windows或者Linux都可以,熟悉操作系统的体系架构、操作系统的重要基础概念,以及内存管理、存储/文件系统、驱动/硬件的管理、网络协议的实现及构成、性能的监控方法和原理,熟悉常用的counter;

    6. 熟悉至少一个web server 产品,例如apache,了解一般的配置和常用的counter;

    7. 熟悉至少一个应用服务器产品,例如tomcat,了解一般的配置,熟悉常用的服务器性能监控方法和原理,熟悉常用的counter;

    8. 至少熟悉TCP/IP协议,熟悉HTTP协议,至少见过并了解三层、四层交换或者路由器的使用和配置。了解常用的与网络性能相关的counter;

    9. 了解一般的大型企业应用的部署架构和应用架构;

    10. 了解知名大型web应用、高并发量、高流量、实时响应要求高的超大规模网站的架构和优化历程;


    11. 熟悉统计学的基础知识、常用分析方法以及实验设计方法,了解数学建模相关的知识;

    12. 熟悉专属行业的业务知识和用户场景,例如电信行业的OSS系统所涉及的业务知识和用户场景,证券交易系统所涉及的业务知识和用户场景;

    13. 大量的实际性能测试及优化经验;

    14. 积极的参与到各类圈子、社团的讨论和交流、分享中。


    另外,我之前也整理发布过不少性能测试方面的资料,从入门级的文章到 升级的必读都有一些,有兴趣可以参考。

    资料收集:高并发 高性能 高扩展性 Web 2.0 站点架构设计及优化策略 http://www.cnblogs.com/jackei/archive/2007/10/07/915931.html

    最全,最强的软件测试资料汇总 (性能测试,性能调优,功能测试,自动化测试,测试管理,测试工具,测试用例设计,缺陷分析预防,前沿测试技术...)
    http://www.cnblogs.com/jackei/archive/2007/02/06/641647.html

    好东西大家共分享!

  • 年薪翻倍的跳槽 [转]

    2008-07-14 10:50:33

    【转】

    我的同事C,也是我的好朋友,跳槽去了一个正在迅速发展的IT公司,年薪翻了一倍。而他,从准备找工作到工作敲定,仅仅一周。二十万的年薪,在IT行业,对于不到五年工作经验的人来说,是一个很不错的收入了,我的同事自然也很开心很满足。我的其他同事,还有我的朋友,听说后,都非常羡慕,觉得他的运气很好。我也觉得他的运气不错,但除了运气外,我更多地觉得,他具备了这样的实力,所以当机会来了,自然就是他的了。我也会觉得,他的实力,源于他的态度,源于他一点一滴的积累与提升。

    在与C合作的两年多的时间,我们的合作非常愉快,虽然存在异议,但是所有的争议都是为了把工作做得更好。我们的第一次合作,是一个短信过滤模块,产品出来后,是一个初步的原型,根据我对SMS的理解、业务的需求和维护方便,给他提了很多不错的建议,对于我所提的建议,他没像其他开发那样讨价还价,几天之后又交给我一个比较完美的产品。对产品的测试,我非常挑剔,不满足于简单的需求,在产品满足了功能需求后,继续进行了深入的测试、改进和性能调优;产品试行后,继续跟进产品在实际环境的运行情况,对产品进行二次完善,所有的这个过程,C都非常配合,力求完美,毫无怨言。最终,他开发的这个产品,是我们SMS系统中,功能最完善、故障最少的产品。如果当初,没有他积极的配合,也许,这个产品也像其他的产品一样,只是一个普通的模块,我再努力也是徒劳。

    05年春节,我们的P2P系统出现了很大的故障,故障的原因无法定位也无法重现,当时整个团队都承受了很大的压力,我自己也在想方设法定位问题解决问题。那段时间,C给了我非常大的帮助,我们在一起讨论问题可能产生的原因,在交换各自的见解,每有一个新的想法就测试问题是否重现,同时配合代码白盒检查,将问题一个个地解决。我们都很清楚,这些隐藏的问题,仅仅靠一个开发或测试是很难定位的,需要的是一个配合良好的团队的努力。在后来的性能调优中,我提了很多建议,别的开发都没时间去做优化,是C主动接过了别人负责的模块,积极地配合我对P2P进行了长达两个月的性能调优与隐患挖掘,P2P最终成了一个从05年底到现在都无任何来自于软件的故障。现在再翻开我们合作完成的P2P性能调优报告,整整50页,每个改进都密密麻麻地写满了我们各自的原因追踪、改进建议和结果分析,现在再看,我自己还会感动。我想,这样的工作态度,是成就了他年薪翻倍的主要原因。

    在他刚进入公司的时候,回复bug也跟其他同事那样只是简单地写上“fixed”或“ok”,我对他说:“回复bug的时候,最好能够写上产生bug的原因、解决的方法、升级的步骤以及这个改动引起哪些变动,方便测试进行模块升级和问题跟踪,也方便以后维护管理。”从此以后,他所有的bug回复都非常详细、专业。但,我其他的同事,同样的话我重复了N次,部门经理也发邮件要求大家去遵循,但是没几个同事能够像C那样自觉、认真的地回复,也没几个同事可以坚持两年多来一直都是那样认真地回复每个bug。我想,这就是人与人之间的差距,从这么一件简单的事情上,可以看到不同的人的工作态度。我们在羡慕别人得到了好机会的青睐,以为这只是运气,但事实上,运气的背后,是他的付出。现在,当我们再回头查看两年前C所负责的bug,对于每一个问题,都可以从他的回复中看出当初问题产生的原因以及解决方法,对于公司来说,这无疑是一笔财富。

    我的这个同事,并不是一个非常聪明的人,也不是一个很能说会道的人,却是一个勤奋、认真的人,也是一个知道自己要的是什么的人。在项目不紧张的时候,他会主动去研究公司的核心产品,尽管那不是他所负责的,但他的主动为他积累了基础,也为他积累了机会;他甚至还会去学习IT毫不相干的法律,为了维护自己的合法权益。他知道上班时间,也知道下班时间,上班的时候全部投入认真工作,但下班之后就很难得在公司找到他的影子。因为他觉得,下班了,就是自己的时间了,应该回家跟家里人一起分享。我非常欣赏他的这样的一种工作状态,也非常欣赏他的生活态度。公司的人才保留机制做得不好,他来公司两年工资的提高并不是很大,但他还是坚持以学习的态度认真做好他的工作,当他所负责的项目接近了尾声,他觉得自己的努力付出并没有得到相应的回报,所以决定离开。他知道自己的英文口语并不太好,没有像我那样一心坚持进管理完善的外企;因为决定了要离开,他也不像别人那样,边工作边找工作;他看中了一间正在迅速发展的公司,请了10天的年假,开始了他的应聘之路,而他也真的幸运,一周不到,就收到了他想去的公司的offer,当然,最令人兴奋的是他想去的公司满足了他二十万年薪的要求。

    同事C去新的公司上班将近一个月了,我的其他同事和朋友说起他新的工作,仍然羡慕不已,但我会觉得,这不仅仅是因为他的运气,而是因为在过去的几年中,他努力的付出、认真的学习、塌实的工作,当然,更重要的是他清楚自己需要什么,也努力去争取自己想要的。我的身边,很多人都会在抱怨自己工资不高,也有很多人抱怨自己没有机会,但是,他们很少在自己的身上去找原因,只是将一切归于运气。我很想对他们说,你是否觉得C的运气很好?那你是否也像C那样在好运降临之前主动、认真、塌实地做好每一件事情?

    其实,机会,并不是天上掉下来的馅饼,而是抓住机会的本事。当你历练出了抓住机会的本事,好运自然降临。

    对于这样的同行,小娟认为其实他是一个很聪明的人哦

    再者,还想说一句,机会只会给有准备的人!共勉......

  • Oracle 新手入门 --- 常见问题 链接【转】

    2008-07-11 16:18:43

    这几天每天下班回家都会吃紫葡萄,好喜欢哦,一边吃还一边想着那句经典的话,“吃葡萄不吐葡萄皮”哈哈。科学考证,葡萄首先要吃紫葡萄,当然喝葡萄酒也要最好不要喝白葡萄酒啊呵呵,再者葡萄最有营养的部分是皮和核啊!!!不要怀疑哦,抗氧化的高手哦!好啦,说这么多,言归正传啦!Testing离不开DB,如果你还没有开始学,那下面的资源希望能对您有所帮助

    再者谢谢原创作者的辛勤劳动!

    ----入门篇----
      
    入门知识
    http://www.cnoug.org/viewthread.php?tid=17449&h=1
      
    Oracle 的入门心得-->强烈推荐
    http://www.cnoug.org/viewthread. ... amp;bpg=1&age=0

    How Do I get Started with Oracle?
    http://www.cnoug.org/viewthread.php?tid=23373

    入门提高必读
    上:
    http://www.cnoug.org/viewthread.php?tid=21207
    下:http://www.cnoug.org/viewthread.php?tid=21650
      
    DBA需要的技能
    http://www.cnoug.org/viewthread.php?tid=19454

    OTN现在提供下载的Oracle数据库及下载方法
    http://www.cnoug.org/viewthread.php?tid=11039&h=1
      
    Oracle 8.1.6 for Win2000 系统文件解释
    http://www.cnoug.org/viewthread.php?tid=15080&h=1
      
    internal,sys,system用户有些什么不同的地方
    http://www.cnoug.org/viewthread.php?tid=14857&h=1

    一点使用net的心得
    http://www.cnoug.org/viewthread.php?tid=19126

    较全的oracle知识贴
    http://www.cnoug.org/viewthread.php?tid=18893

    ORACLE应用常见傻瓜问题1000问
    http://www.cnoug.org/viewthread. ... ighlight=1000%CE%CA

    Oracle8i和Microsoft SQL Server7.0
    http://www.cnoug.org/viewthread. ... Bsql%2B%B1%C8%BD%CF

    比较SQL Server与Oracle、DB2
    http://www.cnoug.org/viewthread. ... Bsql%2B%B1%C8%BD%CF

    Oracle 10g下载版和license版的不同
    http://www.cnoug.org/viewthread.php?tid=13817&h=1

    入门知识之Oracle 8.1.6 for Win2000 系统文件解释
    http://www.cnoug.org/viewthread.php?tid=23164

    如何有效地利用数据字典
    http://www.cnoug.org/viewthread.php?tid=25457

    如何给sqlplus 安装help
    http://www.cnoug.org/viewthread.php?tid=1710

    21日SQL自学通
    http://www.cnoug.org/viewthread.php?tid=25259

    如何查找系统文件存放位置
    http://www.cnoug.org/viewthread.php?tid=30263

    ORACLE系统概述
    http://www.cnoug.org/viewthread.php?tid=31721

    SQL*Plus中缓冲区命令列表及说明
    http://www.cnoug.org/viewthread.php?tid=33154

    Oracle数据库的几种启动阶段和关闭方式
    http://www.cnoug.org/viewthread.php?tid=36038

    V$session 视图的应用
    http://www.cnoug.org/viewthread.php?tid=38191

    SQLPLUS命令使用大全
    http://www.cnoug.org/viewthread.php?tid=16867

    ORACLE数据库常见问题诊断方法 ---(常见错误篇)
    http://www.cnoug.org/viewthread.php?tid=56386

    sql最基础的东西
    http://www.cnoug.org/viewthread. ... ghlight=&page=1

    一些常用资料,入门者可以学习学习
    http://www.cnoug.org/viewthread.php?tid=60981

    oracle基本问题
    http://www.cnoug.org/viewthread.php?tid=57897

     
  • 鼓励一下^-^

    2008-07-03 16:56:37

     

        “对于一个有一定基础的人来说,他只要真正下功夫,在6个月内就可以掌握一门学问”    —西蒙学习法

            “每天进步一点点”  —小娟

     

  • 浅谈软件测试职业发展规划[转](一)

    2008-07-03 16:44:48

         谢谢大家的踩踏,小娟会继续努力的!职业规划是成功的开始哦,无论怎么说,有规划才有方向。

         谢谢原创作者的工作!小娟会在下面贴出一些自己的总结呵呵,期待哦。。。。。

         面对众多的职业选择,你已经做出了自己的职业选择--软件测试,如何达到你的职业目的地?回答这个关于你未来职业的问题的最好答案,就是制定出你自己的职业发展规划。

         一个清晰的职业规划可以帮助你一步一步接近并达到职业目标,而确定你的职业目标之日,就是你的职业转变为你的事业之时。

         纵观当今社会各行各业,对于个人的职业发展方向,从宏观上都可以划分为四个群体,即:“低管理、低技能” “高管理、低技能” “低管理、高技能”“高管理、高技能”,而在IT 行业这种划分方法更为合理,即一起点-三方向。结合职业生涯面临的机会以及个人的知识技能、心理准备等情况,职业发展的方向有三种方向:管理方向、专家方向、咨询方向。

         对于大多数测试从业者来说,大致发展方向如下:

         初级测试工程师––入门级,具有一些手工测试经验,开发测试脚本并开始熟悉测试生存周 期和测试技术

         测试工程师––能够独立编写自动测试脚本程序并担任测试编程初期的领导工作,进一步拓展编程语言、操作系统、网络与数据库方面的技能;

         高级测试工程师––帮助开发或维护测试或编程标准与过程,负责同级的评审,并能够指导初级的测试工程师;、

         Team Leader––一般具有5年左右工作经验,负责管理一个小团队。负责进度安排、工作规模/成本估算、按进度表和预算目标交付产品,负责开发项目的技术方法,能够为用户提供支持与演示;

         测试经理––能够担当测试领域内的整个开发生存周期业务,能够为用户提供交互和大量演示,负责项目成本、进度安排、计划和人员分工;

         计划经理––具有多年纯熟的开发与支持(测试/质量保证)活动方面的经验,管理从事若干项目的人员以及整个开发生存周期,负责把握项目方向与盈亏责任。

         那么怎么来实现自己的职业生涯规划呢,其实很简单,就是从计划到行动。首先根据个人价值观制定好自己的职业发展目标和方向,目标和方向确定之后,我们要做的就是制定计划,即采用树形图表法将目标分解成任务形成计划。

         先写下一个大目标,作为树干,然后写出实现该目标的所有必要及充分条件,作为小目标,即第一层树枝,依次写出干目标所需的必要及充分条件,变成第二层树枝,如此类推,直到写出所有树叶-即时目标为止,才算完成该目标的细化分解。检查此树形分解是否充分,即反之从叶子到树枝再到树干,不断检查如果小目标均达成,大目标是否一定会达成,如是则表示分解已完成;如不是则表明所列的条件还不够充分,继续补充被忽略的树枝。

         计划制定出来之后,大家就可以把人生目标转换成现在的行动了。【转】

         祝大家开心工作,多多Bonus!

  • 开张大吉!

    2008-07-03 12:34:36

     

     

    小娟的一亩二分田开始耕种啦!

    。。。

    瓜瓜果果们希望能和大家一起健康成长!!!

数据统计

  • 访问量: 14181
  • 日志数: 17
  • 建立时间: 2008-07-03
  • 更新时间: 2008-10-20

RSS订阅

Open Toolbar