qileilove

blog已经转移至github,大家请访问 http://qaseven.github.io/

QTP书写程序技巧

 一、添加固定注释
  新建一TXT文档,将要添加的注释写在文档中
  将文档名改为:ActionTemplate.mst
  将文件放到QTP安装目录的dat文件夹中
  设置好后,在QTP中每次新建一个测试就会自动添加固定的注释
  二、调用外部vbs文件方法
  1.将通用函数写在一个vbs文件中,以供其他脚本调用
  2.调用外部VBS文件中的通用函数的方法(二选一即可),设置完后在QTP中直接使用函数名进行调用:
  1)通过在QTP中设置:file-->settings-->Resource-->“添加VBS文件的路径“
  2)在脚本中使用Executefile语句:Executefile "VBS文件路径"

posted @ 2014-08-14 09:23 顺其自然EVO 阅读(177) | 评论 (0)编辑 收藏

从敏捷工程实践中获益的五种途径

创造有用的软件是门工艺。这是没有非黑即白的成功公式的。但是,却有一些敏捷工程实践,实践证明它已经屡次为企业增加了价值,但前提是要考虑周全之后再使用。在本文中,我将与大家分享5条具体的途径,你的企业能够通过这些途径从敏捷工程实践中获益。
  (假设我们使用Scrum + 极限编程(XP)= 敏捷这条基本公式,那么在我讲敏捷工程实践时就会谈到公式中与XP相关的那一部分,比如测试驱动开发、结对编程和持续集成。)
  James Shore在一篇精辟的博客中说:
  “与XP(极限编程)相比,Scrum更加简单,对原有工作几乎也产生不了多大的影响,所以我看到很多人是从Scrum开始入手的。但其中的问题是,从Scrum开始入手的团队比从XP开始的团队多得太多了。XP团队在开始时会经历更多的痛苦,但在第一年就会达到高效的状态。”
  我不仅同意他所说的,而且也亲眼见过很多次这样的情况。XP很难。它难在需要严格的纪律,另外,它的好处虽多却有时难以立杆见影。
  我的父亲是一名牙科医生。他有一次告诉我说“找一位好的牙科医生是很难的。牙医能补牙或者杀死牙神经,但你5年内不会知道他做得好不好,因为你需要一段时间之后才知道他补得到底好不好。”XP与之非常类似。
  我清楚最好的软件开发人员(而且知道上千名)在高压环境下是最遵守纪律的。
  许多开发人员体验了敏捷/Scrum/精益/XP的做法。但是,严格的截止日期临近时,或者团队已经拖期时,再或者公司要求团队“快速完成”时,他们还能维持多高的纪律水平呢?
  There are many XP practices. The most valuable ones for a business are:
  现在有很多XP实践,其中对商业而言最有价值的是:
  测试驱动开发—TDD是你的商业安全网。因为测试是在编码之前完成的,所以写完的测试一定会运行失败,接下来再写代码使测试可以通过。TDD保证你的产品功能,不管公司和技术团队实现的是大规模的变更还是小规模的变更。
  结对编程—让2名开发人员写同一段代码,使用同一个键盘和同一台显示器。因为结对大大降低了浪费的时间和缺陷,所以能带来更高质量的代码,并带来高水平的协作。
  集体代码所有制和持续集成—如果每段代码不只有一个人熟悉,那么就不会有什么交流瓶颈了。把代码持续集成到一个主干可以避免重复和不匹配的代码。
  重构—在当时的情况下,写的代码是解决已知问题的。通常,团队巧妙地解决了他们的问题,然后持续重构和修改代码,确保代码库能以最为高效的方式不断满足业务最新的需要。
  然而给定的XP很难,它需要连续的训练和一定的时间保证才能做得好,高管们要的是速度。技术总监们、副总裁们、首席执行官们说“我希望我的工程团队获得更好的敏捷工程实践效果,使我们变得更快。”
  最初,我同意 James Shore所说的,XP的确很难,实际上它违反了敏捷帮助团队更快的理念。事实上,XP有陡峭的学习曲线,而且很自然的是,这需要一定的学习时间,学习XP的团队肯定比什么都不学的团队更慢。
  所以,如果“更快”不是敏捷工程实践真正的价值,那么什么才是它真正的价值呢?
  我认为,敏捷工程实践真正的价值是,它们让公司以某种方式拥抱变化,事实上,这将成为一种竞争优势。
  为什么呢?
  当我们进入2014年,这个论点将在逻辑上成为合理的。如果现实果真如此,那么以此推理,在接下来的十年间,那些充分利用软件构建流程的公司将走向成功。
  是的,这个道理大家都懂,有很多竞争优势是软件之外的。例如,那些能够充分利用数学工式去预测未来股票的对冲基金将拥有竞争优势。那些能够充分利用布艺和颜色去预测未来时尚的零售商店将拥有竞争优势。但是,随着7乘24小时的网络连接和全球信息共享,你刚想到一个好点子,你的竞争对手就将会去模仿它了。
  这让我们兜了一圈又回到刚才的观念,那些能够充分利用软件构建流程的公司将超过他们的竞争对手,拥有巨大的竞争优势。这个概念的关键词是“流程”。它是技术栈无关的。从敏捷工程实践中充分获益的关键是,出现危机的时候仍能极力地坚持最起码的流程原则。这就像是锻炼身体。假设你休假的时候每周锻炼五次,上班的时候每周锻炼一次,那么实际上你每周只会锻炼一次。如果离截止日期还远的时候才实践结对和TDD,一旦要到截止日期了就把敏捷抛到一边,那就说明你并没有勤奋地实践敏捷流程。
能够让企业通过使用敏捷工程实践获益的五种具体方法是:
  1.可以随机应变的灵活性
  我的公司为大型零售商创建了一个电子商务平台。在六个月的开发周期中,前三个月团队具有自主权。我们两周一个迭代,并且每两周发布一次代码。某天,产品团队做竞争情报研究时发现,一个竞争对手针对退货修改了他们销售和信用卡的处理方式。因为我们完成的代码上个迭代已经充分测试了,并和其他代码集成好了,而且已经发到生产环境中了,所以我们清楚自己的代码非常可靠,即使变更也不会有任何宕机或缺陷之类的重大风险。
  第二天,我们决定不再继续既定的构建,而是开了个需求收集会,估算多久能完成新的特性,并对用户故事重新排序。数天之内,我们就把一组新特性确定好范围,排好优先级,由团队优先来完成这些任务。两周之后,修改后的信用卡退货引擎就发布到生产环境中了。没发现任何缺陷,销售团队对此非常满意。
  这完全得益于包括测试驱动开发在内的敏捷工程实践,公司清楚他们能够依靠技术团队快速应变,尽可能地降低在线品牌展示质量的风险,从而始终保持着市场的竞争力。
  2.可以实时地重新分配开发团队的成员
  如果要达到这种随机应变的灵活性,在两周内就发布新的信用卡退货引擎,那么团队在本迭代只为这个特性上安排两名工程师就不太够了,实际需要四名。由于团队采用了结对编程和集体代码所有权的缘故,所以团队中的成员熟悉每一段代码,我们可以随便拉一对已经完成其他故事的程序员去完成这个新的优先级更高的故事,当我们重新排定的优先级之后仍能维持原有的速率。
  使用敏捷工程,项目不会因为某个摇滚巨星无法从其他事情中分身而阻碍了进程。整个团队可以转向新的需求。为新功能配备的最佳配置可以专心去完成新功能。团队处在一个不断交流的氛围中,所以为一个故事增加更多的工程师会很顺利,不会产生任何混乱。
  3.自然而然地避免了去废弃持续了几个月的工作
  经过充分测试再发布生产环境的代码还有另外一个好处,一旦完成就不会被废弃。当我们确认需要完成信用卡退货特性时,就可以把工作重心直接转到这个优先级更高的新特性上。在这个过程中不需要废弃任何工作。在我们要开始这项新工作之前,没有必须要完成或推迟的半成品。已完成的所有代码都是高质量的、无缺陷的、完整的和有效的。
  4.坚信已完成的特性永远代表着项目最重要的那部分
  几年前,我的团队为一个大型政府机关项目做一个项目。这个项目是个长期合作,我们编码就用了一年。因为我们使用了敏捷工程实践,所以代码会被持续发布到生产环境中。
  在某一天的早晨,一位干系人对这个项目的优先级有了一些新的想法。他担心因此可能会使其他重要功能无法完成了。他不熟悉每天的项目进度,也没有意识到敏捷的商业价值。
  所幸,工程团队实际上是紧贴业务开展工作的,每两周按业务的优先级完成他们的工作,在过去的一年中,最重要的特性已经完成了、已经完全集成在一起了、已经充分测试了,它们的质量坚若磐石。
  公司坚信在任何时间点完成的都是最重要的特性。干系人可以放心软件的任何变更,不但多大都可能,而且都可以欣然接受且风险很低。
  5. 能营销活动策划充满信心
  我们都曾经经历过这样的事,公司策划一场营销活动。我经常和团队在一起工作,他们需要在确定的日期内完成软件的编码。去年,我负责一个教育服务性企业的项目。一场营销活动已经全面铺开。我们有一个明确的期限:返校日期。他们希望返校期间能产生巨大的销售额,所以这些特性必须在八月十号之前上线。由于日期是固定的,这场营销在电视、报刊和在线广告上也花费了大量的费用,电子商务网站必须在规定的日期内具备最必要的特性。
  通常接下来会发生什么事呢?我看到无数的工程团队最终会处于一种左右为难的境地。八月一号那天,产品经理意识到无法满足时间要求,如果想让产品如期上线,工程团队就要在接下来的两周里每周拼命地干100小时的活。但是,如果团队的工作强度如此之大,就会把人搞得非常地疲劳和焦虑,这样就很容易出现工作上的失误。
  如果团队能够设法做到严守敏捷原则,继续依靠工程最佳实践,那么测试驱动开发、持续集成、结对编程和其他方法将引导团队准时地发布并灵活地安排休息时间。
  团队只需这么做。我们在高压时坚守敏捷原则,并握紧手里的枪。使用敏捷能为营销活动带来信心,其关键就是坚信这样的一个事实,其实许多特性可以有多种实现方式。例如,假设有一个特性是要把视频上传到你的网站上,那么至少有两种实现方式。方案A:花10天时间开发,使用户可以上传任何语言、任何格式和任何长度的视频文件。方案B:花1天时间开发,让用户可以把YouTube的链接粘到一个输入框里。
  你怎么选择我不得而知,但如果我是产品经理,而且时间已经到八月一号了,那我肯定会选择方案B。
  最终的结果是,我们在八月十号成功地发布了产品,它包含了所有的关键特性。我们有意欠下了大量的技术债,包括选择用一天的时间完成视频上传的特性。八月十号一帆风顺,之后我们把新特性和之前欠下的技术债重新排定了优先级。我们把技术债和新特性一起放到故事列表中重新排序,快速恢复到了两周一个迭代的平稳工作效率中。
  概括起来说,敏捷工程实践的价值已经超越了工程团队,对整个企业的好处是显而易见的。持续运用高效开发过程的公司将带着巨大的优势同我们一起走进下个十年。让你的团队以最适合的方式去实现敏捷工程实践吧,如果你有任何问题都可以向我提问,我会非常乐意地与你一起一边喝喝咖啡、喝喝啤酒一边详细地交流讨论的。
  关于作者
  Debbie Madden是一位经验丰富的管理人员、战略顾问和接口人。目前,她是 Stride的首席执行官,为高管和企业家们提供战略建议和一些首席惊喜官的咨询。Debbie信奉以人为本。她的生活和工作都坚守着热情、诚实、勇敢、公平的基本原则。她专门为技术、专业服务和初创公司提供指导和咨询。Debbie坚信,在接下来的十年软件构建流程将成为公司的巨大优势。敏捷和初创引发了她的思考。她相信,迭代、协作的方法会把权力授予团队,个人爱好与商业优先级将保持一致。已经过去的十年,Debbie一直在经营Cyrus Innovation。最近,她已经成为Cyrus的首席执行官,把这家公司从一无所有发展到了规模达60人、价值数百万美元、五次获得Inc5000强增长最快的私营企业称号,并被Crain评为纽约最好的工作场所。

posted @ 2014-08-14 09:22 顺其自然EVO 阅读(159) | 评论 (0)编辑 收藏

谈谈性能测试分类

 网上查阅了很多资料,关于性能测试的分类也众说纷芸。谈谈自己对性能测试分类的理解。
  性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。
  验收性能测试(狭义)   性能测试方法是通过模拟生产运行的业务压力量和使用场景组合,测试系统的性能是否满足生产性能要求。通俗地说,这种方法就是要在特定的运行条件下验证系统的能力状态。
  特点: 1、这种方法的主要目的是验证系统是否有系统宣称具有的能力。 2、这种方法要事先了解被测试系统经典场景,并具有确定的性能目标。 3、这种方法要求在已经确定的环境下运行。 也就是说,这种方法是对系统性能已经有了解的前提,并对需求有明确的目标,并在已经确定的环境下进行的。
  负载测试(Load Test)通过在被测系统上不断加压,直到性能指标达到极限(例如“响应时间”)超过预定指标或都某种资源已经达到饱和状态。
  特点: 1、这种性能测试方法的主要目的是找到系统处理能力的极限。 2、这种性能测试方法需要在给定的测试环境下进行,通常也需要考虑被测试系统的业务压力量和典型场景、使得测试结果具有业务上的意义。 3、这种性能测试方法一般用来了解系统的性能容量,或是配合性能调优来使用。 也就是说,这种方法是对一个系统持续不段的加压,看你在什么时候已经超出“我的要求”或系统崩溃。
  压力测试(强度测试)(Stress Test)压力测试方法测试系统在一定饱和状态下,例如cpu、内存在饱和使用情况下,系统能够处理的会话能力,以及系统是否会出现错误
  特点: 1、这种性能测试方法的主要目的是检查系统处于压力性能下时应用的表现。 2、这种性能测试一般通过模拟负载等方法,使得系统的资源使用达到较高的水平。 3、这种性能测试方法一般用于测试系统的稳定性。 也就是说,这种测试是让系统处在很大强度的压力之下,看系统是否稳定,哪里会出问题。
  并发测试(Concurrency Testing)并发测试方法通过模拟用户并发访问,测试多用户并发访问同一个应用、同一个模块或者数据记录时是否存在死锁或其者他性能问题。
  特点: 1、这种性能测试方法的主要目的是发现系统中可能隐藏的并发访问时的问题。 2、这种性能测试方法主要关注系统可能存在的并发问题,例如系统中的内存泄漏、线程锁和资源争用方面的问题。 3、这种性能测试方法可以在开发的各个阶段使用需要相关的测试工具的配合和支持。 也就是说,这种测试关注点是多个用户同时(并发)对一个模块或操作进行加压。
  配置测试(Configuration Testing)配置测试方法通过对被测系统的软\硬件环境的调整,了解各种不同对系统的性能影响的程度,从而找到系统各项资源的最优分配原则。
  特点: 1、这种性能测试方法的主要目的是了解各种不同因素对系统性能影响的程度,从而判断出最值得进行的调优操作。 2、这种性能测试方法一般在对系统性能状况有初步了解后进行。 3、这种性能测试方法一般用于性能调优和规划能力。 也就是说,这种测试关注点是“微调”,通过对软硬件的不段调整,找出这他们的最佳状态,使系统达到一个最强的状态。
  可靠性测试通过给系统加载一定业务压力(例如资源在70%-90%的使用率),使系统运行一段时间,以此检测系统是否稳定运行。
  特点: 1、这种性能测试方法的主要目的是验证是否支持长期稳定的运行。 2、这种性能测试方法需要在压力下持续一段时间的运行。(2~3天) 3、测试过程中需要关注系统的运行状况。 如果测试过程中发现,随着时间的推移,响应时间有明显的变化,或是系统资源使用率有明显波动,都可能是系统不稳定的征兆。 也就是说,这种测试的关注点是“稳定”,不需要给系统太大的压力,只要系统能够长期处于一个稳定的状态。
  失效恢复测试如果系统局部发生故障,用户是否能够继续使用系统,以及如果这种情况发生,用户将受到多大程度的影响。
  特点: 1.这种性能测试方法的主要目的是验证在局部故障情况下,系统能否继续使用。 2.这种性能测试方法还需要指出,当问题发生时,“能支持多少用户访问”的结论和“采取何种应急措施”的方案。 3.一般来说,只有对系统持续运行指标有明确要求的系统才需要进行这种类型的测试。
  大数据量测试针对某些系统存储、传输、统计查询等业务进行大数据量的测试。
  疲劳强度测试主要特点是长时间对目标测试系统加压,目的是测试系统的稳定性,持续时间一般在1小时以上;感觉等同于可靠性测试。
  注意:在做性能测试时请忘掉分类.例如,运行8个小时来测试系统是否可靠,而这个测试极有可能包含了可靠性能测、强度测试、并发测试、负载测试,等等。因此,在实施性能测试时决不能割裂它们的内部联系去进行,而应该分析它们之间的关系,以一种高效率的方式来设计性能测试。

