日历
| |||||||||
| 日 | 一 | 二 | 三 | 四 | 五 | 六 | |||
| 1 | 2 | 3 | 4 | ||||||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 | |||
| 12 | 13 | 14 | 15 | 16 | 17 | 18 | |||
| 19 | 20 | 21 | 22 | 23 | 24 | 25 | |||
| 26 | 27 | 28 | 29 | 30 | 31 | ||||
存档
搜索标题
统计信息
- 访问量: 1859
- 日志数: 23
- 建立时间: 2007-09-24
- 更新时间: 2008-09-13
我的最新日志
-
创建MS-SQL类型的TD工程:实验及结论
2008-9-13
创建MS-SQL类型的TD工程:实验及结论2008年04月26日 下午 10:55【摘要】TestDirector是美国MI公司推出的一款功能强大的测试管理工具,在软件测试行业得到了广泛的使用。不少朋友在使用TestDirector的过程中,也遇到了一些问题。除了广遭诟病的RPC错误外,另外一个问的比较多的问题就是“为什么不能成功创建MS-SQL类型的工程?”。
关于第二个问题,在两个比较热门的测试交流网站,“测试时代(www.testage.net)”和“51Testing软件测试网(www.51testing.com)”的测试论坛上讨论了不少的解决思路。在这里,我将以实验的方式给出一个经得起实践检验的简易的操作方法。限于篇幅关系,实验的过程已经经过技术上的简化处理。
【关键词】TestDirector 数据库 MS-SQL
- 前言
在开始本实验之前,必须明确一个基本要求,即:欲创建MS-SQL类型的工程,必先创建有效的MS SQL Server数据库服务(DB Server)。因此讨论的焦点将转到如何创建有效的DB Server上。作者假设您已经对在TestDirector后台创建DB Server和Project基本操作很熟悉。
本次实验将解答三个方面的疑问:
- 创建DB Server必须要在TestDirector服务器上安装配置SQL Server客户端吗?
- DB Server必须与TestDirector部署在同一台服务器上吗?
- 如何配置SQL Server客户端参数?配置SQL Server客户端有什么用处?
- 实验环境
本次实验使用了局域网内三台台式机,机器配置属性如下表:
机器名
IP地址
硬件信息
软件信息
备注
TDServer
192.168.0.1
PIV2.4G/512M/60G
Win2KSer
TestDirector7.6EN
TD服务器
TestServer
192.168.0.2
PIV2.4G/256M/60G
Win2KPro
SQL Server2K开发版,实例名默认
数据库服务器1
DevServer
192.168.0.3
PIV2.4G/256M/60G
WinXP
SQL Server2K开发版,实例名Dev
数据库服务器2
表1 实验环境信息
说明:上述环境中所提到的SQL Server2K,是以默认方式安装了客户端和服务器端,身份验证方式为“混合方式”,sa的口令均为sa。关于TestDirector7.6企业版和SQL Server2000开发版的安装过程,此处略去。
疑问1:创建DB Server必须要在TestDirector服务器上安装和配置SQL Server客户端吗?
为了解答心中的疑问,我在安装TestDirector了的机器上未安装SQL Server2000开发版。
这次我们选择TestServer作为DB Server。
打开浏览器,输入http://tdserver/tdbin/SiteAdmin.htm,回车,输入口令后进入到TestDirector的后台。选择DB Server页。点击New 按钮,添加一个新的DB Server。如图1:
图1
Ping一下,OK,通了!将上面的Server Alias 改为192.168.0.2,效果一样。
一般来说,只要这里所建的DB Server可以ping通的话,那么创建MS-SQL类型的Project是没问题的。真的是这样吗?让我们来试一下。
选择Projects页,点击Creat按钮,打开“Creat Project”对话框,输入如下信息:
图2
点击Next按钮,服务名字选择TestServer:
图3
点击Next按钮,按照提示操作,成功创建了MS-SQL类型的TD工程FromTestServer。
结论1:只要网内其他机器上安装了SQL Server2000服务程序,就能成功创建MS-SQL类型的DB Server,进而可成功创建MS-SQL类型的Project。也就是说,TestDirector服务器上不需要安装配置SQL Server客户端。
结论2:TestDirector服务不必与DB Server部署到同一台机器上(回答了前面所提到的第二个疑问)。
实验进行到此,有人可能会问,同样的,可以用DevServer创建有效的MS-SQL类型的DB Server吗?
让我们来试一下,看是不是如我们所想。
如前所述,添加一个新的DB Server,如图4:
图4
Ping一下——咦,奇怪哎,怎么ping不通了?!
让我们来看一看这个SQL Server与上一个SQL Server有什么不一样(参见“表1 实验环境信息”)。噢,这个SQL Server的实例名不是默认的,而是安装时指定的!那么在创建DB Server的时候,服务别名(Server Alias)应该输入什么呢?
经过多次实验,这里的服务别名应该为“DevServer\Dev”,即:服务器名\实例名。
服务别名输入“DevServer\Dev”,可以ping通。至此,使用带实例名的SQL Server成功创建DB Server。
我们还有最后一个疑问:如何配置SQL Server客户端参数?配置SQL Server客户端有什么用处呢?
对于这个问题,也是大家争论最多的地方。有的人按照TestDirector的安装手册中的说明,成功创建了MS-SQL类型的Project;有的人使用同样的配置参数,却失败了。为什么呢?
我们先来看一看TestDirector的安装手册中是如何说明的:
首先要在TestDierctor服务器上安装SQL Server客户端程序(废话#%£);
其次,配置客户端参数:
To configure the Microsoft SQL Server 2000 client:
- Choose Start > Programs > Microsoft SQL Server > Client Network Utility. The Server Client Network Utility dialog box opens.
- Click the Alias tab.
- Click Add. The Add Network Library Configuration dialog box opens.
- In the Server alias box, type TDSQLSERVER.
- In the File Name box, type the protocol name, as configured in the Microsoft SQL Server. For example: Named Pipes.
- In the Parameters box, type the Microsoft SQL Server name.
- Click OK to close the Add Network Library Configuration dialog box.
- Click OK.
按照上面的提示,我在TD服务器上安装了SQL Server客户端,但并没有成功创建DB Server。经过多次分析和实验,我仍没有找到问题的答案(怀疑有人成功只是碰巧满足了某些条件——有运气的成分,嘻嘻),但找到了有效的解决方案。
主要过程如下:
第一步、在TDServer上安装SQL Server客户端程序;
第二步、打开客户端工具,点击Alias页,如图5:
图5
第三步、点击Add按钮,并选择“TCP/IP”;
这里又要分两种情况:
- 对于未指定SQL Server实例名的机器TestServer,配置参数如下:
图6
- 对于指定了SQL Server实例名的机器DevServer,配置参数如下:
图7
第四步、进入TestDirector的后台管理,新建2个DB Server,服务别名分别为上面的“Test”和“Development”,成功创建DB Server。继而使用相应的DB Server成功创建了MS-SQL类型的Project。
呵呵,结论出来了(好像仓促了点):
结论3:对于未指定实例名的SQL Server服务器,在配置TD服务器上的SQL客户端参数时,“Server name”输入SQL Server服务器的机器名或IP即可。
结论4:对于指定了实例名的SQL Server服务器,在配置TD服务器上的SQL客户端参数时,“Server name”输入SQL Server服务器的“机器名(或IP)\实例名”。
结论5:在TestDirector服务器上配置不同的SQL客户端参数,可以帮助TD管理员区分不同的DB Server,例如测试部门可能会有专用的数据服务器,开发部门也希望用自己专用的数据服务器,那么在SQL客户端指定容易识别的服务别名就显示出其好处了:TD管理员在创建MS-SQL类型工程的时候,就可以在根据需要选择使用测试部门的数据服务器或者开发部门的数据服务器。
- 操作建议
本文不准备就“如何创建MS-SQL类型的TD工程”给出什么所谓的“最佳实践”,作者只想给那些急于解决类似问题的TD使用者提供一个思路。作者给出如下一些操作建议:
- 尽量将TestDirector服务和SQL Server数据库服务部署在同一台机器上;
-
整合测试与质量的关系,建设高效测试团队
2008-9-10
整合测试与质量的关系,建设高效测试团队
(沈雪芳、谢敏、戴金龙)
本文版权归计算机世界,著作权归作者所有。任何转载和大幅引用,请务必征得作者同意。
1 整合测试与质量的关系
在目前的软件行业氛围下,一提到软件质量,肯定有不少业内人士的第一反应是ISO、CMM、6σ之类的标准,进而反应出的词汇就是SQA [Software Quality Assurance(软件质量保证)]。在这样的氛围下,不少软件企业和机构都纷纷组建了自己SQA部门,并把提高质量的希望全部都寄托在SQA身上。这当然是好事,至少说明了质量意识的普遍觉醒;但要高层管理者清醒认识到“质量工作是由多个部门各司其职共同完成的”这似乎就很困难了。
这样的大环境造成不少企业和机构的软件质量保证部门与软件测试部门关系尴尬:究竟是让测试部门下属于质量保证部门,还是应该单列测试部门使其以独立、中立的姿态出现?另外,测试部门与质量保证部门的权力和职责分配如何把握,谁更有权在必要的时候对某个开发项目、某个开发人员出示“红牌”、“黄牌”,谁更应该对用户投诉的产品技术问题负更多不可推卸的责任?这表面看来是个权力之争,实质上反映出的是人们对于质量的认识存在着误区。为此,笔者打算从源头上来理顺这些关系。
质量,产品的内在品质;对于软件产品而言,质量还应包括软件过程的品质。那么,如何判断某软件产品是否是高质量的?目前广泛认可的标准是“软件产品能否较好地满足用户相关的各类需求”。然而,用户对软件的需求的往往包罗万象:如功能需求、性能需求、约束性需求、潜在需求、甚至包括相互冲突的需求以及技术上不可实现的需求等等,这就导致等软件产品生产出来再验证“产品是否满足用户需求” 容易成为一件引发供需双方争执的麻烦事,而且对于软件企业而言这种质量工作未免代价过高、风险太大,一旦查出严重问题,毫无补救措施。鉴于此,有必要进一步细化、具体化这项工作,并尽可能早地把这项工作融入到具体工程实践中来。目前业内解决这个问题的核心策略是控制软件工程的品质以及软件产品(包括中间产品)本身的品质。前者主要涉及企业在工程过程中选用什么样的质量体系以及如何监督标准的执行,后者主要涉及验证产品在各个阶段具体品质如何、有无偏离用户需求等等。或者更专业一些,前者称为SQA,后者称为SQC。(关于SQA以及SQC更清晰、规范的定义可以参考相应的标准化文件。本文考虑到通俗性暂略。)由此,我们可以看出,SQA、SQC这二者都是质量工作的范畴,甚至在某种意义上后者更贴近于质量工作本来的要义。那么,软件测试在软件质量工作中处应于一个什么样的位置呢?笔者认为软件测试应是SQC的核心内容和重要组成部分。缺少了软件测试,SQC余下的工作就成为无魂之躯,所谓“皮之不存,毛将焉附”。由此看来,目前沸沸扬扬、闪亮登场的CMM、6σ等等标准和体系,虽然被部分管理者顶礼膜拜,但充其量也只是SQA的一个组成部分,它们不能囊括质量工作的全部。相反,软件测试是SQC的核心,它更贴近质量工作本来的要义,理应受到更多的关注。
如果把软件质量工作范畴的全部外延定义为软件质量管理(SQM),那么,它天然具有两个基本要义,即软件质量保证(SQA)和软件质量控制(SQC)。SQA和SQC各司其职,相辅相成,统一于软件质量管理(SQM)。拿一部汽车来做比喻吧,质量控制(QC)就是所有那些告诉你汽车当前运动状态的仪器仪表;质量保证(QA),包括各类标准,是告诉你所有部件工作原理的用户手册;而质量管理(QM)则是你要追求的目标,比如你希望能平安、高速地驾驶汽车。可以看出,为了实现质量管理(QM)的目标,质量保证(QA)和质量控制(QC)都是不可或缺的部分。
2 建设高效测试团队
既然测试工作是这么的重要,那么我们怎么来做好这件事情呢?俗话说“工欲善其事,必先利其器”。我们在具体深入实施测试技术之前,首先需要建立并维护一个高效的测试团队。在一个企业或机构内部,如果没有一个稳定的测试团队,要想测试活动不流于形式也难。然而即使是这么一个浅显的道理也并不是广为管理层所接受的。为数不少小型软件企业将测试作为产品面临发布时的一个小“插曲”,往往临时抽调几名程序员对产品的功能粗略测试一下即交付客户(甚至在进度和成本不足时首先砍掉这一块)。这种仓促完成的产品通常质量问题很多,企业的信誉度自然也很难上得去。他们进行着这样的“怪圈”循环:年复一年做着小项目,周而复始地做着这类有名无实的“软件测试”。企业效益却不见稳步增长,甚至在严峻的市场竞争中一蹶不振。为了规避这种情况的发生,我们首先应抛弃小企业惯常的思维模式,不计较一时一地之利益,立足长远,着手组建高效测试团队。
2.1招募测试人员
人是测试工作中最有价值也是最重要的资源,没有一个合格的、积极的测试小组,测试就不可能实现。然而,在软件开发产业中有一种非常普遍习惯,那就是让那些经验最少的新手、没有效率的开发者或不适合干其他工作的人去做测试工作。这绝对是一种目光短浅的行为,对一个系统进行有效的测试所需要的技能绝对不比进行软件开发需要的少,事实上,测试者将从职业生涯中获得极其广泛的经验,他们将遇到许多开发者不可能遇到的问题。特别地,测试团队负责人应该尽量谨慎地把其他团队淘汰的人吸收到测试团队中。一般,这类成员给整个团队带来负反馈。当然,有些没有在其他团队中做出成绩的人在测试团队中做出很大成绩,但是这样的人总是个别,并不多见。
那么,测试团队需要招募什么样的成员呢?这里,笔者总结了以下几点:
首先,测试人员最好能具有如下部分品质:沟通能力、移情能力、自信心、外交能力、迁移能力以及怀疑精神。
沟通能力:一名理想的测试者必须能够同测试涉及到的所有人进行沟通,具有与技术(开发者)和非技术人员(客户,管理人员)的进行交流的能力。
移情能力:和系统开发有关的所有人员都处在一种既关心又担心的状态之中。用户担心将来使用一个不符合自己要求的系统,开发者则担心由于系统要求不正确而使他不得不重新开发整个系统,管理部门则担心这个系统突然崩溃而使它的声誉受损。测试者必须和每一类人打交道,因此需要测试小组的成员对他们每个人都具有足够的理解和同情,将测试人员与相关人员之间的冲突和对抗减少到最低程度。
自信心: 开发者指责测试者测试结果有误甚至反唇相讥是常有的事,测试者必须对自己的劳动成果有足够的自信心。如果对开发者的言语太过刻意的话,就不能完成什么更多的事情了。
外交能力:机智老练的外交手法有助于维护企业内部人与人之间的关系,测试者在告诉开发者他的软件有错误时,也同样需要一定的外交手腕。如果采取的方法过于强硬或过于软弱,都会让测试工作的意义受损。
迁移能力:一个理想的测试者应该有能力将以前曾经遇到过的类似的错误从记忆深处挖掘出来,并迁移到当前测试活动中。这一能力在测试过程中的价值是无法衡量的。因为许多新出现的问题和我们已经发现的问题相差无几。
怀疑精神:对任何可能出错的地方都亲自测试一番。不听信开发人员毫无意义的保证。坚持以事实说法的工作作风。
需要说明的是并不是测试人员需要具备以上列出的全部品质。笔者认为,能具备两到三项就很不错了。人无完人,关键是用其所长,避其所短。测试团队应该造就这样的氛围,测试组成员应自发地相互学习,相互交流,日积月累达到相互提高的境界。
其次,测试组成员应具备良好的技术能力或技术学习能力。由于测试组各个岗位需要的技能各有差异,所要掌握的测试技术也就千差万别。比如测试管理人员需要对测试管理工作的内容及相关辅助工具的使用胸有成竹;自动化测试人员需要对相关自动化测试工具炉火纯青;测试脚本撰写人员需要对脚本语言的领悟了然于胸;手工测试人员应对相关测试中最易发现问题的地方如数家珍;而测试团队负责人则必须既熟悉被测软件系统的概念模型、设计模型又要掌握开发过程中涉及到的相关开发工具,除此之外,测试经理还必须深度掌握测试流程的裁剪、测试计划的撰写、测试活动的组织与开展以及测试效果的评价等等必备的技能。
当然,新招募的测试人员不可能像上面说的那么理想。关键是他们是否热爱测试这项工作,对相关的工作内容是否感兴趣以及他们的学习能力如何。俗话说:“天才的第一声啼哭和白痴没有两样。”怎么做一个好的伯乐,发现卧槽的千里马,是一门很深的学问和艺术。
2.2 测试团队制度建设
创建测试团队的第二步,就是搭建测试团队的制度。一个运作良好的部门,需要有完备的制度支撑。俗话说“没有规矩,不成方圆。”制度的建设可以规范测试团队的工作开展,以形成一个共同的工作目标。一颗好的树苗,如果没有外界的干涉、约束、引导,任其发展,可能长到后面树干都歪了。一个测试团队如果没有良好的制度约束,很有可能导致人心涣散,滋长负面的风气,团队成员情绪消极。测试团队制度的制定,需要团队成员的共同讨论,而不是测试团队负责人自己决定。测试团队的制度,可以考虑以下几个方面:
n 汇报制度 团队成员汇报本周工作情况及下周工作计划、遇到的问题以及需要提供的帮助,培养团队成员的汇报及计划习惯。
n 工作总结制度 成员每个阶段汇报上阶段工作经验和教训,并在部门例会上交流、分享经验及教训,避免同样的问题重复出现。
n 奖惩制度 对于贡献突出的成员予以奖励,对于业绩差的提出批评,有效的保持测试团队的工作热情。
n 测试件审核制度 对测试件进行审核,去粗存精,鼓励使用和提出改进,保证提交客户及公司领导的测试件质量。
n 会议制度 定期召开部门例会,讨论、解决工作中的问题,并提供部门内的学习平台。
制度的制定要体现公正客观的精神,同时要尽量做到人性化,务求实效,以正面鼓励为主,并且制度应该是可执行的。在制度执行过程中出现问题时,团队负责人要主动检讨,分析问题,主动承担责任。这样方能凝聚人心,使测试团队负责人具有领导魅力、感召力及威信。
关于成员业绩的考评,目前,已有不少软件企业推行给测试人员定级别的制度。对优秀的成员给予提升加薪的机会,对无所作为的成员不予以提升,对长期以来能力上不能胜任的或习惯性无视团队制度的予以降级或淘汰。这无疑是一个好的做法,但成员业绩的具体考评办法,建议尽量做到公正客观。切忌主观好恶导致的毫无理由的级别升迁。
2.3 测试团队的分工
创建测试团队的第三步,就是进行测试团队的分工,明确工作职责。优秀的员工就像大雁,高效的测试团队好比雁群。
雁群是由多支有共同目标的大雁组成,在队伍中,它们有明确的分工,当队伍停下休息时,它们中有负责觅食﹑照顾年幼或老龄的大雁﹑有负责雁群安全警戒的大雁﹑有的大雁则安静休息﹑调整体力。在飞行过程中,它们大声嘶叫以相互鼓励,从而通过共同扇动翅膀来形成气流,使队伍快速前飞。在雁群中,有任何一只大雁受伤或生病而不能继续前飞,雁群中自动有两只大雁留下来守护照看受伤或生病的大雁,直至它恢复或死亡,然后它们再加入到新的队伍,继续南飞直至目的地,这就是我们所说的真正团队精神。
因此,职责要按照便于执行和操作的原则来设计,分工要根据岗位和人员的特点来安排,对不同能力的成员进行分工,以求最大程度的发挥成员的特长。否则,团队合作的基本前提就会变得十分薄弱,必将耗费过多的沟通和协调的精力,事倍功半。
另外,对职责的明确,可以避免其他团队成员滥用测试团队成员。有时别人不能善待测试员,或者让测试员做其他严重超出职责的事情。如果测试团队负责人发现测试员遇到这样的困难或受到这样的对待时,应该为员工提供精神支持,告诉员工如何应对这类问题,并解决各种不公正待遇。
n 测试团队的职责描述的例子如下:
u 系统测试组织 包括,项目测试组的组建、测试任务分配等。
u 进行测试计划/设计/开发/执行工作
u 建立测试体系,完善测试方法论 包括,测试体系的搭建,研究测试方法、测试理论,并对研究成果进行沉淀、推广。
u 研究和实施测试工具 包括,研究测试工具的使用,跟踪业界流行的测试工具,并尝试使用测试工具来提高测试效率。
u 项目组测试工作指导,记录改进意见
u 软件开发质量抽检与评定 包括,通过各种手段对各个里程碑的产品质量进行抽检,并对抽检结果进行分析、评价。
n 测试团队的分工及对应的职责例子如下:
角色
职责
测试管理员
n 负责测试项目的管理;
n 测试过程问题的处理与反馈;
n 测试组织/计划;(含性能测试)
n 测试过程状态报告。
测试设计员
n 描述测试需求,设计测试用例;
n 性能测试方案的设计;
n 测试环境搭建情况的检查;
n 测试脚本的审核。
测试执行员
n 根据需要开发测试脚本;
n 按照测试用例、测试脚本执行测试;
n 创建并维护测试工具环境;
n 项目测试工作指导。
测试监督与测量员
n 测试测量;
n 测试过程问题的汇总与反馈;
n 开发产品的质量抽检与评定。
2.4 测试工作的流程建设
创建测试团队的第四步,就是进行测试团队工作流程的建设。测试团队工作流程,包括:测试过程、日常工作流程、团队内培训流程、突发任务处理流程等。部门职责的明确,团队成员的分工,它们着眼于局部,而测试团队工作流程,则着眼于团队全局。团队的工作流程的每个环节之间既要紧密,又要能够便于执行。因为日常工作流程、团队内培训流程、突发任务处理流程相对测试过程来说较简单,故不赘述。
通常来说,测试过程可以包括以下几方面:
计划测试-〉设计测试-〉执行测试-〉分析测试
注:“计划测试”环节中,包含对测试需求的描述。
计划测试
设计测试
执行测试
分析测试
注:在“计划测试”环节中,包含对测试需求的描述。
我们可以通过以下步骤来建立测试过程。
1. 根据对公司现有测试状况的了解,及个人的测试经验,起草测试流程及相关的模板;
2. 通过一到二个项目的实践,记录测试流程草稿中的问题及不足之处;
3. 根据实施经验,完善测试测试流程,得到测试流程初稿,并起草相关的实施指南;
4. 根据一个项目的实践,记录此次实践过程中的问题;
5. 根据第二次实践记录,完善测试流程及相关的模板、指南、表格等
6. 发布测试过程(含测试流程、模板、表格、指南)第一个版本。
通过上述方式,可以在公司内初步建立测试过程,并在实践中不断改进、完善。对于测试工作比较完善的公司,可以引进测试外包的机制。该测试外包,指测试团队独立于项目组运作,项目组将测试任务外包给测试团队进行。这样做的目的,可以充分发挥测试成员的技能、业务优势,并可对测试成员进行复用。因为在一般公司中,测试团队成员的工作任务很多,工作压力很大,如果每个项目都投入2个测试成员,一个6人的测试团队,最多就只能同时进行3个测试项目。而如果进行测试外包,那么可以根据项目测试工作量、进度要求、测试内容要求,对人员进行合理分配,可最大限度的对测试人员进行复用。
2.5 团队成员的能力提升
创建测试团队的第五步,就是提高员工的能力。有了明确、合理的分工后,需要针对这些分工对团队成员进行有意识的指引,提升团队成员的技能。测试团队负责人需要负起提高员工能力的责任。只有一个懂得不断充实自我、提高自我能力的学习型团队,才能在发展的社会创造出更多的“奇迹”。因此,高效的测试团队,要不断学习,提高团队成员自身的能力,从而提高测试团队整体的能力。
测试团队成员能力的提高,包括三方面:
1 积累测试人员的专业领域知识,提高业务能力
随着测试人员对制约产品设计的外部因素、用户如何使用(或将使用)类似产品、什么样的问题对他们很重要、竞争对手如何解决这些问题、这个行业的背景、这个行业的业务包括什么等了解的更多,他们工作的有效性会显著提高。
可以通过以下方式来积累测试人员真正的专业领域知识,提高他们的业务能力:
u 阅读该行业的杂志和书籍
u 与公司该行业的业务分析员都交流,尝试从业务的角度去看待系统
u 在客户现场工作。比如,可以参加客户的验收测试、参与对客户进行的培训等。
u 每周利用几小时的时间,解答公司客户提出的问题。通过这种办法,测试人员最终能够熟练解答问题,并且获得很多的信息,如客户的使用习惯等。
2 积累测试人员相关技术方面的专业知识,提高专业能力
由于技术不断变化,各种不同系统框架的流行,各平台间的交互越来越多。测试牵涉到的方方面面技术越来越多。系统软件与产品变得越来越复杂,为了能够适应这种变化,测试人员需要提高自身的技术技能,以便能够跟上技术更新的步伐。
3 综合能力提高
测试人员不仅仅需要提高自身的测试技能,掌握测试工具、开发工具、测试方法等,测试人员还需要提高自身各个方面的能力。例如对个人的管理能力、自我控制能力、沟通能力、协调能力、演讲能力、口头表达和文字表达能力。在这些能力中,写作能力尤为重要。测试人员的工作在很大程度上要撰写报告等以劝说他们做事情。报告写的越好,报告产生的作用越大。测试产生的效用就越大。
2.6 测试团队的文化建设
创建测试团队的第六步,就是建设测试团队的文化。俗话说:态度决定人生的成功高度,而团队文化就像是个人的“态度”,它决定了团队效力是否1+1>2。如果测试团队没有一个很好的团队文化,测试团队内部必然会产生内耗,团队整体上成为一盘散沙。
世界上最伟大的橄榄球教练文斯·隆巴迪在谈起成功球队的特征时说:从基础教起,每个队员职责明确、球艺高超;懂得与别人配合,从整体出发打球,决不能出个人风头,违反纪律;全队拧成一股绳,相互关心,相互热爱,恪尽职守。这就是成功的团队文化。它具备了以下特征:目标明确、职责清晰、团结协作、密切配合、相互关心、有共同的价值观。
测试团队文化建设可以借鉴隆巴迪的经验,首先明确共同的目标。例如,在两年内,测试团队能够对外输出测试服务,成为公司的一个业务部门;或者保证本单位的产品质量能将客户满意度提升到一个档次;或者更具体些,将产品的错误、缺陷控制在某个水平上。其次,团队内部还要建立一个良好的沟通渠道与反馈机制。事实证明,顺畅、平等的沟通能及时规避团队内部的摩擦,收集到更好的测试建议和方案。再次,团队内不应有官僚作风存在,不搞小圈子。内部批评时尽量做到对事不对人;团队发生重大失误或错误时,团队负责人应主动承担责任,做自我检讨,不推脱责任。最后,测试团队内部应培养一定程度的友谊关系。适当开展一些集体活动:可以是每天一次短暂的下午茶(如Coffee Break),也可以是测试团队的一次户外远足或文娱活动等等。
以上我们讨论了测试团队的文化建设。文化是一种长期习惯的积淀。测试团队负责人需要首先清醒认识到测试团队需要哪些好的习惯,并且身体力行,持之以恒、潜移默化地将测试团队文化的精神传承给每位测试团队的成员,使得团队逐渐凝成一股强大的精神力量。
3 结论与总结
以上我们对如何理顺测试与质量的关系、如何建设高效的测试团队这两个问题做了一些初步的探讨,澄清了业内对软件测试的一些模糊认识。然而,创建并维护一个高效的测试团队是一项长期的、艰苦的工作。这项工作对企业机构而言,虽然短期效益并不明显,但它对提高产品质量、提升单位信誉、促进企业长足发展而言,绝对是很有意义的事情,它也是目前软件企业走向规模化经营的必经途径。在众多的中长期投资中,建设和培养一支高效的团队将成为企业最佳的投资之一。
-
BugFree学习笔记
2008-9-10
Bug 生命周期
新建的Bug处于Active状态,可以通过编辑指派给合适的解决者。解决Bug之后,Bug状态变为Resolved,并自动指派给创建者。创建者验证Bug。如果未修复,再重新激活,Bug状态重新变为Active;如果已经修复则可以关闭,Bug状态变为Closed,Bug生命周期结束。已经Closed的Bug如果重新复现,也可以直接激活。具体流程如下图所示。

Bug的7种解决方案
3种无效的Bug
By Design
设计需求就是这么设计的
Duplicate
这个问题别人已经发现
Not Repro
无法复现的问题
4中有效的Bug
Fixed
问题被修复
External
外部原因(比如浏览器、操作系统、其他第三方软件)造成的问题
Postponed
发现的太晚了,下一个版本讨论是否解决
Won’t Fix
是个问题,但是不值得修复
Bug 字段说明
Bug 标题:为包含关键词的简单问题摘要,要有利于其他人员进行搜索或通过标题快速了解问题
项目名/模块路径:指定问题出现在哪个项目的哪个模块。Bug处理过程中,需要随时根据需要修改项目或模块,方便跟踪。如果后台管理指定了模块负责人,选择模块时,会自动指派给负责人
指派给:Bug的当前处理人。如果不知道Bug的处理人,可以指派给Active,项目或模块负责人再重新分发、指派给具体人员。如果设定了邮件通知,被指派者会收到邮件通知。此外,状态为Closed的Bug,默认会指派给Closed,表示Bug生命周期的结束
抄送给:需要通知相关人员时填写,例如测试主管或者开发主管等。可以同时指派多个,人员之间用逗号分隔。如果设定了邮件通知,当Bug有任何更新时,被指派者会收到邮件通知
严重程度:Bug的严重程度。由Bug的创建者视情况来指定,其中1为最严重的问题,4为最小的问题。一般来讲,1级为系统崩溃或者数据丢失的问题;2级为主要功能的问题;3级为次要功能的问题;4级为细微的问题。
优先级:Bug处理的优先级。由Bug的处理人员按照当前业务需求、开发计划和资源状态指定,其中1的优先级最高,4的优先级最低。一般来讲,1级为需要立即解决的问题;2级为需要在指定时间内解决的问题;3级为项目开发计划内解决的问题;4级为资源充沛时解决的问题。
其余选项字段(Bug类型、如何发现、操作系统、浏览器):可以通过编辑Lang/ZH_CN_UTF-8/_COMMON.php来自定义创建Build:Bug是在哪个版本(Build或者Tag)被发现的
解决Build:Bug是在哪个版本(Build或者Tag)被解决的
解决方案:参考Bug的7中解决方案。如果解决方案为Duplicated,需要指定重复Bug的Bug编号。机器配置:测试运行的硬件环境,例如Dell G280 2G/200G
关键词:主要用于自定义标记,方便查询。关键词之间用逗号或者空格分隔。例如,对本地解决的Bug可以首先标记localfix,等真正提交新版本时,查询所有关键词包含localfix的bug,统一进行解决
相关 Bug:与当前Bug相关的Bug。例如,相同代码产生的不同问题,可以在相关Bug注明
上传附件:上传Bug的屏幕截图,Log日志或者Call Stack等,方便处理人员复现步骤:[步骤]要描述清晰,简明扼要,步骤数尽可能少;[结果]说明Bug产生的错误结果;[期望]说明正确的结果。可以在[备注]提供一些辅助性的信息,例如,这个bug在上个版本是否也能复现,方便处理人员
http://www.bugfree.org.cn/help/#_Toc201666191 使用帮助
http://www.51testing.com/batch.viewlink.php?itemid=3562 图解BugFree简单应用
做为开源软件,需要设置特定权限可以自己开发
-
8月末工作总结(阿里软件平台接入测试)
2008-8-28
本月重点测试SAAS在阿里软件平台的业务。比较麻烦,有很多接口程序需要测试。
(1)接口环境配置。
需入软件的接口地址,在阿里平台测试:测试无法显示此页。
查原因1:发现域名没有解析
域名成功解析后,还是无法显示页面。
在程序www/下加入php.php 输出phpinfo();无法输出PHP解析后信息。
查原因2:PHP程序无法解析的原因,服务器上设置问题
解决这二个问题后,可以成功跳转到阿里互联平台了,但是页面无法显示。
原因3:发现程序中缺少接口文件,除了login.php,pre.php这二个接口外,还有include/wsclient/aliWsClient.class.php这个也是接口文件。www/demo/demo/目录;
pre.php中设置的程序目录名出不对应。改正这些,终于解决了PHP程序生效的问题。
(2)接口调试准备:测试4个功能,分别为免登录测试、定价页面测试、通知URL测试和综合测试。
1、免登录测试,即在开发者社区中模拟架上应用点“使用”过程,就是测试从平台登录到ISV应用系统,ISV应用调用平台免登录接口验证用户。
2、定价页面测试,如果ISV应用有做特殊的自定义定价页面,比如除时间相关,具体应用价格还跟空间、人数相关,或提供特殊的套餐机制。在该类应用申请上架时,需要填写订购URL,测试定价页面。如果是简单的模型定价,比如:一个月月租多少元,不需要做这块测试。
3、通知URL测试,平台在订购应用成功、付款成功或退订成功,都会通知ISV。如果ISV应用想获得平台的通知信息,需要在申请上架时,填写具体通知URL。
4、综合测试,模拟集市购买,走的是真的软件购买,注意:做为ISV用户,在注册软件时,平台自动给予了使用自己应用100年的有效期,所以用ISV用户去综合测试购买软件会续订不成功,请新注册终端用户,再进行测试。终端用户注册后,因软件没上架,没有入口购买,请在浏览器里输入购买应用URL就可以购买了
(3)接口调试过程 :详细介绍一个免登陆测试的过程:这个颇为复杂,也花了不少时间才解决。
免登录,也就是阿里系统已经默认为管理员订购了该软件,填写好免登录测试的URL地址就可进行免登录测试。
接口开发与测试”页面,点击“免登录测试”按钮,如果能以ISV的身份免登陆到您的软件的测试环境,那么免登录测试就成功了。
要参考的文件:免登陆接口调用手册
免登接口validateUser是个非常重要的接口,在调用任何其它接口前,必须要调用此接口.下面我就简单介绍下validateUser接口的使用场景,使用流程及具体的调用方法.
使用场景:
验证用户身份,确保用户已经登录软件互联平台,并且是该应用的有效使用用户,一般从阿里软件互联平台跳转到ISV应用的身份验证过程中需要使用到。如用户订购了一个软件,在用户的“我的软件”中会出现如下页面:
在用户点击了“点击使用后”,ISV应用应该要调用validateUser接口来验证用户的身份。
免登流程:
从上图我们可以看到,用户免登录时主要是调用validateUser接口。
接口参数介绍:
在这里我要介绍的主要是sip_sign参数和token参数,因为ISV在调用接口过程中,容易在这两个参数上出问题。接口的其它参数在接口列表中已经有详细说明,在这就不说了。
1、token
token是身份验证令牌,可以在软件互联平台中跳转到ISV App时的URL参数中取得。token请求超时限定为10秒钟。所以如果ISV在token生成超过10秒以后才使用它,那么在调用接口时,会提示签名无效。
2、sip_sign
平台通过签名参数来防止传输过程中包被篡改,所以这个参数是很重要的。然后这个参数的生成也是比较繁琐的,很容易出错。如果ISV生成的签名参数与平台生成的签名参数不同,那么调用时同样会提示签名无效。在生成签名参数时,有几点是要非常注意的,即参与签名的参数的个数、参数值的格式及参数的排序。有关sip_sign的生成,我们在论坛中已经有好几个帖子了,有原理介绍的,也有具体生成代码的。帖子如下:
1)参数生成攻略:http://forum.alisoft.com/viewthread.php?tid=715&extra=page%3D1
2)参数生成代码:http://forum.alisoft.com/viewthread.php?tid=659&extra=page%3D1(PHP版)以下是PHP版接口调用的范例:阿里写的不全,也是程序员自己摸索出来的
validateUser接口调用生成签名完整DEMO
注意$signStr变量的参数是升序排列,然后连接字符串形成: $sip_sign=md5(sip_appsecret+[param1+value1…paramn+valuen])
复制内容到剪贴板代码:
/**
* 阿里软件平台的REST方式认证
* [url]http://sipdev.alisoft.com/sip/rest[/url]
* ?sip_timestamp=2008-05-02+18%3A48%3A12
* &sip_appkey=10184
* &appId=10184&userId=2175944
* &sip_sign=713A26A75979CB2FCF915EE2DE41F2C7
* &appInstanceId=f2bf7b29-abee-4a3e-8678-949cf8bad9c7
* &token=0C1BC761C916D2A203D188993F29621D2D739299195A75B07CDC9A4E534C28F1FCF006F0FB8DE9E24E731D93275AFC56
* &sip_apiname=alisoft.validateUser
* &sip_sessionid=b4927f1fef8b4155b2c9b5e2dfe5ae0e
*
* sip_sign=md5(sip_appsecret+[param1+value1…paramn+valuen])
*/
private $APP_ID = 10184;
private $CERT_CODE = "注册软件时生成的CODE";
private $SIP_URL_PRE = "http://sipdev.alisoft.com/sip/rest";
public function validateUserByREST($userId, $appId, $appInstanceId, $token){
$proxy = new Snoopy();
//准备本次请求参数
echo $timestamp = date("Y-m-d H:i:s");//'2008-05-02 21:18:58';
echo $sip_sessionid = '7d052759158b46e6b920397ab47441d5';
echo $token = $token;
//生成签名
$signStr = $this->CERT_CODE.'appId'.$this->APP_ID.'appInstanceId'.$appInstanceId.
'sip_apinamealisoft.validateUser'.'sip_appkey'.$this->APP_ID.'sip_sessionid'.$sip_sessionid
.'sip_timestamp'.$timestamp.'token'.$token
.'userId'.$userId;
echo $sip_sign = strtoupper(md5($signStr));
/*
$url = $this->SIP_URL_PRE."?sip_timestamp=".date("Y-m-d H:i:s")
.'&sip_appkey='.$this->APP_ID.'&appId='.$this->APP_ID.'&sip_sign='.$sip_sign.'&token='.$token.'&appInstanceId='.$appInstanceId
.'&userId='.$userId.'&sip_apiname=alisoft.validateUser'.'&sip_sessionid='.$sip_sessionid;
*/
$formVars['sip_timestamp'] = $timestamp;
$formVars['sip_appkey'] = $this->APP_ID;
$formVars['appId'] = $this->APP_ID;
$formVars['token'] = $token;
$formVars['appInstanceId'] = $appInstanceId;
$formVars['userId'] = $userId;
$formVars['sip_apiname'] = 'alisoft.validateUser';
$formVars['sip_sessionid'] = $sip_sessionid;
$formVars['sip_sign'] = $sip_sign;
//向AEP发出服务端请求
$proxy->submit($this->SIP_URL_PRE,$formVars);
echo '<pre>';
print_r($proxy);
die();
}}
1、特别是向阿里服务器发送身份验证请求时调用到一个类,这个类没有提供给我们,之后在网上找到了
2、数据签名的一个加密和解密过程
3、webserver接口调用方式改成rest调用方式,返回XML格式。
4、tokenISV在token生成超过10秒以后才使用它,那么在调用接口时,会提示签名无效。这个问题花了大约一天时间,数据签名正确了,但是调用时总是超过10秒,造成token失效。最后检查发现是调用服务器路由慢的问题,找到服务器管理员,疏通网络问题后,完成这个接口的测试。
目前可以在平台检测到用户合法身份,还有几个接口需要继续测试。
其中找到不下十人问问题的解决方法,查找相关资料文档,感觉很头痛,今天早上来听说问题已解决,心里的石头终于放下一块了。
哎呀,虽然艰难,感觉过程中也学到了不少东西,问题就是这样一环扣一环,总能找到解决的方法的。哈哈
另一个收获就是,这种白盒测试,真的要看得懂代码,知道程序员写的东西是什么技术,是什么意思,然后清楚数据的流向,一步步来跟踪,还要了解后台的数据结构,表与表是用到存放什么数据的,各有什么作用。。。。
-
七月工作总结
2008-8-14
一晃回来一个多月了,觉得像过了好几个月一样长,倒不是别的,工作太投入了,工作量和花费的精力是较之以前更多的,一直还晃不过神来,不知怎么回事,想放松一下就竞学不来,是我太认真了吧
工作从制定测试标准,帮助程序员进行白盒测试,了解数据结构和算法,进行数据库管理,测试平台环境搭建,做的东西更深入一些了。
那些简单的界面功能测试涉及都比较少了,交由手下人来做。
工作并不轻松,但是想更深入的话就不能只停留在表面上。
关键还是要掌握白盒测试的方式和管理。
大家来的来走的走都习以为常了,但是没有想到的是老大竟然要离开,很差诧,当初是他非要留我回来,认准这个方向,现在又不认同了?还是别的什么原因?
不想想那些问题了,自己也很累了,我告诉我自己什么时候都不要放松,要让自己进步,这样不管在哪里都有自己的发展空间,别人的事自己也无法改变。
有时候说的悲观一点,是为了生活而打工,但是每个人都不是这样,天天说要创业,几个人真正能成功?即使当个打工皇帝,也只是个高级打工仔而已,在出卖自己的价值,只要有价就有市,所以不但提高自己的价值才是道理。
-
用xampp设置php运行环境经验总结
2008-8-14
什么是xampp?
XAMPP 是一个易于安装且包含 MySQL、PHP 和 Perl 的 Apache 发行版。XAMPP 的确非常容易安装和使用:只需下载,解压缩,启动即可。它的更新非常迅速,支持mysql、php5和php4、perl、apache包含了最新的版本。你还可以方便的在php4和php5之间切换
它的中文官方网址是:xampp安装和使用
一 下载软件包,下载地址:
http://prdownloads.sourceforge.net/xampp/xampp-win32-perl-addon-5.8.8-2.2.3.exe
您也可以在下边的这个地址中寻找最新的下载包:
/xampp
注意:xampp-win32-perl-addon名字中perl-addon指的是这个软件包集成了perl二 如果机器上边已经安装了APACHE,mysql,应该先卸载掉
三 解压软件包到F:\xampp\,您也可以自己指定解压到什么目录,但是以后的路径您都需要对应进行修改
注意:如果解压到F:\xampp\那么所有的文件都将放在F:\xampp\xampp\这个目录下,是两个xampp
四 安装,你只需要运行,注意这一步需要一定的时间才能完成,您需要耐心等待:
F:\xampp\xampp\setup_xampp.bat五 修改主配置文件
用编辑器打开:F:\xampp\xampp\apache\conf\httpd.conf
查找<Directory />
将下边的代码块
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>
修改为:
<Directory />
Options MultiViews -Indexes Includes FollowSymLinks
AllowOverride None
Order deny,allow
#Deny from all
</Directory>注意,应该注释掉Deny from all
六 运行xampp
F:\xampp\xampp\xampp-control.exe
点击apache 和 mysql 后边的start
注意:启动apache和mysql需要一定的时间,因此不要多次点击
如果一切正常,那么apache和mysql后边都应该显示 ”running“,如果不正常请看第八步”故障分析“
注意:mysql默认的用户名是root 密码为空
您现在就用IE访问目前的网站了:
http://localhost/
七 文件路径说明:
您需要将您写好的程序放在这个目录下
f:\xampp\xampp\htdocs\
注:程序并不一定要放在指定的这个目录,可自由放置,在E:\xampp\apache\conf\httpd.conf
中指定路径,重启apache即可。
增加端口
Listen 80
listen 3000
listen 4000
DocumentRoot "E:/xampp/htdocs/www" #默认网站的路径#配置其它端口访问路径
NameVirtualHost localhost:3000
<VirtualHost localhost:3000>
## ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "D:/wamp/ehr_utf8/www"
ServerName localhost:3000
## ErrorLog logs/dummy-host.example.com-error_log
## CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>最容易犯的错就是这里的路径没加WWW,程序中路径不用加WWW
=============================下边是补充内容可以不看=============================
八 错误诊断:
如果您的机器上边apache不能正常启动,请运行
f:\xampp\xampp\apache_start.bat
来查看详细的错误信息
如果您的机器上边mysql不能正常启动,请运行
f:\xampp\xampp\mysql_start.bat
来查看详细的错误信息如果您的机器已经安装了IIS,那么apache会报错,443 ssl端口会IIS占用,请修改F:\xampp\xampp\apache\conf\extra\httpd-ssl.conf 端口
号解决
例如:将所有的 443 都修改为 533 ,这种错误对于80端口也一样可能存在,如果是80端口,请修改
f:\xampp\xampp\apache\conf\httpd.conf
将所有的80修改为8081
九 路径补充说明(可以不看):
mysql的数据库文件应该放在下边这个目录:
f:\xampp\xampp\mysql\data
mysql的配置文件是:
f:\xampp\xampp\mysql\bin\my.cnf -
最近的工作感悟
2008-7-04
最近工作一直是在折腾,很坚决的换工作,结果发现选择的行业跟自己是不相适应的,终究应了一句隔行如隔山这句话!
抛开工作环境不说,这种测试方式天天与机器打交道的日子我一点也不喜欢.可能不是通讯专业的吧,格外排斥这些,新的环境里,我手无足措,不知做些什么好了.
有些事情你不去经历过就永远无法了解,不管别人怎么去说.
工资倒不是问题了,主要是工作得开不开心很重要
这家在外颇有名声的集团公司,也有它不为人知的一面,不了解不知道,公司管理混乱,人员流动量大,办事效率低,感觉没有自己的企业文化.这些都是一个企业发展的弊病.造成员工怨气唉天,越来越觉得没有什么可呆的,不知道是不是因为以前自由惯了,进了大点的企业反而不习惯的原因.
虽然是这样,但是总算是让我了解这一个行业的发展模式,了解了一些自己从来没有接触过的东西,也很高兴在这短短的几天时间,认识了几个很好的同事.从与他们的交流中也学到了不少专业方面的知识.
活泼的熊丹,工作认真负责的小蔡,学识渊博的二宝,乐于助人的侯慧.很高兴能认识他们.
还有一些规范化工作流程方面的知识,我也间接的学到一些,这几天整理下,想形成自己的东西,应用到自己的工作中.
是该定下心来,安心的做好自己的事了,我的发展方向还是要向管理层方面发展,同时学好技术方面的知识,其实现在想来,跳来跳去不是什么好事,不同的行业有不同的知识沉淀,成功需要靠点点滴滴积累,在一个行业做精做细,在一条直线上发展,到达目的地时间会短很多.
当前我的工作的突破口在这几个方面:
1)制定测试的标准化的流程,包括一些方案文档,并具体实施规范化.如测试方案、测试计划、测试用例、测试报告。测试评审等等。
2)性能测试、压力测试。这些问题是系统的瓶颈,用户数增加使用系统变慢,如何优化。系统数据量大时,运行速度的问题如何解决。如果用一些工具能解决这些问题呢。
3)代码的静态测试,帮助开发制定编码规范。如规范代码标准,检查基本的逻辑关系,如何用工具来测试,生成测试报告呢?
这个是在现在的单位遇到的问题,他们要测试C++代码,而我们也有相关的测试工具来静态测试的吧。这些都是白盒测试的范畴。我觉得我应该从这方面的着手。
4)在数据结构和编程能力方面也要加强,上次在论坛看到一篇文章说的很好。一个做测试一二年的,连代码都不懂的,确实有些说不过去,况且我也是有基础的。要想让自己提高一个层次,代码方面的能力要加强,千万不要以为自己是做测试的,这方面的就可以忽略了,这对自己像深层发展是不利的。 -
面试流水帐
2008-6-04
上周连续面试了二三家,都是不错的企业,有一家是做外包软件测试的,要求挺高的,要懂JAVA语言和英语水平良好。给我的考题有三道编程,大概要考到循环语句和字符串的一些知识,感觉很有难度,网上查了些资料,勉强答了二题。其它是英文答一些测试理论知识,这个都没有问题。个人感觉这家要求太高了,几乎是一个程序员的标准,我不想在编程方面钻太深,我以前用的是PHP,现在要重新去学另一种语言太痛苦了,即使薪资很高我也不去。
另一家是一家很知名的专业做金关工程的,在物流监控、电子通关、B2B电子商务都有涉及,对业务方面我是挺感兴趣的,以前我也做过关于海关政务系统的开发和维护,也都是B/S架构的,应该来说测试的规模都不错,可以学到一些测试方面的系统知识。面了二关,感觉到面试官非常严肃,老是在挑我的毛病似的,因为根据他们面试的问题,好像对于测试工具的运用要求很高,特别几次强调性能测试工具方面,还有就是测试的方法论,具体就工作中的例子来说明一个完整的测试用例是如何设计出来的, 一张试卷上所有的题都是口头答。可能没有多大希望,自己的能力可能并不能满足这家,可能每个公司都有自己的测重点吧。
第三家,是搞通讯设备研发的机构,感觉比较正规,但是测试也是刚成立的,刚被重视起来。二百多个人的企业,才不到五个测试,给我的考题呢,大多感觉是硬件测试的一些方法,考的也是C语言。像alpha 和 beta测试的区别,白盒测试分几种,集成测试分多少种,压力测试和负载测试的区别,测试的流程啦,系统测试计划需参考的文档,理论的知识非常多,而且要精C,C++。与我想象的差别有些大吧,因为企业的性质有很大的不同,一个是硬件方向,做移动通讯系统的,一个是纯软件企业,不知能不能适应呢,而且这个行业测试的发展前景如何,都不了解。和完全的B/S模式有很大的差异,另一个就是业务方面,所涉及的知识面很大的不同。
本周已接到相关的通知,第三家要我去上班,但是现在很犹豫,不知该不该去呢,薪资方面是有提升,但是,更重要的是发展,这条路上会有大的发展吗?与我想要走的路差别有多大?我也不清楚。其实不想再跳来跳去了,想找个地方稳定下来,稳中求升,但目前这家企业确实让我很失望,对我来说也没有了什么挑战,感觉再做下去也没有什么意思了。
我到底要不要去?还是再等好的机会呢?
-
六月份工作记录
2008-6-04
一、关于技术方面
用到数据库的查询比较多,用到子查询。
select floor((1000000-0+1)*rand()+0)
update employee set employee_pw=
(SELECT FLOOR(100000 + (RAND() * 899999))) where status='A';
select employee_pw from employee ;//这里一定要加(),否则有错,在数据库中生成六位随机数存入数据库中。此操作在MYSQL平台。关于存诸过程,这个不是很了解,但用了这个例子来记录一下,备以后参考吧。
默认员工自助授权处理说明
1、关联到四个表
self_module(module_id)
self_role(role_id,role_name)
self_module_per4role(role_id,module_id,per)
employee_role(user_id,user_role)主要处理二个表,要将employee表的employee_id(所有在职员—)插入五条相同的记录到
self_permission (employee_id,department_id,module_id,perm)表中,并保持self_permission表中的module_id,perm相同.
即内容为
employee_id,4,(1,2,3,4),
employee_id,5,(1,2,3,4)
employee_id,6,(1,2,3,4)
employee_id,7,(1,2,3,4)
employee_id,12,(1,2,3,4)1)用存储过程来处理。此存储过程必须在mysql5以上的版本才可运行。所以将HASE数据库中employee和self_module_per4role二个表
copy出来放在新建的MYSQL5数据库中,运行存诸过程,重新生成self_module_per4role表.再将self_module_per4role表导出脚本再
存入HASE数据库中。2)将权限关联到员工.
insert into employee_role(user_id) select employee_id from employee where employee_pw!=''and status='A';
//employee表的employee_id(所有在职员工)插入到employee_role(user_id)update employee_role set role_id='23';
-- Procedures
--
-- DELIMITER $$
--
CREATE DEFINER=`root`@`%` PROCEDURE `selfPerm`()
BEGIN
DECLARE emp_id INT;
DECLARE done INT DEFAULT 0;
DECLARE EmpCur CURSOR FOR SELECT employee_id FROM employee WHERE (employee_pw!='' OR employee_pw IS NULL) AND status='A';
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN EmpCur;
REPEAT
FETCH EmpCur INTO emp_id;
IF NOT done THEN
INSERT INTO self_permission (employee_id,department_id,module_id,perm) VALUES (emp_id,'1','4','1,2,3,4');
INSERT INTO self_permission (employee_id,department_id,module_id,perm) VALUES (emp_id,'1','5','1,2,3,4');
INSERT INTO self_permission (employee_id,department_id,module_id,perm) VALUES (emp_id,'1','6','1,2,3,4');
INSERT INTO self_permission (employee_id,department_id,module_id,perm) VALUES (emp_id,'1','7','1,2,3,4');
INSERT INTO self_permission (employee_id,department_id,module_id,perm) VALUES (emp_id,'1','12','1,2,3,4');
END IF;
UNTIL done END REPEAT;
CLOSE EmpCur;
END$$--
-- DELIMITER ;
-- -
sql语句处理(复杂删除问题)
2008-5-22
在mysql中处理:
create temporary table _tmp(id int);
insert into _tmp(id)
select a.manual_record_id from attendance_manual_record as a ,employee as b, position as c,department as d
where a.type='O1'
and a.date_happen like '2007-08-02%'
and a.employee_id=b.employee_id
and b.position_id=c.position_id
and c.department_id=d.department_id
and d.department_id='8';
select * from _tmp;
delete from attendance_manual_record where manual_record_id in (select id from _tmp)
drop table _tmp;在mssql处理
delete from attendance_manual_record where manual_record_id in (select a.manual_record_id from attendance_manual_record as a ,employee as b, position as c,department as d
where a.type='O1' and a.date_happen like '2008-05-15%' and a.employee_id=b.employee_id and
b.position_id=c.position_id and c.department_id=d.department_id and d.department_id='27')






