发布新日志

  • 初学LOADRUNNER

    2009-04-14 14:34:39

    从上个星期接到任务需要做压力测试开始,正好这两个星期又比较闲,于是决定好好学习LOADRUNNER.

    起初,装这个软件就费了不少功夫,还鼓动周围的开发同事也装这个软件,可是这个软件很挑剔,几个人的电脑都不能装。我的是装好了,但是发现编译不成功。无奈,只有重装系统。这个软件挑剔的很啊。

    现记录几点安装的要求:1、系统最好是重装的。2、最好装在默认路径,且路径为英文的。3、浏览器需要是IE6,如果是遨游之类就不会产生EVENT。4、安装时需要连接网络,因为它会默认再安装几个必备的其他软件环境,如NET框架之类的。5、安装的时候尽量关闭防火墙杀毒软件之类。

    费了2天时间才把环境整好,我是比较笨笨的啦。然后开始录制脚本,编译成功。然后到CONTROLLER里面施压,发现施压的响应时间比我手工操作的响应时间短的多。排除多方原因,发现是登录时的USERNAME参数化有问题。又要同事帮查设置检查点,发现是里面有的用户不能正常登陆,修改SQL语句后,再施压,响应时间好像比较正常。

    现在有个问题,设置DURATION和不设置DURATION有多大差别?

    检查点是不是很有用?但是函数有什么意义不清楚。

    在论坛也问了几个比较弱智的问题,特意来写篇日志记录菜鸟的成长足迹。希望下次来写LOADRUNNER学习日志时,我将有很大进步。嘿嘿。鼓励自己一个先。不就是个工具吗?工具是拿来用的,不要害怕它,要藐视它。其实我以前一直挺还怕它的。

  • 有什么好的财务知识的书推荐?

    2009-03-12 10:08:50

    现在觉得自己很有必要补充财务知识,但是《会计基础》真的很枯燥,我完全看不进去,不知道有什么比较通俗易懂的财务书可以看,主要是想了解财务的基础概念,理论。
  • 安全测试学习笔记二(对于top 10 漏洞的分析)(转贴)

    2008-08-31 23:15:09

    1, 问题:没有被验证的输入

     测试方法:

     数据类型(字符串,整型,实数,等)
    ]lC e7A])d174837
     允许的字符集51Testing软件测试网(k.m?.[`W
     
    最小和最大的长度51Testing软件测试网'L)ixd p.F)c;`
     是否允许空输入
    6mr-U&?(D6z ^3R:}d174837
     参数是否是必须的
    F-W|u'~L~O*w P174837
     重复是否允许51Testing软件测试网0G"b ?k ?6ph+Y
     数值范围51Testing软件测试网 [4h8Id^5`.M$W+P
     特定的值(枚举型)
    xu&]"A$O Q9mF174837
      特定的模式(正则表达式)

    2, 问题:有问题的访问控制

     测试方法:

     主要用于需要验证用户身份以及权限的页面,复制该页面的url地址,关闭该页面以后,查看是否可以直接进入该复制好的地址
    tbz5h_'o_174837 例:从一个页面链到另一个页面的间隙可以看到URL
    地址
    $d._5]["?:J9T}L3u174837
           直接输入该地址,可以看到自己没有权限的页面信息,

    3      错误的认证和会话管理

    分析:帐号列表:系统不应该允许用户浏览到网站所有的帐号,如果必须要一个用户列表,推荐使用某种形式的假名(屏幕名)来指向实际的帐号。

    浏览器缓存:认证和会话数据不应该作为GET的一部分来发送,应该使用POST51Testing软件测试网*?&L%N\hK8? N'i

    4        问题:跨站脚本XSS

     分析:攻击者使用跨站脚本来发送恶意代码给没有发觉的用户,窃取他机器上的任意资料

     测试方法:

             HTML标签:<…>…</…> 

             转义字符:&amp(&)&lt(<)&gt(>)&nbsp(空格)

             脚本语言:

          <scrīpt language=‘javascrīpt’>

           …Alert(‘’)

           </scrīpt>

             特殊字符:  ’ <  >  /

             最小和最大的长度

             是否允许空输入51Testing软件测试网c:q p1X-jX;l @

    Y?4ed s,`C174837

      例:对GridLabelTree view类的输入框未作验证,输入的内容会按照html语法解析出来
    ^s$`W#x T)F @ wR7j17483751Testing软件测试网 D xaGb gNY

    /Fzdc pd4J$r3t174837

    5,缓冲区溢出

    分析:用户使用缓冲区溢出来破坏web应用程序的栈,通过发送特别编写的代码到web程序中,攻击者可以让web应用程序来执行任意代码。
    ~4d aZ2aZ+u174837

     6,注入式漏洞。
    q!I}?_ YJ174837例:
    一个验证用户登陆的页面,

     如果使用的sql语句为:

     Select *  from  table A where  username’’ + username+’’ and pass word …..

     Sql 输入  or 11 ――  就可以不输入任何password进行攻击51Testing软件测试网*?.\X&];y,b*@'kg
     

     7,不恰当的异常处理

    分析:程序在抛出异常的时候给出了比较详细的内部错误信息,暴露了不应该显示的执行细节,网站存在潜在漏洞,

    51Testing软件测试网|~/HE&^ JZ D

     8,不安全的存储

    没有加密关键数据

    例:viewsourcehttp地址可以查看源代码

        在页面输入密码,页面显示的是 *****,  右键,查看源文件就可以看见刚才输入的密码,
    k5TNH5k g9`.K;P[17483751Testing软件测试网'C*uc}u

    /U:v3oQC1{7d5f9N174837

    9,拒绝服务

    分析:攻击者可以从一个主机产生足够多的流量来耗尽狠多应用程序,最终使程序陷入瘫痪。需要做负载均衡来对付。

    51Testing软件测试网QJ9|(N+x+U

     10,不安全的配置管理

    分析:Config中的链接字符串以及用户信息,邮件,数据存储信息都需要加以保护

    程序员应该作的: 配置所有的安全机制,关掉所有不使用的服务,设置角色权限帐号,使用日志和警报。

  • 安全测试学习笔记一(Cookie&Session)(转贴)

    2008-08-31 23:14:31

    一,Session:含义:有始有终的一系列动作\消息

    1,  隐含了“面向连接” 和“保持状态”两种含义

    2,  一种用来在客户端与服务器之间保持状态的解决方案

    3,  也指这种解决方案的存储结构“把××保存在session里”

    二, http 协议本来是无状态的,所以引进了cookiesession机制来保持连接状态

    cookiesession 机制之间的区别与联系:

    cookie机制采用的是在客户端保持状态的方法

    session机制采用的是在服务器端保持状态的方案,由于在服务器端保  持状态的同时必须要求客户端提供一个标识,

    三,关于cookie机制

    Cookie 的使用是由浏览器按照一定的原则在后台自动发送给服务器的,浏览器会检查

    所有存储的cookie,如果某个cookie所声明的作用范围大于等于将要请求的资源所在的位置,则把该cookie附在请求资源的http请求头上发送给服务器。

    存储在硬盘上的cookie可以在不同的浏览器进程间共享,比如两个IE窗口。而保存在内存里的cookie,不同的浏览器有不同的处理方式,对于IE,在一个打开的窗口上按CTRL N(从文件菜单)打开的窗口可以与原窗口共享cookie,而使用其他方式新开的IE进程则不能共享已经打开的窗口的内存cookie

    Cookie的内容包括: 名字,值,过期时间,路径和域

    四,关于session的机制

        当程序需要为某个客户端的请求创建一个session的时候,服务器首先检查这个请求是否含了一个session 标识(session id),如果有,则说明以前为该客户创建了一个session,服务器就按照session id把这个session检索出来用,一般一个cookie的名字就是类似于session ID,如果cookie被禁止的时候(cookie可以被人为的禁止),经常使用重写URL的方式,把session ID附加在URL路径后面,为了在整个交互过程中始终保持状态,就必须在每个客户端可能请求的路径后面都包含这个session id

        人们以为:“把浏览器关闭了,session 就小时了”其实不对,除非程序通知服务器删除一个session,否则服务器会一直保留,而程序一般都是在用户作log off的时候发个指令去删除session。人们之所以会产生这种错觉,是因为大部分session会采用cookie来保存session,而关闭浏览器后这个session就消失了,如果服务器设置的cookie被保存到硬盘上,或者使用某种手段改写浏览器发出的http请求头,把原来的session id发送给服务器,则再次打开浏览器,其实是可以再次找到之前的session id的。所以设置失效时间可以起到一定的保护作用。

    五,关于session的一些问题

    1,  session何时被创建: 不是在客户端访问时就被创建,而是在服务器端调用httpservletRequest.getSession(true)时才被创建。

     

    2,  session何时被删除:  A,程序调用httpSession.invalidate(),B距离上一次收到客户端发送的session id时间间隔超过了session的超时设置 C  服务器进程被停止(非持久session

    3,  如何做到关闭浏览器同时关闭session  严格说做不到,可以让所有的客户端页面使用window.onclose来监视浏览器的关闭东西,然后向服务器发送一个请求来删除session,但是对于浏览器崩溃或者强行杀死进程时仍然无能为力。

  • 五十条面试常见问题及推荐回答(英文)

    2008-08-05 00:29:11

    1. Tell me about yourself

    Cover four areas in your life: your early years, education, work experience, and your current situation. Keep your complete answer to about 2 minutes; don't ramble or elaborate. This is your 2-minute self-introduction and you will be very accomplished at giving it by the time you are in job interviews. Because this question usually comes early in the interview, you will gain confidence by knowing you can answer it well.


    2. What can you offer us that other candidates can't?

    If this question is asked early in the interview, you might respond by discussing generally how your skills and experience would benefit the company. To get more specific, you will need to know something about the job situation they have in mind and that subject is not usually discussed until the end of the interview. Resist the temptation to frame an answer based on your assumptions about the position. If the question is asked after the interviewer has described the position, only then can you relate any of your accomplishments to the problems of your prospective employer. This is an opportune time to discuss your problem-solving abilities.


    3. What are your strengths?

    You should be able to list 3 or 4 of your key strengths that are relevant to their needs, based on the research and other data you have gathered about their company.


    4. How successful have you been so far?

    Be prepared to define success for yourself and then respond. Try to choose accomplishments that relate to the company's needs and values.


    5. What are your limitations?

    Respond with a strength which, if overdone, can be a detriment and become a weakness. For example, you might. say, "My desire to get the job done sometimes causes me to be overzealous and demanding of my organization. But I am aware of this problem and believe that I have it under control." Or deal with your need for further training in some aspect of your profession. Do not claim to be faultless, but limit your answer to one specific issue.


    6. How much are you worth?

    Try to delay answering this until you have learned more about the job and can estimate, based on previous research, the salary range this company endorses for similar positions. If you feel obliged to answer, you might reply in this way. "You are aware of what I have been earning at Ajax, and I would hope that coming to Acme would be a progressive step. Perhaps, we can go into this question in more depth when have a better idea of what the job responsibilities and scope would be."


    7. What are your ambitions for the future?

    Indicate your desire to concentrate on doing the immediate job well - and your confidence that the future will then be promising. You do not want to convey that you have no desire to progress, but you need to avoid statements that are unrealistic, or that might threaten present incumbents.


    8. What do you know about our company?

    You've done your homework, and have studied all that is publicly available about Acme and are thus aware of many published facts. However, you might state that you would like to know more; then be prepared to ask intelligent questions. Avoid a recitation of the facts, incorporate personal remarks and specific questions to facilitate a lively exchange of information.


    9. Why are you seeking a position with our company?

    Indicate that from your study of the company, many of the activities and problems are the sort that would give you a chance to contribute to the company through your experience and skills. If you honestly can, express your admiration for the company and what it is that appeals to you.


    10. What qualifications do you have that you feel would make you successful here?

    If this question is asked after you have sufficient information about the position, talk about two or three of your major skills (supported by accomplishments) which you believe will be useful in the position. If the question is asked earlier talk about two or three of your major skills and relate them to the extent that you can to the company. Gauge the amount of detail for this and other answers by the time frame set by the interviewer for your meeting and by his or her signals as to how much information is enough.


    11. What things are most important to you in a job?

    Use information developed in your knowledge of the company and relate it to the position, if you know the details of the position. If not, use a corporate" answer: "to be challenged," "part of the team," etc.


    12. How would you describe your personality?

    Mention only 2 or 3 of your most useful traits. Remember that the interviewer is trying to determine your "fit" in the company. Your ability to accurately identify their corporate values will enable you to frame your response appropriately


    13. How long would it take you to make a meaningful contribution to our firm?

    Be realistic and speak in terms of 6 months to a year. Again, the timing of the question is important. Do you know enough about the specific position to give a cogent response? (If it's a new, undefined job, even 6 months to a year may be overly optimistic.)


    14. Don't you feel you might be over-qualified or too experienced for the position we have in mind?

    Most of the time this question really means: I am afraid you are willing to take this job because you need a job and you will leave as soon as you get a better job offer. Your answer must address this concern.

    Example: "You could be right, but having taken a voluntary early retirement from XYZ Company, I am in the fortunate position of being able to do what gives me the greatest satisfaction; and what I enjoy doing most is - (describe the contents of the job). The additional advantage to you if you hire me is that extra qualification and experience will be available for you to use when necessary."

    15. What is your management style?

    No doubt you defined your management style as part of your assessment and have talked about it with your consultant. You might want to talk about how you set goals and then get your people involved in them. Also, describe the techniques that you like to use to bring out the best in people, using the most appropriate style to fit the situation. Your research may have given you a sense of whether the company believes in a highly participative style, or is more authoritarian in its approach. If you don't know the company's style, keep your answer "soft" and situational.


    16. Describe a situation in which you had a difficult management problem and how you solved it.

    Relate one of your accomplishments, which had to do with this kind of situation. Depending on the organization's culture and needs, highlight conflict management, team building, or staffing.


    17. As a manager, what do you look for when you hire people?

    Their skills, initiative, adaptability - whether their chemistry fits with that of the organization." Responding in this way mirrors the interviewer's need to determine what you can do, will do, and how you fit into their organization.


    18. As a manager, have you ever had to fire anyone? If so, what were the circumstances and how did you handle it?

    If you have, answer in brief that you have indeed had experience with this problem and that it worked out to the benefit of both the individual and the organization. You followed the company's disciplinary procedures carefully before proceeding to termination. (The company may be concerned about discrimination and legal issues.) Don't go into the details unless the interviewer asks for more information. If you have never fired anyone, say so, but talk about how you would utilize progressive discipline before resorting to termination to protect the company's best interests.


    19. What do you see as the most difficult task in being a manager?

    Your answer might address getting things done through others; getting things planned and done on time; within the budget; or other management issues. Since budget management is a valuable transferable skill, you might wish to work your abilities in this area into the discussion if appropriate. Be guided by the interviewer's I-Speak style and the needs and culture of the organization in determining what to stress in your answer.


    20. Describe some situations in which you've worked under pressure or met deadlines.

    Refer to your accomplishments. Discuss one or two in which you were especially effective in meeting deadlines or dealing with high-pressure situations.


    21. Tell me about a work situation that irritated you.

    Talk about this type of situation in terms of the skills you used to manage and improve it. Avoid describing a work situation you know exists in your target company unless you want to emphasize that you can improve or eliminate it Stress your ability to '' stay cool" under pressure.


    22. Tell me about an objective in your last job which you failed to meet and why.

    This question assumes that you failed to meet some of your objectives. If you can honestly state that you met all your established objectives, say so. If there was an objective, which you were unable to meet for legitimate reasons, discuss it with an explanation of the obstacles over which you had no control. Even better, discuss an objective which you "renegotiated" when you realized it could not be met because of obstacles beyond your control.


    23. Would you describe a few situations in which your work was criticized?

    Describe only one, and tell how you have corrected or plan to correct the issue. Do not go into detail. If the interviewer wants more detail let them ask for it.


    24. What have you learned from your mistakes?

    Discuss one or two situations where you successfully transformed a mistake or error in judgment into a learning experience.Emphasize the positive result, with the error as the learning catalyst.


    25. What important trends do you see coming in our industry?

    Choose two or three important developments to discuss. This is your chance to show that you have thought about the future, the economics, the markets, and the technology of the industry.


    26. Why are you leaving your present job?

    If you had the opportunity to cover this in your 2-minute self-introduction, there's a good chance the question will not be asked. Regardless of when it is asked, it must be answered briefly. If it was a force reduction due to economic circumstances, make that clear. If possible, explain how your termination was part of a larger movement. When you have finished answering, let it go. Refrain from analyzing any friction points with your boss.


    27. Describe what you feel would be an ideal working environment.

    This is a place where you can bring in some of your own values and personal experiences. But don't make it sound too sublime or impractical. Downplay the negative.


    28. Looking back. How do you perceive your past employer? Be positive.

    Refer to the valuable experience you have gained. "It is an excellent company which has given me a lot of good experience and opportunities to perform."


    29. What have you done that helped increase sales or profit? How did you go about it?

    This is your chance to describe in some detail a business accomplishment that is relevant to the proposed new job. Feel free to dwell on this.


    30. How much financial responsibility have you had to account for?

    You can answer this in terms of your budget or head-count or the size of the project or sales that you directed


    31. How many people have you managed on your recent jobs?

    Be specific - and feel free to refer to those over whom you had influence, such as a task force or a matrix organization.


    32. Give examples of times when you were a leader.

    Draw examples from accomplishments, which demonstrate your leadership skills.


    33. How do you think your subordinates perceive you?

    Be as positive as you can, referring to your strengths, skills and traits, remember to be honest. References are easily checked.


    34. In your last position, what were the things that you liked most? And liked least?

    Respond with care to this question. You'll have the information from your satisfiers/dissatisfiers, but you'll want to emphasize the positive and not talk at length about the negatives.


    35. In your recent position, what were some of your most significant accomplishments?

    Since you have already selected the specific accomplishments you want to talk about, this question will be easy for you. Be ready to describe three or four of them in detail. When possible, try to relate your answer to the nature of the new challenges you might be facing.


    36. Why haven't you found a new position after so many months?

    You may find this question offensive, but do not take it personally. Simply give a brief answer, "Finding just any job is not too difficult, but finding the right job takes care and time," and move on.


    37. What do you think of your previous boss?

    Be as positive as you can, and avoid becoming embroiled in this issue. This is a loaded question because most bosses avoid a contentious or difficult subordinate. If you like the individual, say so and tell why. If you don't, think of something positive to say.


    38. If I spoke with your previous boss, what would he or she say are your greatest strengths and weaknesses?

    Be consistent with what you think he or she would say. Position any weakness in a positive way. Your old boss will probably want to give you a good reference, so recount some of the good things you did for him or her.


    39. In your most recent position, what problems did you identify that had previously been overlooked?

    Refer to accomplishments listed on your resume. Keep answers brief and include how the accomplishment was obtained.


    40. If you had your choice of jobs or companies, where would you land?

    Talk about the target job and what is attractive in the company that is interviewing you.


    41. What do you feel you should earn in the proposed position?

    You may want to answer this with a question, such as, "What is the typical salary range for similar jobs in your company?" Or, "I consider myself to be a better than average, so I would expect to receive an offer that would be better than the midpoint of the salary range for the position." If there is no range in the company, give the range that you had in mind. But qualify it by saying you hope to learn more about the job responsibilities and scope.


    42. If we were to offer you this position, what changes would you make in your organization?

    The timing of this question is critical, since you can't give any specific answer without knowing some details about the position, organization and culture. Even if you do, be careful about describing sweeping changes you might want to make. Unless the interviewer has specified critical problem areas that you feel comfortable addressing, limit your answer to explaining the need to study the current organization, talk with staff, and fully assess the implications before recommending any changes.


    43. Do you have any objections to taking our battery of psychological tests?

    "No, none at all." (This is an indication that you are a serious candidate.)


    44. What other types of jobs or companies are you considering at this time?

    Don't feel obliged to reveal details of your other negotiations. If you are interviewing elsewhere refer to your campaign in a general way. But concentrate mainly on the specific job for which you are interviewing.


    45. What sort of outside reading do you do?

    Be honest. If possible, mention some of the things you read in order to keep yourself up-to-date in your professional field. However, it is okay to show balanced interests by mentioning your recreational reading as well.


    46. What motivates you the most?

    Use the results of your career anchors and career assessment, but keep your answer fairly general: the satisfaction of meeting the challenges of the position, developing teams and individuals, meeting organizational goals. (Only if you are in sales would you mention money as a motivator.)


    47. Give one or two examples of your creativity.

    Refer to accomplishments that relate to the company and the position, if possible.


    48. What are your long-range goals?

    Relate your answer to the company you are interviewing with, rather than give a very broad, general answer. Keep your ambitions realistic. Talk first about doing the job for which you are applying, then talk about longer-range goals.


    49. What sort of relationships do you have with your associates, both at the same level and above and below you?

    This is a very important question, so you will want to take the time to answer it in logical steps. When talking about your relationships with subordinates, be prepared to state your management philosophy, particularly with regard to performance issues. When speaking of bosses, indicate your keen interest in understanding your boss's expectations, so that you and your organization can build your goals in a way that will support his/her goals. You may also want to talk about how you would keep your boss informed. Stress your team-building, mutually cooperative approach with peers.


    50. What are some of your outside activities or recreations?

    Hopefully, your answer can show that you lead a balanced life. But avoid mentioning so many activities that it casts some doubt on how much time you will have for the job. Remember that your hobbies and recreation activities can be quite revealing as to your own personality and values.
  • 测试考试题

    2008-07-10 23:29:47

    一、判断题
    1.软件测试的目的是尽可能多的找出软件的缺陷。(Y)
    2.Beta 测试是验收测试的一种。(Y)
    3.验收测试是由最终用户来实施的。(N)
    4.项目立项前测试人员不需要提交任何工件。(Y)
    5.单元测试能发现约80%的软件缺陷。(Y)
    6.代码评审是检查源代码是否达到模块设计的要求。(N)
    7.自底向上集成需要测试员编写驱动程序。(Y)
    8.负载测试是验证要检验的系统的能力最高能达到什么程度。(N)
    9.测试人员要坚持原则,缺陷未修复完坚决不予通过。(N) 看情况,有些时候就是要坚持原则的.
    10.代码评审员一般由测试员担任。(N)
    11.我们可以人为的使得软件不存在配置问题。(N)
    12.集成测试计划在需求分析阶段末提交。(N) 集成测试计划在概要设计说明书出来后提交,需求分析阶段不需要.

    二、选折
    1.软件验收测试的合格通过准则是:(ABCD)
    A. 软件需求分析说明书中定义的所有功能已全部实现,性能指标全部达到要求。
    B. 所有测试项没有残余一级、二级和三级错误。
    C. 立项审批表、需求分析文档、设计文档和编码实现一致。
    D. 验收测试工件齐全。
    2.软件测试计划评审会需要哪些人员参加?(ABCD)
    A.项目经理
    B.SQA 负责人
    C.配置负责人
    D.测试组
    3.下列关于alpha 测试的描述中正确的是:(AD)
    A.alpha 测试需要用户代表参加
    B.alpha 测试不需要用户代表参加
    C.alpha 测试是系统测试的一种
    D.alpha 测试是验收测试的一种
    4.测试设计员的职责有:(BC)
    A.制定测试计划
    B.设计测试用例
    C.设计测试过程、脚本
    D.评估测试活动
    5.软件实施活动的进入准则是:(ABC)
    A.需求工件已经被基线化
    B.详细设计工件已经被基线化
    C.构架工件已经被基线化
    D.项目阶段成果已经被基线化
    三、添空
    1.软件验收测试包括:正式验收测试,alpha测试,beta测试。
    2.系统测试的策略有:功能测试,性能测试,可靠性测试,负载测试,易用性测试,强度测试,安全测试,配置测试,安装测试,卸载测试,文挡测试,故障恢复测试,界面测试,容量测试,兼容性测试,分布测试,可用性测试,(有的可以合在一起,分开写只要写出15就满分哦)
    测试策略就是为了达到这样的平衡而采取的测试工具、测试方法、测试技术的总和。狭义来讲,测试策略是指如何划分并组织被测对象。例如,集成测试如何确定被测对象的粒度,如何对各模块逐渐进行集成;单元测试如何确定被测单元,各被测单元是独立测试还是自底向上或自顶向下逐步进行。楼主回答的是系统测试类型.

    3.设计系统测试计划需要参考的项目文挡有:软件测试计划,软件需求工件和迭代计划。系统测试计划的依据是:软件需求规格说明书
    4.对面向过程的系统采用的集成策略有:自顶向下,自底向上两种。
    5.(这题出的有问题哦,详细的5步骤为~~)通过画因果图来写测试用例的步骤为:
    (1)分析软件规格说明描述中,哪些是原因(即输入条件或输入条件的等价类),哪些是结果(即输出条件),并给每个原因和结果赋予一个标识符。
    (2)分析软件规格说明描述中的语义,找出原因与结果之间,原因与原因之间对应的是什么关系? 根据这些关系,画出因果图。
    (3)由于语法或环境限制,有些原因与原因之间,原因与结果之间的组合情况不可能出现。为表明这些特殊情况,在因果图上用一些记号标明约束或限制条件。
    (4)把因果图转换成判定表。
    (5)把判定表的每一列拿出来作为依据,设计测试用例。

    四、简答(资料是搜集整理的,感谢前辈的解题)无
    1.区别阶段评审的与同行评审
    同行评审目的:发现小规模工作产品的错误,只要是找错误;
    阶段评审目的:评审模块 阶段作品的正确性 可行性 及完整性
    同行评审人数:3-7人 人员必须经过同行评审会议的培训,由SQA指导
    阶段评审人数:5人左右 评审人必须是专家 具有系统评审资格
    同行评审内容:内容小 一般文档 <  40页, 代码 < 500行
    阶段评审内容: 内容多,主要看重点
    同行评审时间:一小部分工作产品完成
    阶段评审时间: 通常是设置在关键路径的时间点上!

    2.什么是软件测试
    为了发现程序中的错误而执行程序的过程

    3简述集成测试的过程
    系统集成测试主要包括以下过程:
    1. 构建的确认过程。
    2. 补丁的确认过程。
    3. 系统集成测试测试组提交过程。
    4. 测试用例设计过程。
    5. 测试代码编写过程。
    6. Bug的报告过程。
    7. 每周/每两周的构建过程。
    8. 点对点的测试过程。
    9. 组内培训过程。
    集成测试过程:集成测试计划->集成测试设计->集成测试实现->集成测试执行

    4 怎么做好文档测试
    仔细阅读,跟随每个步骤,检查每个图形,尝试每个示例。P142
    检查文档的编写是否满足文档编写的目的
    内容是否齐全,正确
    内容是否完善
    标记是否正确


    5 白盒测试有几种方法
    总体上分为静态方法和动态方法两大类。
    静态:关键功能是检查软件的表示和描述是否一致,没有冲突或者没有歧义
    动态:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。
    白盒测试:测试证明每种内部操作和过程是否符合设计规格和要求,基于程序结构的逻辑驱动测试.静态的举例:代码走读,代码检视.

    6系统测试计划是否需要同行审批,为什么
    需要,系统测试计划属于项目阶段性关键文档,因此需要评审。

    7Alpha测试与beta的区别
    Alpha测试 在系统开发接近完成时对应用系统的测试;测试后仍然会有少量的设计变更。这种测试一般由最终用户或其它人员完成,不能由程序或测试员完成。

    Beta测试 当开发和测试根本完成时所做的测试,最终的错误和问题需要在最终发行前找到。这种测试一般由最终用户或其它人员完成,不能由程序员或测试员完成。

    Alpha测试:用户在接近正式环境下的测试,开发人员在用户旁记录错误情况和使用中的问题.
    Beta测试:多个用户在实际使用环境下的测试,开发人员不在测试现场,用户通过发送报告的形式把发现的问题反馈给开发人员.

    8比较负载测试,容量测试和强度测试的区别
    负载测试:在一定的工作负荷下,系统的负荷及响应时间。
    强度测试:在一定的负荷条件下,在较长时间跨度内的系统连续运行给系统性能所造成的影响。
    容量测试:容量测试目的是通过测试预先分析出反映软件系统应用特征的某项指标的极限值(如最大并发用户数、数据库记录数等),系统在其极限值状态下没有出现任何软件故障或还能保持主要功能正常运行。容量测试还将确定测试对象在给定时间内能够持续处理的最大负载或工作量。容量测试的目的是使系统承受超额的数据容量来发现它是否能够正确处理。容量测试是面向数据的,并且它的目的是显示系统可以处理目标内确定的数据容量。
    1.负载测试:通过逐步增加系统负载,最终确定在满足性能指标的情况下,系统能承受的最大负载量的测试。 2.压力测试:通过逐步增加系统负载,最终确定在什么负载条件下系统性能将处于崩溃状态,以此获得系统能提供的最大服务级别的测试。 3.强度测试:又称疲劳强度测试,在系统稳定运行的情况下能够支持的最大并发用户数,持续执行一段时间业务,通过综合分析,确定系统处理最大工作量强度性能的过程。
  • Alpha和Beta测试简介

    2008-07-09 23:39:55

    今天面试遇到了这两个概念的题目,而且多次出现,特意从论坛搜来了概念。

     

    大型通用软件,在正式发布前,通常需要执行Alpha和Beta测试,目的是从实际终端用户的使用角度,对软件的功能和性能进行测试,以发现可能只有最终用户才能发现的错误。

    Alpha测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的受控测试,Alpha测试不能由程序员或测试员完成。Alpha测试发现的错误,可以在测试现场立刻反馈给开发人员,由开发人员及时分析和处理。目的是评价软件产品的功能、可使用性、可靠性、性能和支持。尤其注重产品的界面和特色。Alpha测试可以从软件产品编码结束之后开始,或在模块(子
    系统)测试完成后开始,也可以在确认测试过程中产品达到一定的稳定和可靠程度之后再开始。有关的手册(草稿)等应该在Alpha测试前准备好。

    Beta测试是软件的多个用户在一个或多个用户的实际使用环境下进行的测试。开发者通常不在测试现场,Beta测试不能由程序员或测试员完成。因而,Beta测试是在开发者无法控制的环境下进行的软件现场
    应用。在Beta测试中,由用户记下遇到的所有问题,包括真实的以及主管认定的,定期向开发者报告,开发者在综合用户的报告后,做出修改,最后将软件产品交付给全体用户使用。Beta测试着重于产品的支持性,包括文档、客户培训和支持产品的生产能力。只有当Alpha测试达到一定的可靠程度后,才能开始Beta测试。由于Beta测试的主要目标是测试可支持性,所以Beta测试应该尽可能由主持产品发行的人员来管理

    由于Alpha和Beta测试的组织难度大,测试费用高,测试的随机性强、测试周期跨度较长,测试质量和测试效率难于保证,所以,很多专业软件可能不再进行Beta测试。随着测试技术的提高,以及专业测试
    服务机构的大量涌现,很多软件的Beta测试外包给这些专业测试机构进行测试。

  • 测试用例的设计

    2008-07-02 00:39:07

    测试用例这种东西对于刚入行的人来说是一种诱惑,初入测试的人急于掌握这门学问,所以一开始就会问测试用例怎么写,问的同时或许还包含了一些期望。其实测试用例就是一个测试矩阵,任何人没有必要注重形式问题,如果你现在或者未来的公司有套非常完善的文档管理体系,那么你可以参考标准模版,如果没有你们大可跟我一样使用下面的格式:51Testing软件测试网9de3CA!H"BY8d*O'e

    8@xEA+Vl C:S174837---------------------------------------------------------------
    4~#nlK/N%bA174837- ID-ACT-DATA-EXPECTED-ACTUAL-T/F-DATE
    ZI-X5NS NT174837---------------------------------------------------------------

    我认为没有什么问题,ID代表用例标号。ACT代表一种动作,因为测试动作非常复杂,如果手动执行或者自动执行,或者是一种异常状态都可以占用此位置。DATA代表数据,很多的测试类书籍中虽然没有直接讲明测试数据的划分,但是通常我们引用三种数据“正常”、“异常”、“错误”,分别对应关键字“PASS”、“ERROR”、“FAIL”,对于数据的划分我不细说了。为什么会在一个文档中体现这些内容——主要是为了以后的测试自动化,一个不能将手动测试转为自动测试的人员注定是平庸的。EXPECTED、ACTUAL分别代表期望和实际,我们做这一行的经常对这两种值的差异感到困惑,是不是“正常”、“异常”、“错误”就看个人的经验了。T/F的引入是因为有这样的一种情况介入,如果EXPECTED、ACTUAL是不同的,但是我们还是要给个T,因为对于单项的是否通过测试人员有着使用权,但决定权在于市场或者高层决策。DATE是一种好习惯,通常记为发现“PASS”、“ERROR”、“FAIL”的时间,很多人会忽略这个值,当然对于我们来说没什么损失,对于QA团队来说,仅仅提供给他们T/F是不够的。51Testing软件测试网@4GE*r.LKKr"z
    》qiuyangzh:不过在我看来,还是要把ACTUAL-T/F-DATE部分抽取出来,因为这部分不能算是测试用例的内容,而是在后面实际执行测试的时候填写的。当然,可以使用同一个格式,在编写测试用例的时候,ACTUAL-T/F-DATE部分的内容空着,在每次执行这些用例的时候,将实际情况填写进去,当然,测试用例和每次的测试执行要写在不同的文档里。

    我觉得这就是一种构造朴实的测试用例的方式,不要过于在意一份文档的表现形式,如果你有很多的时间,如果你一年才写一次测试用例,你当然可以从互联网上下载很多的资源把文档修饰的像APPLE的产品一样。
    d"kBGU ]'gvA174837》qiuyangzh:测试用例要简洁、有效,这一点我非常同意。也许你和我一样,也曾经看到过那些格式复杂的测试用例,不能说它们不好,但不一定适合组织的情况。我认为在很多情况下,应该保持测试用例简洁和朴实的风格。简洁不等于简单,真正简洁、朴实的测试用例,仍然是非常有效和实际的。
    FcoM w c174837  不过上面的测试用例格式有些过于单薄,比如测试用例的设计者和对应的测试需求,还是需要写上的。而且我的看法一直是:应该将测试用例和测试用例执行的记录分开,不要混在同一个部分,这样便于工作的进行。
    nfzseMu17483751Testing软件测试网%bM7ya)MG
       入行的人员会更进一步的发挥测试偏执狂的能力,这时候的他们急需一种数量,例如:我们一个动态库的测试用例就有3000多个,厉害吧?厉害,我当然说你厉害,你难道不厉害吗?我记得有个500强的面试题就是你能为登录的动作写多少测试用例?我想了半天说就三个,或者四个,在听到了一声深深叹息后,我惶恐的说大概我能写5个吧?当然我自己也没底,我就能写出三个:LOGIN/PASS、LOGIN/ERROR、LOGIN/FAIL,所有的测试用例就是他们的衍生,一种本源的问题。我们继续讨论3000多个测试用例的事情,有人明眼就会说:这家伙肯定是微软的,没错,除了这种大公司有了充足的资源和技术支持,哪家公司能跟他们一样呢?当然了,写3000个我想入行久了谁都可以,并且跟你对系统的熟悉程度,工作经验有莫大的关系,但是这里我又想说说关于构造朴实的测试用例的问题了。
    #yFsFTj)]174837   当你开始测试的时候,实际上最终是对代码设定路径的一种验算,如果我们都生活在单线程、无UI的年代你可以更清楚的看到“PASS”、“ERROR”、“FAIL”三种状态,可我们已经错过了这个年代,我们有了包装的UI,有了封装的API,有了各种各样的MESSAGE,所以你就要承受更多ERROR的打击。这个时候有人就会通过增加测试用例的数量来回避这些陷阱,出发点是好的做法是累死人的,如果你愿意你可以为机器码写1亿个测试用例,如果你还是很偏执,你可以为门电路写上1万亿个测试用例,你有时间执行吗?51Testing软件测试网L;K7cxJ
    》qiuyangzh:如果资源充分,当然测试用例的数量多一些对于检验产品的质量是有好处的。但实际情况往往是资源有限的,这种情况下,就必须挑选出那些最有价值的测试来执行。

    我通常不愿意写太多的测试用例,很多人认为我工作态度有问题,我认为这更能说明我的态度:我愿意朴实的构造我的测试用例,但是我有原则来保证我的测试用例的质量:
    RM B.|4GD V8p174837   1。接到任务不急于作而在于多思考,首先在纸上构造好业务流图
    %Hw'|V9z,_174837   2。业务流程图构造好,快速挑选出公用的测试用例
    J#qNS0vh4f|2a Fr174837   3。构造测试用例,先写符合主路径的三种“PASS”、“ERROR”、“FAIL”51Testing软件测试网9H4JC_%Q/m}
       4。精化测试用例,努力为ERROR多构造1-7种假设
    !r(G9f G2^6U[6i174837   5。执行测试用例,增加FAIL的标准化失败的测试,但是对应减少PASS测试用例
    /O$`I9c,F|%es4hl174837   6。进一步精化测试用例,使“PASS”、“ERROR”、“FAIL”所占的比例分别为%20、%70、%10
    h [+jB]I5s4M'J4I174837》qiuyangzh:就是因为上面这段话,更确切的说是第4、5、6条,使我决定把这篇文章放到我的Blog中来。根据我的经验,在设计和执行测试的时候,应该按照这种比例来操作。51Testing软件测试网;}*J f\ku Z
    51Testing软件测试网(Q;q5[)qgD
    我将继续我的朴实理论,多出来的时间,我可以看看蓝天,享受享受生活!51Testing软件测试网%ZN7\|3Jl%{:[
    》qiuyangzh:享受生活,享受工作

  • 在asp中调用存储过程的几种方法

    2008-07-01 22:30:00

    1 这也是最简单的方法,两个输入参数,无返回值:51Testing软件测试网$P(hF G+RWUC^
    set connection = server.createobject("adodb.connection")51Testing软件测试网L&s8]$JST y
    connection.open someDSN 51Testing软件测试网c7oAN4\g]p
    Connection.Execute "procname varvalue1, varvalue2"

    '将所有对象清为nothing,释放资源51Testing软件测试网"U"NJntq Fw
    connection.close51Testing软件测试网~dHAt*oa9g&X
    set connection = nothing

    51Testing软件测试网 _R)H$p ^Z i
    2 如果要返回 Recordset 集:51Testing软件测试网-R-vB7s!k#vf
    set connection = server.createobject("adodb.connection")51Testing软件测试网 MG bk;`:^
    connection.open someDSN
    aWIl;G#ll65703set rs = server.createobject("adodb.recordset")
    '{+z-ul4U,k*[/C6U65703rs.Open "Exec procname varvalue1, varvalue2",connection

    '将所有对象清为nothing,释放资源51Testing软件测试网1y$C;L3~7syI z`-h$k Y
    rs.close51Testing软件测试网#E3R@C1n+W;]-U
    connection.close51Testing软件测试网\](`#M W4|MwJ-J
    set rs = nothing
    MV@d9kz65703set connection = nothing

    51Testing软件测试网 SG$|aBC:T5Ru,r
    3 以上两种方法都不能有返回值,(Recordset除外),如果要得到返回值,需要用Command的方法。51Testing软件测试网#fy^,J+i
    首先说明,返回值有两种。一种是在存储过程中直接return一个值,就象C和VB的函数返回值那样;另一种是可以返回多个值,存储这些值的变量名称需要在调用参数中先行指定。
    F(b/rwz8kWuG)r65703这个例子要处理多种参数,输入参数,输出参数,返回记录集以及一个直接返回值(够全了吧?)51Testing软件测试网4Zn9u{6K.X eB
    存储过程如下:

    use pubs51Testing软件测试网7ASJJw}
    GO

    -- 建立存储过程
    dS}%IL4BHTf65703create procedure sp_PubsTest

    -- 定义三个参数变量,注意第三个,特别标记是用于输出
    ^C"b6d#I4V~P65703@au_lname varchar (20), 51Testing软件测试网8{o_t-zB&Z
    @intID int,
    ,Z |ox(B"f0Qo'w7I3|65703@intIDOut int OUTPUT

    AS

    SELECT @intIDOut = @intID + 1

    SELECT * 51Testing软件测试网/Go @$Qr7~
    FROM authors 51Testing软件测试网V\Kb-\JP[J-WU
    WHERE au_lname LIKE @au_lname + '%'

    --直接返回一个值51Testing软件测试网8Gw8O:|ST];b:Q T
    RETURN @intID + 2

    51Testing软件测试网8W0E:eR^D8qhB^
    调用该存储过程的asp程序如下:

    <%@ Language=VBscrīpt %>
    %ml8y@^%[c!U J65703<%51Testing软件测试网,{!`3bz+oh
    Dim CmdSP
    s Y:H~5E7`+o65703Dim adoRS51Testing软件测试网5Z vpRJZ6rP
    Dim adCmdSPStoredProc51Testing软件测试网k| Ql2Ugq.K8vE#k
    Dim adParamReturnValue51Testing软件测试网:I SY8M?({+c7A
    Dim adParaminput51Testing软件测试网]!T/B+u#} x'b)CD A~
    Dim adParamOutput
    0b)agr Ok j,F65703Dim adInteger51Testing软件测试网w(]$^b$U
    Dim iVal
    fl$zj!u%v3|X65703Dim oVal
    0Y0V0?8F7J/U$aU65703Dim adoField
    3Q~7qr E(~ T l65703Dim adVarChar

    ‘这些值在 VB 中是预定义常量,可以直接调用,但在 VBscrīpt 中没有预定义
    ~"c!x4DN"}G%H(p65703adCmdSPStoredProc = 451Testing软件测试网,X9\n g:m7pJ+O6G b5W3L
    adParamReturnValue = 451Testing软件测试网 C!ihHCp
    adParaminput = 151Testing软件测试网8U;t/lZ6~N1w)hjw
    adParamOutput = 251Testing软件测试网9mecq[!F
    adInteger = 351Testing软件测试网hw}uZ"\X9}fk
    adVarChar = 200

    iVal = 551Testing软件测试网-L,h(bIp:eJi
    oVal = 3

    '建一个command对象51Testing软件测试网5c$CS&BE,j ` rd
    set CmdSP = Server.CreateObject("ADODB.Command")

    '建立连结51Testing软件测试网8|:z:u lKQ ?
    CmdSP.ActiveConnection = "Driver={SQL Server};server=(local);Uid=sa;Pwd=;Database=Pubs"

    '定义command 对象调用名称 51Testing软件测试网 va B+z2V J VG7D0{
    CmdSP.CommandText = "sp_PubsTest"

    '设置command调用类型是存储过程 (adCmdSPStoredProc = 4)51Testing软件测试网 Qxkn+o,[iO
    CmdSP.CommandType = adCmdSPStoredProc

    '往command 对象中加参数
    $c#`o'O,u3Yw65703'定义存储过程有直接返回值,并且是个整数,省缺值是4
    bjo;EOo&W65703CmdSP.Parameters.Append CmdSP.CreateParameter("RETURN_VALUE", adInteger, adParamReturnValue, 4)
    0D{0h!V~0f!LR65703'定义一个字符型输入参数51Testing软件测试网-b AZN]:|u4J
    CmdSP.Parameters.Append CmdSP.CreateParameter("@au_lname", adVarChar, adParaminput, 20, "M")
    [5vWB:Y#@&]%S"E.j|65703'定义一个整型输入参数51Testing软件测试网/ctuz:q[RN$i)y{0[/m
    CmdSP.Parameters.Append CmdSP.CreateParameter("@intID", adInteger, adParamInput, , iVal)
    +U7`crP+Eb65703'定义一个整型输出参数51Testing软件测试网"P$j0Pg \!\*hc
    CmdSP.Parameters.Append CmdSP.CreateParameter("@intIDOut", adInteger, adParamOutput, oVal)

    '运行存储过程,并得到返回记录集51Testing软件测试网bKw x~ ?:YU
    Set adoRS = CmdSP.Execute

    51Testing软件测试网$py,\-u&Q
    '把每个记录打印出来,其中的字段是虚拟的,可以不用管51Testing软件测试网[5CXKT,xaD
    While Not adoRS.EOF

    for each adoField in adoRS.Fields51Testing软件测试网v%g Yd FRJ)a gJE
    Response.Write adoField.Name & "=" & adoField.Value & "<br>" & vbCRLF51Testing软件测试网 @w!Zv.NCTr}
    Next51Testing软件测试网 Ky;y'?'O
    Response.Write "<br>"51Testing软件测试网)b/y{v"I A)|`
    adoRS.MoveNext51Testing软件测试网6os0m]-z7M P$gz
    Wend

    '打印两个输出值:51Testing软件测试网S'ruN+A Y
    Response.Write "<p>@intIDOut = “ & CmdSP.Parameters("@intIDOut").Value & "</p>"51Testing软件测试网{w@@s4D9|L ~
    Response.Write "<p>Return value = " & CmdSP.Parameters("RETURN_VALUE").Value & "</p>"


    %GI$gQ4t65703'大扫除51Testing软件测试网H0|6c uPIve
    Set adoRS = nothing
    "j-yKYv`{Cd.]f65703Set CmdSP.ActiveConnection = nothing
    lFLdR*Y7H65703Set CmdSP = nothing51Testing软件测试网 l'ou C2tz0WU!_
    %>

  • 对软件测试工程师面试题目的回答

    2008-07-01 20:05:27

    转载了一篇,简洁明了,来自前辈“人月神话”的blog。谨致谢意!

    ************************************************************************************

     

    01.为什么要在一个团队中开展软件测试工作
    保证软件质量的最后一道关口。

    02.您是否了解以往所工作的企业的软件测试过程?如果了解,请试述在这个过程中都有哪些工作要做?分别由哪些不同的角色来完成这些工作?
    测试计划->测试设计(测试用例,测试数据)->测试执行(单元测试,集成测试,系统测试,回归测试)

    03. 您所熟悉的软件测试类型都有哪些?请试着分别比较这些不同的测试类型的区别与联系(如功能测试性能测试……)
    易用性测试-界面的友好性,操作方便性等。
    功能测试-系统中功能性需求的满足
    安全性测试-系统是否存在安全隐患和漏洞
    性能测试-系统在大并发下的响应速度和健壮性

    04.请试着比较一下黑盒测试、白盒测试、单元测试、集成测试、系统测试、验收测试的区别与联系。
    黑盒/白盒:主要区别在是否了解系统或程序的内部结构和代码
    单元测试:关注某一个单元,函数,模块的正确性,一般需要编写相关测试代码。
    集成测试:模块或模块直接的集成接口测试,单个模块测试
    系统测试:一个完整功能的完全测试。

    05.测试计划工作的目的是什么?测试计划工作的内容都包括什么?其中哪些是最重要的?
    提前安排出测试工具选择,测试类型选择,人员需求,保证和项目开发协调一致,保证测试工作顺利进行。

    06.您认为做好测试计划工作的关键是什么?
    了解项目或系统的业务需求
    和项目经理协调好,了解项目的进度计划安排情况

    07.您所熟悉的测试用例设计方法都有哪些?请分别以具体的例子来说明这些方法在测试用例设计工作中的应用。
    边界值/等价类/业务流程图分析和状态转换分析/业务逻辑分析

    08.您认为做好测试用例设计工作的关键是什么?
    对业务和软件需求非常清楚,可以根据需求不同选择不同的测试用例设计

    09.您以往的工作中是否曾开展过测试用例的评审工作?如果有,请描述测试用例评审的过程和评审的内容。
    评审计划->预审->评审;
    评审内容主要是测试用例对软件需求的覆盖程度,对于相关边界是否考虑,是否针对复杂流程准备多套测试数据,是否有专门针对非功能性需求的测试。

    10.您以往是否曾经从事过性能测试工作?如果有,请尽可能的详细描述您以往的性能测试工作的完整过程。
    制订计划->选择测试功能->选择测试工具->录制脚本->运行测试->分析结果

    11.您在从事性能测试工作时,是否使用过一些测试工具?如果有,请试述该工具的工作原理,并以一个具体的工作中的例子描述该工具是如何在实际工作中应用的。
    微软WAS,LoadRunner

    12.您认为性能测试工作的目的是什么?做好性能测试工作的关键是什么?
    关键是测试脚本的录制,测试时候测试环境的干净。

    13.在您以往的工作中,一条软件缺陷(或者叫Bug)记录都包含了哪些内容?如何提交高质量的软件缺陷(Bug)记录?
    缺陷名词/描述/缺陷等级/严重程度/发现模块/发现步骤和过程/是否可以重现

    14.您以往所从事的软件测试工作中,是否使用了一些工具来进行软件缺陷(Bug)的管理?如果有,请结合该工具描述软件缺陷(Bug)跟踪管理的流程。
    CQ,也可以使用BugFree等免费工具。

    15.您如何看待软件过程改进?在您曾经工作过的企业中,是否有一些需要改进的东西呢?您期望的理想的测试人员的工作环境是怎样的?
    将先进的经验或思想固化到过程中,通过过程改进和能力提高来改进软件质量。

  • |SQL常用命令使用方法:|

    2008-06-20 15:28:52

    |SQL常用命令使用方法:|

    获取服务器当前时间:Select  GETDATE()  

    (1) 数据记录筛选:

    sql="select * from 数据表 where 字段名=字段值 order by 字段名 [desc]"

    sql="select * from 数据表 where 字段名 like '%字段值%' order by 字段名 [desc]"

    sql="select top 10 * from 数据表 where 字段名 order by 字段名 [desc]"

    sql="select * from 数据表 where 字段名 in ('1','2','3')"

    sql="select * from 数据表 where 字段名 between 1 and 2"

    (2) 更新数据记录:

    sql="update 数据表 set 字段名=字段值 where 条件表达式"

    sql="update 数据表 set 字段1=1,字段2=2 …… 字段n=n where 条件表达式"

    (3) 删除数据记录:

    sql="delete from 数据表 where 条件表达式"

    sql="delete from 数据表" (将数据表所有记录删除)

    (4) 添加数据记录:

    2insert语句:1)带字段名2)不带字段名(即针对所有的字段,并进行赋值,值不确定为null

    sql="insert into 数据表 (字段1,字段2,字段3 …) values (1,2,3 …)"

    也可以不写上字段名:

    sql=”insert into 包装 values('009','恐龙',2.3,null,null)”//前提:列名或所提供值的数目与表定义必须匹配

    sql="insert into 目标数据表 select * from 源数据表" (把源数据表的记录添加到目标数据表)   //前提:列名或所提供值的数目与表定义必须匹配

    (5) 数据记录统计函数:

    AVG(字段名) 得出一个表格栏平均值

    COUNT(*¦字段名) 对数据行数的统计或对某一栏有值的数据行数统计

    MAX(字段名) 取得一个表格栏最大的值

    MIN(字段名) 取得一个表格栏最小的值

    SUM(字段名) 把数据栏的值相加

    引用以上函数的方法:

    sql="select sum(字段名) as 别名 from 数据表 where 条件表达式"

    set rs=conn.excute(sql)

    rs("别名") 获取统的计值,其它函数运用同上。

    (5) 数据表的建立和删除:

    CREATE TABLE 数据表名称(字段1 类型1(长度),字段2 类型2(长度) …… )

    例:CREATE TABLE tab01(name varchar(50),datetime default now())

    DROP TABLE 数据表名称 (永久性删除一个数据表)

    //字段类型  char:数字,用于ID,较短的名称如州,邮编,电话等char(3)

                Varchar:字符,用于文字等,varchar(20)||varchar(20) null

                Money:价格,money|money null可允许为空||money not null不允许为空

                Image:照片,image null

                Int:年份,销售数量,int

                Smallint:月份,samllint

                Datetime:日期,datetime||datetime null


  • SQL查询语句精华使用简要

    2008-06-19 12:51:58

    一、 简单查询

      简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等。
      例如,下面的语句查询testtable表中姓名为"张三"的nickname字段和email字段。

       SELECT nickname,email
      FROM testtable
      WHERE name='张三'

      (一) 选择列表

      选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。

      1、选择所有列

      例如,下面语句显示testtable表中所有列的数据:

       SELECT *
      FROM testtable

      2、选择部分列并指定它们的显示次序

      查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。
      例如:

       SELECT nickname,email
      FROM testtable

      3、更改列标题

      在选择列表中,可重新指定列标题。定义格式为:
      列标题=列名
      列名 列标题
      如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题:

       SELECT 昵称=nickname,电子邮件=email
      FROM testtable

      4、删除重复行

      SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。

      5、限制返回的行数

      使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是表示一百分数,指定返回的行数等于总行数的百分之几。
      例如:

       SELECT TOP 2 *
      FROM testtable
      SELECT TOP 20 PERCENT *
      FROM testtable

        (二) FROM子句

      FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。
      在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定:

       SELECT username,citytable.cityid
      FROM usertable,citytable
      WHERE usertable.cityid=citytable.cityid

      在FROM子句中可用以下两种格式为表或视图指定别名:
      表名 as 别名
      表名 别名
      例如上面语句可用表的别名格式表示为:

       SELECT username,b.cityid
      FROM usertable a,citytable b
      WHERE a.cityid=b.cityid

      SELECT不仅能从表或视图中检索数据,它还能够从其它查询语句所返回的结果集合中查询数据。

      例如:

        SELECT a.au_fname+a.au_lname
      FROM authors a,titleauthor ta
      (SELECT title_id,title
      FROM titles
      WHERE ytd_sales>10000
      ) AS t
      WHERE a.au_id=ta.au_id
      AND ta.title_id=t.title_id

      此例中,将SELECT返回的结果集合给予一别名t,然后再从中检索数据。

      (三) 使用WHERE子句设置查询条件

      WHERE子句设置查询条件,过滤掉不需要的数据行。例如下面语句查询年龄大于20的数据:

       SELECT *
      FROM usertable
      WHERE age>20

      WHERE子句可包括各种条件运算符:
      比较运算符(大小比较):>、>=、=、<、<=、<>、!>、!<
      范围运算符(表达式值是否在指定的范围):BETWEEN...AND...
      NOT BETWEEN...AND...
      列表运算符(判断表达式是否为列表中的指定项):IN (项1,项2......)
      NOT IN (项1,项2......)
      模式匹配符(判断值是否与指定的字符通配格式相符):LIKE、NOT LIKE
      空值判断符(判断表达式是否为空):IS NULL、NOT IS NULL
      逻辑运算符(用于多条件的逻辑连接):NOT、AND、OR

      1、范围运算符例:age BETWEEN 10 AND 30相当于age>=10 AND age<=30
      2、列表运算符例:country IN ('Germany','China')
      3、模式匹配符例:常用于模糊查找,它判断列值是否与指定的字符串格式相匹配。可用于char、varchar、text、ntext、datetime和smalldatetime等类型查询。
      可使用以下通配字符:
      百分号%:可匹配任意类型和长度的字符,如果是中文,请使用两个百分号即%%。
      下划线_:匹配单个任意字符,它常用来限制表达式的字符长度。
      方括号[]:指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。[^]:其取值也[] 相同,但它要求所匹配对象为指定字符以外的任一个字符。
      例如:
      限制以Publishing结尾,使用LIKE '%Publishing'
      限制以A开头:LIKE '[A]%'
      限制以A开头外:LIKE '[^A]%'

      4、空值判断符例WHERE age IS NULL

      5、逻辑运算符:优先级为NOT、AND、OR

      (四)查询结果排序

      使用ORDER BY子句对查询返回的结果按一列或多列排序。ORDER BY子句的语法格式为:
      ORDER BY {column_name [ASC|DESC]} [,...n]
      其中ASC表示升序,为默认值,DESC为降序。ORDER BY不能按ntext、text和image数据类型进行排
      序。
      例如:

        SELECT *
      FROM usertable
      ORDER BY age desc,userid ASC

      另外,可以根据表达式进行排序。

      二、 联合查询

      UNION运算符可以将两个或两个以上上SELECT语句的查询结果集合合并成一个结果集合显示,即执行联合查询。UNION的语法格式为:

        select_statement
      UNION [ALL] selectstatement
      [UNION [ALL] selectstatement][...n]

      其中selectstatement为待联合的SELECT查询语句。

      ALL选项表示将所有行合并到结果集合中。不指定该项时,被联合查询结果集合中的重复行将只保留一行。

      联合查询时,查询结果的列标题为第一个查询语句的列标题。因此,要定义列标题必须在第一个查询语句中定义。要对联合查询结果排序时,也必须使用第一查询语句中的列名、列标题或者列序号。

      在使用UNION 运算符时,应保证每个联合查询语句的选择列表中有相同数量的表达式,并且每个查询选择表达式应具有相同的数据类型,或是可以自动将它们转换为相同的数据类型。在自动转换时,对于数值类型,系统将低精度的数据类型转换为高精度的数据类型。

      在包括多个查询的UNION语句中,其执行顺序是自左至右,使用括号可以改变这一执行顺序。例如:

      查询1 UNION (查询2 UNION 查询3)

      三、连接查询

      通过连接运算符可以实现多个表查询。连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志。

      在关系数据库管理系统中,表建立时各数据之间的关系不必确定,常把一个实体的所有信息存放在一个表中。当检索数据时,通过连接操作查询出存放在多个表中的不同实体的信息。连接操作给用户带来很大的灵活性,他们可以在任何时候增加新的数据类型。为不同实体创建新的表,尔后通过连接进行查询。

      连接可以在SELECT 语句的FROM子句或WHERE子句中建立,似是而非在FROM子句中指出连接时有助于将连接操作与WHERE子句中的搜索条件区分开来。所以,在Transact-SQL中推荐使用这种方法。

      SQL-92标准所定义的FROM子句的连接语法格式为:

       FROM join_table join_type join_table
      [ON (join_condition)]

      其中join_table指出参与连接操作的表名,连接可以对同一个表操作,也可以对多表操作,对同一个表操作的连接又称做自连接。

      join_type 指出连接类型,可分为三种:内连接、外连接和交叉连接。内连接(INNER JOIN)使用比较运算符进行表间某(些)列数据的比较操作,并列出这些表中与连接条件相匹配的数据行。根据所使用的比较方式不同,内连接又分为等值连接、自然连接和不等连接三种。外连接分为左外连接(LEFT OUTER JOIN或LEFT JOIN)、右外连接(RIGHT OUTER JOIN或RIGHT JOIN)和全外连接(FULL OUTER JOIN或FULL JOIN)三种。与内连接不同的是,外连接不只列出与连接条件相匹配的行,而是列出左表(左外连接时)、右表(右外连接时)或两个表(全外连接时)中所有符合搜索条件的数据行。

      交叉连接(CROSS JOIN)没有WHERE 子句,它返回连接表中所有数据行的笛卡尔积,其结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。

      连接操作中的ON (join_condition) 子句指出连接条件,它由被连接表中的列和比较运算符、逻辑运算符等构成。

      无论哪种连接都不能对text、ntext和image数据类型列进行直接连接,但可以对这三种列进行间接连接。例如:

       SELECT p1.pub_id,p2.pub_id,p1.pr_info
      FROM pub_info AS p1 INNER JOIN pub_info AS p2
      ON DATALENGTH(p1.pr_info)=DATALENGTH(p2.pr_info)

      (一)内连接
      内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值。内连接分三种:
      1、等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列。
      2、不等连接: 在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值。这些运算符包括>、>=、<=、<、!>、!<和<>。
      3、自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。
      例,下面使用等值连接列出authors和publishers表中位于同一城市的作者和出版社:

       SELECT *
      FROM authors AS a INNER JOIN publishers AS p
      ON a.city=p.city
      又如使用自然连接,在选择列表中删除authors 和publishers 表中重复列(city和state):
      SELECT a.*,p.pub_id,p.pub_name,p.country
      FROM authors AS a INNER JOIN publishers AS p
      ON a.city=p.city

      (二)外连接
      内连接时,返回查询结果集合中的仅是符合查询条件( WHERE 搜索条件或 HAVING 条件)和连接条件的行。而采用外连接时,它返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表(左外连接时)、右表(右外连接时)或两个边接表(全外连接)中的所有数据行。如下面使用左外连接将论坛内容和作者信息连接起来:

       SELECT a.*,b.* FROM luntan LEFT JOIN usertable as b
      ON a.username=b.username

      下面使用全外连接将city表中的所有作者以及user表中的所有作者,以及他们所在的城市:

        SELECT a.*,b.*
      FROM city as a FULL OUTER JOIN user as b
      ON a.username=b.username

      (三)交叉连接
      交叉连接不带WHERE 子句,它返回被连接的两个表所有数据行的笛卡尔积,返回到结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。例,titles表中有6类图书,而publishers表中有8家出版社,则下列交叉连接检索到的记录数将等于6*8=48行。
       SELECT type,pub_name
      FROM titles CROSS JOIN publishers
      ORDER BY type

数据统计

  • 访问量: 5164
  • 日志数: 12
  • 建立时间: 2008-05-16
  • 更新时间: 2009-04-14

RSS订阅

Open Toolbar