posted @ 2014-08-14 09:16 顺其自然EVO 阅读(645) | 评论 (0)编辑 收藏

http://blog.csdn.net/bonlog/article/details/9289371

tomcat7默认是将用户是注释的,配置文件在根目录下/conf/tomcat-users.xml文件,进入tomcat目录下的conf中的tomcat-users.xml:

配置默认如下:

<!--
  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <user username="tomcat" password="tomcat" roles="tomcat"/>
  <user username="both" password="tomcat" roles="tomcat,role1"/>
  <user username="role1" password="tomcat" roles="role1"/>
-->

可以不用管注释里的内容,在下面添加

增加以下语句

<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<user username="tomcat" password="tomcat" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-script,admin-gui"/>

保存后启动tomcat,输入用户名:tomcat,密码:tomcat

訪問地址:http://localhost:8080/manager/html

____________________________________________

几点说明:

1.undeploy 删除的文件 :删除后,将不可恢复。

2.expire sessions   idle[空闲]]

posted @ 2014-08-13 17:00 顺其自然EVO 阅读(218) | 评论 (0)编辑 收藏

配置Linux服务10步搞定

 检查基本条件,物理连接,server端、client端都连接了交换机或路由
  1、配置IP地址、DNS等
  # nmtui
  # service network restart        # ifconfig | grep -A1 flags
  # cat /etc/resolv.conf
  2、配置主机名主机名
  立即生效
  # hostname lz.com
  永久生效
  # echo lz.com> /etc/hostname
  配置hosts文件
  # echo 192.168.220.111   lz.com>> /etc/hosts
  查看验证
  # hostname
  # cat /etc/hostname
  # cat /etc/hosts
  3、查看服务包是否安装
  # rpm -q pkg
  4、安装服务包使用rpm或者yum源
  # rpm -ivh /media/Packages/pkg*
  # yum -y install pkg
  5、修改配置文件
  查找配置文件
  # rpm -qc pkg
  修改配置文件
  # vim /path/filename
  6、重启服务
  # service daemon restart
  7、设置开机自动启动
  # chkconfig daemon on
  8、配置防火墙
  # firewall-cmd --permanent --add-service=*
  # firewall-cmd --permanent --add-port=*/[tcp|udp]
  # service firewalld restart        # firewall-cmd --list-services
  9、如果需要调整selinux
  # setenfore 0
  # set -i '/^SELINUX/s/=.*/=permissive/' /etc/selinux/config
  10、测试验证
  a、本地测试
  b、网络测试

posted @ 2014-08-13 10:26 顺其自然EVO 阅读(182) | 评论 (0)编辑 收藏

使用SQL Profile进行SQL优化案例

     摘要: 一个社保系统的自助查询系统查询个人医疗费用明细的查询语句要用一分多钟还没查询出来,语句如下:  select * from  v_zzzd_ylbx_ylfymxcx where aac002='430703198202280017'  从上面的语句可知是从视图 v_zzzd_ylbx_ylfymxcx中查询数据。v_zzzd_ylbx_ylfymxcx视图的创建语句如下:create ...  阅读全文

posted @ 2014-08-13 10:25 顺其自然EVO 阅读(416) | 评论 (0)编辑 收藏

Appscan安全漏洞扫描使用

 这里主要分享如何使用AppScan对一大项目的部分功能进行安全扫描。
  ------------------------------------------------------------------------
  其实,对于安全方面的测试知道的甚少。因为那公司每个月要求对产品进行安全扫描。掌握了一人点使用技巧,所以拿来与大家分享。
  因为产品比较大,功能模块也非常之多,我们不可能对整个产品进行扫描。再一个每个测试员负责测试的模块不同。我们只需要对自己负责测试的模块扫描即可。
  扫描工具自然是IBM AppScan  ,功能强大,使用简单。略懂安全测试的都使用或听说过这个工具。这里就不过多介绍了。
  抽取被扫描功能的链接
  首先要抽取扫描的链接。fiddler工具来抽取。打开系统,找到你需要做扫描的功能模块,开启fiddler拦截功能,然后对你所要测试的功能做各种操作,fiddler就会记录的所有访问的链接,因为涉及到隐私,所以下图会比较模糊。
  其实,请求中有非常多的链接,但许多是一样,我们只要把不一样的全找出来就可以了。这里你需要知道每个连接的情况。也有一些外部链接是不需要抽取的。
aaa.bbb.cn
g2.aaa.bbb.cn
g1.aaa.bbb.cn
webapp.aaa.bbb.cn
uec.aaa.bbb.cn
addrapi.aaa.bbb.cn
smsrebuild1.aaa.bbb.cn
disk2.aaa.bbb.cn
mw.aaa.bbb.cn
scriptlog.aaa.bbb.cn
images.139cm.com
appmail.aaa.bbb.cn
gfile5-disk.aaa.bbb.cn
gfile8-disk.aaa.bbb.cn
gfile7-disk.aaa.bbb.cn
  把所有链接抽取出来之后就没几个了。去掉重复的就没多少了。
  完成配置向导
  下面打开appscan创建扫描。
  选择常规扫描,进入配置向导。点击下一步,进入配置
  上面这一步是重点,起始URL填写你要扫描的网址。其它服务器和域:这里把抽取的所有链接都添加进去。包括后网站的首页链接。点击下一步。
  这里提供三种方式来记录帐号,不多介绍。第一种和第三种最常用。
  然后点击几个下一步后出现后面的选项,选择第三个或第四项完成扫描的配置。

 录制扫描脚本
  完成配置后,下面就要开始录制脚本了呢。
  点击工具栏上的探索按钮,appscan会打开自带浏览器,输入系统用户名密码登录系统,对你要扫描的模块功能进行操作。
  上图为我打开的appscan自带浏览器(因为我输入的网址有误,所以无法访问)。操作完成之后,点击暂停按钮,关闭浏览器窗口即可。
  关闭浏览器后,上面的窗口中会记录所有你访问的连接,点击确定。所有的信息就会记录下来了,下面要做的点击点击工具栏上的扫描按钮开始扫描。我们一般晚上下班进行,第二天早上来看扫描结果就可以了。
  ------------------------------------
  本来到这里就可以结束了,我再多说个设置。呵呵!在手动探索的时候,因为打开的浏览器是appscan自带的,可能会存在兼容性问题,有些页面无法正常打开。那么是否可以用我们电脑上的浏览器(IE 、火狐、谷歌)来进行录制呢了。当然是可以的。
  菜单栏--工具---选项----高级
  这个一定要大图,我们只需要修改openExternalBrowser 选项“值”的参数就可以了(1=IE、2=firefox、3=chrome)。
  安全测试挺有前途的,国内起步很晚,这两年才逐渐受到重视。公司也越来越重视安全。

posted @ 2014-08-13 09:59 顺其自然EVO 阅读(1164) | 评论 (0)编辑 收藏

JAVA JDK和Tomcat环境变量配置

 CLASSPATH是什么?它的作用是什么?
  它是javac编译器的一个环境变量。它的作用与import、package关键字有关。当你写下improt java.util.*时,编译器面对import关键字时,就知道你要引入java.util这个package中的类;但是编译器如何知道你把这个 package放在哪里了呢?所以你首先得告诉编译器这个package的所在位置;如何告诉它呢?就是设置CLASSPATH啦 :) 如果java.util这个package在c:/jdk/ 目录下,你得把c:/jdk/这个路径设置到CLASSPATH中去!当编译器面对import java.util.*这个语句时,它先会查找CLASSPATH所指定的目录,并检视子目录java/util是否存在,然后找出名称吻合的已编译文件 (.class文件)。如果没有找到就会报错!CLASSPATH有点像c/c++编译器中的INCLUDE路径的设置哦,是不是?当c/c++编译器遇 到include 这样的语句,它是如何运作的?哦,其实道理都差不多!搜索INCLUDE路径,检视文件!当你自己开发一个package时,然后想要用这个 package中的类;自然,你也得把这个package所在的目录设置到CLASSPATH中去!CLASSPATH的设定,对JAVA的初学者而言是 一件棘手的事。所以Sun让JAVA2的JDK更聪明一些。你会发现,在你安装之后,即使完全没有设定CLASSPATH,你仍然能够编译基本的JAVA 程序,并且加以执行。
  .....................................................................................................................................................
  1. PATH环境变量。作用是指定命令搜索路径, 在命令行下面执行命令如javac编译java程序时,它会到PATH变量所指定的路径中查找看是否能找到相应的命令程序。我们需要把jdk安装目录下的 bin目录增加到现有的PATH变量中,bin目录中包含经常要用到的可执行文件如javac/java/javadoc等待,设置好PATH变量后,就 可以在任何目录下执行javac/java等工具了。我们这里设定的PATH值为:
  %SystemRoot%/system32;%SystemRoot%;%SystemRoot%/System32/Wbem;%SYSTEMROOT%/System32/WindowsPowerShell/v1.0/;C:/Program Files/Common Files/Thunder Network/KanKan/Codecs;C:/Program Files/Microsoft SQL Server/90/Tools/binn/;C:/Program Files/Common Files/TTKN/Bin;C:/Program Files/Common Files/Teleca Shared;C:/Program Files/Java/jdk1.6.0_21/bin
  上述只有红色部分;C:/Program Files/Java/jdk1.6.0_21/bin是java的PATH变量,注意变量之间需要用";”隔开。
  2. CLASSPATH环境变量。作用是指定类搜索路径, 要使用已经编写好的类,前提当然是能够找到它们了,JVM就是通过CLASSPATH来寻找类的。我们需要把jdk安装目录下的lib子目录中的 dt.jar和tools.jar设置到CLASSPATH中,当然,当前目录“.”也必须加入到该变量中。这里CLASSPATH为:
  .;C:/Program Files/Java/jdk1.6.0_21/lib/dt.jar;C:/Program Files/Java/jdk1.6.0_21/lib/tools.jar
  3. JAVA_HOME环境变量。它指向jdk的安装目录,Eclipse/NetBeans/Tomcat等软件就是通过搜索JAVA_HOME变量来找到并使用安装好的jdk。这里JAVA_HOME为:
  C:/Program Files/Java/jdk1.6.0_21
  .....................................................................................................................................................
  java环境变量配置步骤:
  在windows桌面上右击“我的电脑” —> “属性” —> “高级” —> “环境变量”,在“系统变量”里我们可以看到系统的各个环境变量的值。双击某个变量名可以修改变量值,变量值之间用“;”隔开。我们还可以“新建”原先没 有的变量。与jdk有关的有3个环境变量;“JAVA_HOME”,“PATH”,“CLASSPATH”。我的系统中“PATH”变量已经存在,可以直 接添加新值(其它变量值不要动,防止其它程序运行异常),其它两个变量需要新建。
  CLASSPATH= .;%JAVA_HOME%/lib/dt.jar;%JAVA_HOME%/lib/tools.jar
  JAVA_HOME = C:/Program Files/Java/jdk1.5.0
  PATH  = %JAVA_HOME%/bin;%JAVA_HOME%/jre/bin
  从上面我们可以看出,PATH和CLASSPATH都使用到了JAVA_HOME,也可以使用绝对路径,两者皆可。
  .....................................................................................................................................................
  Tomcat环境变量配置:
  系统变量中新建
  BASEDIR,路径为:Tomcat根目录,如D:\Tomcat
  其它与java jdk相关的引用路径可以查看文件bin\setclasspath.bat
  注意,java环境变量配置JAVA_HOME主要为了其它容器调用,JAVA_HOME的java jdk路径后边不带“;”  即不可分号结束。
.....................................................................................................................................................
Tomcat\bin中setclasspath.bat文件
rem ---------------------------------------------------------------------------
rem Set CLASSPATH and Java options
rem
rem $Id: setclasspath.bat,v 1.6.2.1 2004/08/21 15:49:50 yoavs Exp $
rem ---------------------------------------------------------------------------
rem Make sure prerequisite environment variables are set
if not "%JAVA_HOME%" == "" goto gotJavaHome
echo The JAVA_HOME environment variable is not defined
echo This environment variable is needed to run this program
goto exit
:gotJavaHome
if not exist "%JAVA_HOME%\bin\java.exe" goto noJavaHome
if not exist "%JAVA_HOME%\bin\javaw.exe" goto noJavaHome
if not exist "%JAVA_HOME%\bin\jdb.exe" goto noJavaHome
if not exist "%JAVA_HOME%\bin\javac.exe" goto noJavaHome
goto okJavaHome
:noJavaHome
echo The JAVA_HOME environment variable is not defined correctly
echo This environment variable is needed to run this program
echo NB: JAVA_HOME should point to a JDK not a JRE
goto exit
:okJavaHome
if not "%BASEDIR%" == "" goto gotBasedir
echo The BASEDIR environment variable is not defined
echo This environment variable is needed to run this program
goto exit
:gotBasedir
if exist "%BASEDIR%\bin\setclasspath.bat" goto okBasedir
echo The BASEDIR environment variable is not defined correctly
echo This environment variable is needed to run this program
goto exit
:okBasedir
rem Set the default -Djava.endorsed.dirs argument
set JAVA_ENDORSED_DIRS=%BASEDIR%\common\endorsed
rem Set standard CLASSPATH
rem Note that there are no quotes as we do not want to introduce random
rem quotes into the CLASSPATH
set CLASSPATH=%JAVA_HOME%\lib\tools.jar
rem Set standard command for invoking Java.
rem Note that NT requires a window name argument when using start.
rem Also note the quoting as JAVA_HOME may contain spaces.
set _RUNJAVA="%JAVA_HOME%\bin\java"
set _RUNJAVAW="%JAVA_HOME%\bin\javaw"
set _RUNJDB="%JAVA_HOME%\bin\jdb"
set _RUNJAVAC="%JAVA_HOME%\bin\javac"
goto end
:exit
exit /b 1
:end

posted @ 2014-08-13 09:59 顺其自然EVO 阅读(648) | 评论 (0)编辑 收藏

通过LoadRunner - Analyze详细分析页面元素请求

众所周知LoadRunner录制某个链接,包括动态请求与js、css、jpg等静态请求。
web_custom_request("动态请求",
"URL=http://www.baidu.com/",
"Method=GET",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t1.inf",
"Mode=HTTP",
LAST);
web_custom_request("静态请求",
"URL=http://www.baidu.com/img/baidu_jgylogo3.gif",
"Method=GET",
"Resource=1",
"RecContentType=image/gif",
"Referer=http://www.baidu.com/",
"Snapshot=t2.inf",
LAST);
  针对页面每一个请求元素,怎么定位具体分析呢?
  1、通过Analyze生成Web Page Diagnostics图。
  
图一
  2、针对每一个请求元素分析
 
 图二
  
图三
  3、根据单请求元素响应时间图、Download时间图、First Buffer图,确定性能瓶颈。
  敏捷测试团队,不再仅仅是在coding之后。而是和研发人员贯穿在需求分析、规格说明、自动化单元测试、自动化验收测试、静态代码分析、技术债等环节中。所以敏捷项目必定在将来效率的趋势下成为主流。

posted @ 2014-08-13 09:58 顺其自然EVO 阅读(747) | 评论 (0)编辑 收藏

BUG管理系统运维记录(bugfree)

创建时间:     2013-06-18
  最新版本:    1.3
  制作者:       Teemo君
  release 1.1  2013-06-08     文档初生成
  release 1.2  2014-03-07      二次修改,添加维护记录
  release 1.3  2014-03-11      BUG管理系统,再次修改放在blog
  目的:  记录工作轨迹,积累工作经验.  通过知识积累形成自己的运维体系。
  工作过两间公司,都与开发打交道,需要为开发提供帮助,BUG管理系统是软件开发必不可少的应用,
  对软件生命周期直到很重要作用,运维必须掌握的应用之一。
  文档已经形成一年多,不会对目前公司造成危害,可以通过外网发布。
  需求:
  cc company 属于创新型通信行业公司,旗下开发加测试有n+2人,需要拥有自己的bug管理跟踪系统,以解决软件开发遇到的问题.  当前使用eazybug来维护,可是些软件需要收费和人员限制,出于成本和扩展性出发,需要选择开源软件在公司内服搭设服务器,以满足公司开发需求。
  经过之前比对zentao,qc,JIRA等项目软件,其中QC属于重量级,安装麻烦且还要收费,排除;JIRA软件也不错,反正也由于某种原因,排除;zentao 禅道管理软件轻量级,小清新,可是测试说有点复杂。最后通过比对软件易用性和简单性,出于单纯只是解决bug管理的功能,最终选择使用bugfree软件.
  软件介绍:
  BugFree是借鉴微软的研发流程和Bug管理理念,使用PHP+MySQL独立写出的一个Bug管理系统。简单实用、免费并且开放源代码(遵循GNU GPL).命名BugFree 有两层意思:一是希望软件中的缺陷越来越少直到没有,Free嘛;二是表 示它是免费且开放源代码的,大家可以自由使用传播。
  补充说明:
  由于版权纠纷,bugfree已经处于停止开发和技术支持,现在其官网和相关技术文档都少之又少了.之前的开始人员已经转入到zentao的开发系统中了,而且zentao项目管理系统更加优秀,功能更加强大,在yc公司有一年使用体验,推荐.
  也是因为资料少之又少,写这个文档也是了留下技术资料,以备将来使用.
  ################################分界线##########################################
  1. 软件部署平台
  RHEL 5.5   64位    2.6.18内核稳定版本
  2. 所需相应软件下载
  bugfree3.0.4.zip
  php-json-ext-1.2.1.tar.bz2
  3. 安装说明
  bugfree 是由php开发,部署在LAMP平台即可,并且bugfree需要php-json扩展库的支持,以达到数据交互和展现,而这个软件包是系统默认安装的,而且yum源也没有json,需要我们手动编译.
  出于业务的简单性,使用yum方式安装lamp软件系列,方便管理维护.
  4. 安装LAMP涉及软件
# rpm -qa | grep php
php-cli-5.1.6-27.el5
php-pdo-5.1.6-27.el5                 这个软件包特别注意下
php-pecl-json-1.2.1-4.el5
php-common-5.1.6-27.el5
php-devel-5.1.6-27.el5
php-mysql-5.1.6-27.el5
php-gd-5.1.6-27.el5
php-pear-1.4.9-8.el5
php-5.1.6-27.el5
# rpm -qa | grep mysql
mysql-server-5.0.77-4.el5_4.2
php-mysql-5.1.6-27.el5
mysql-devel-5.0.77-4.el5_4.2
mysql-devel-5.0.77-4.el5_4.2
mysql-5.0.77-4.el5_4.2
mysql-5.0.77-4.el5_4.2
# rpm -qa | grep httpd
httpd-2.2.3-43.el5
  5. 根据自己需求,找到对应版本的php-json库
  下载地址: wgethttp://pkgs.fedoraproject.org/repo/pkgs/php-json/php-json-ext-1.2.1.tar.bz2/e06e701412a055f3372775216ec3d604/php-json-ext-1.2.1.tar.bz2
  6. 之前的LAMP平台准备好,重启mysqld and httpd服务器
  接着执行相关操作,安装php-json扩展
#解压文件,并进行到目录
# tar -xjf php-json-ext-1.2.1.tar.bz2
#进入当前路径,并使用当前系统phpize刷新configure文件
# cd php-json-ext-1.2.1
# phpize
Configuring for:
PHP Api Version:         20041225
Zend Module Api No:      20050922
Zend Extension Api No:   220051025
#可以看到以configure等文件已经刷新到当前的时间了.
# ll
total 1468
-rw-r--r-- 1 10008 10008  66540 Jun 18 12:13 acinclude.m4
-rw-rw-r-- 1 10008 10008 298049 Jun 18 12:13 aclocal.m4
drwxr-xr-x 2 root  root    4096 Jun 18 12:13 autom4te.cache
drwxrwxr-x 2 10008 10008   4096 Jun 18 12:13 build
-rwxr-xr-x 1 10008 10008  42037 Jun 18 12:13 config.guess
-rw-rw-r-- 1 10008 10008   1610 Mar 31  2006 config.h.in
-rw-rw-r-- 1 10008 10008   2139 Jan 31  2006 config.m4
-rwxr-xr-x 1 10008 10008  30253 Jun 18 12:13 config.sub
-rwxrwxr-x 1 10008 10008 658032 Jun 18 12:13 configure
#进行默认当前路径编译,可以看到会生成一个我们需要的模块
# ./configure
# make
Libraries have been installed in:
/root/php-json-ext-1.2.1/modules
If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the `LD_LIBRARY_PATH' environment variable
during execution
- add LIBDIR to the `LD_RUN_PATH' environment variable
during linking
- use the `-Wl,--rpath -Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to `/etc/ld.so.conf'
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
Build complete.
(It is safe to ignore warnings about tempnam and tmpnam).
#由此我们可以知道,其实YUM安装的LAMP创建的模块放置在/usr/lib64/php/modules/,上面的configure记录也不太可靠.
# make install
Installing shared extensions:     /usr/lib64/php/modules/
# ll /usr/lib64/php/modules/json.so
-rwxr-xr-x 1 root root 92750 Jun 18 12:14 /usr/lib64/php/modules/json.so
  7. php-json 验证
  做完进行数据确认,是运维良好的习惯。重启httpd服务器以加载PHP配置,通过简单的phpinfo函数,
  以确认已经支持json
  spacer.gif@这是就不放图,大家都知道,需要通过php页面,了解此处php已经支持相关模块
  ################################分界线##########################################
  8. 实际安装bugfree软件
  #解压目录,并移到httpd DocumentRoot下,再通过浏览器访问以下路径:
  # unzip bugfree3.0.4.zip
  # mv bugfree3.0.4 /var/www/html/bugfree
  # chown -R apache.apache /var/www/html/bugfree
  9. 访问下面连接,即可进行页面安装工作,根据自己情况调整
  http://192.168.0.107/bugfree/install
  bugfree安装十分简单,只需要三个步骤即可.
  9.1 环境检查,如果有不符合的内容,按要求添加即可.
  上面如果没有安装要求准备LAMP的软件,在环境检查时会报错的。
  9.2 在数据库创建相应用户,界面会往自动调用,往里面创建表格.
  细看一下那个创建数据表的文件,所创建的表格绝大部分是INNODB存储引擎创建的表格.
  create database bugfree;
  grant all privileges on bugfree.* to bugfree@localhost identified by "xxxx";
  9.3  填写数据库连接信息,可以让应用与数据库交互
  9.4  经过几分钟等待,就可以完成安装.
9.5 访问页面,这是最新版本的bugfree 3.0.4,不知道现在还有软件下载不
  http://192.168.0.107/bugfree
  目前用户: admin
  密码:       xxx
  请更改相应的密码
  9.5 打开页面效果图.
  10.  邮件通知功能添加
  保证sendmail服务器正常启动,保证域名能被DNS正常解释
  修改相对应的配置文件
# sed -n '105,117p' /var/www/html/bugfree/protected/config/main.php
array (
'on' => '1',
'from_address' => 'xxxxxx',
'from_name' => 'BugFree',
'send_method' => 'SMTP',
'send_params' =>
array (
'host' => 'xxxx',
'smtp_auth' => true,
'username' => 'xxxx',
'password' => 'xxxx',
),
),
  11.  bugfree 维护记录
  11.1  注意应用所在目录的读写权限,因为apache会对目录/var/www/html/bugfree内容进行读写操作,权限不对,会造成页面访问不畅。此处当时通过查看/var/log/httpd下面的错误和访问日志分析解决
  11.2  bugfree发送不了邮件,对应应用日志位置,可以检查下面文件内容,发现和解决问题
  重启检查下上面那个main.php文件内容
  验证邮件用户正常发信
  最后发现是由于/etc/resolv.conf 没有内容,加入DNS记录,可是没有把httpd重启,应用无法连接DNS进行MX解析
  # tail -2 /var/www/html/bugfree/protected/runtime/application.log
  2014/03/11 11:18:35 [error] [bugfree.ProductService] mail send failed:"Language string failed to load: data_not_accepted"
  2014/03/11 11:20:32 [error] [bugfree.ProductService] mail send failed:"Language string failed to load: data_not_accepted"
  12. 目前bugfree几乎在网络上绝迹,而且相关开发团队出现矛盾,此文档只是相关维护记录,感谢相关开发者贡献,才能让用户用上这个软件,致敬。
  这个软件挺稳定的,用了一年多9个月,满足公司需求,当然后期需求复杂化,我也挺赞同迁移到升级版本的 zentao禅道。

posted @ 2014-08-13 09:53 顺其自然EVO 阅读(2327) | 评论 (0)编辑 收藏

仅列出标题
共394页: First 上一页 66 67 68 69 70 71 72 73 74 下一页 Last 
<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

导航

统计

常用链接

留言簿(55)

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