51Testing软件测试网

 
 

常用链接

  • 我的随笔
  • 我的评论
  • 我参与的随笔

留言簿(3)

  • 给我留言
  • 查看公开留言
  • 查看私人留言

随笔档案

  • 2021年6月 (1)
  • 2021年3月 (1)
  • 2020年9月 (1)
  • 2020年3月 (1)
  • 2020年1月 (2)
  • 2019年12月 (3)
  • 2019年11月 (5)
  • 2019年10月 (1)
  • 2019年9月 (2)
  • 2019年8月 (14)
  • 2019年7月 (20)
  • 2019年6月 (15)
  • 2019年5月 (12)
  • 2019年4月 (19)
  • 2019年3月 (20)
  • 2019年2月 (9)
  • 2019年1月 (16)
  • 2018年12月 (17)
  • 2018年11月 (21)
  • 2018年10月 (16)
  • 2018年9月 (20)
  • 2018年8月 (22)
  • 2018年7月 (3)
  • 2018年6月 (1)
  • 2018年5月 (7)
  • 2018年4月 (1)
  • 2018年3月 (3)
  • 2018年2月 (6)
  • 2018年1月 (2)
  • 2017年9月 (8)
  • 2017年8月 (28)
  • 2017年7月 (3)
  • 2016年11月 (1)
  • 2016年6月 (1)
  • 2016年4月 (1)
  • 2016年2月 (2)
  • 2015年7月 (1)
  • 2015年5月 (1)
  • 2015年4月 (2)
  • 2015年3月 (1)
  • 2015年2月 (2)
  • 2015年1月 (6)
  • 2014年12月 (3)
  • 2014年11月 (3)
  • 2014年10月 (3)
  • 2014年9月 (2)
  • 2014年8月 (8)
  • 2014年7月 (16)
  • 2013年12月 (5)
  • 2013年11月 (1)
  • 2013年10月 (3)
  • 2013年9月 (2)
  • 2013年8月 (2)
  • 2013年7月 (3)
  • 2013年5月 (1)
  • 2013年4月 (2)
  • 2013年3月 (2)
  • 2013年2月 (3)
  • 2013年1月 (4)
  • 2012年12月 (4)
  • 2012年11月 (4)
  • 2012年10月 (3)
  • 2012年9月 (4)
  • 2012年8月 (3)
  • 2012年7月 (4)
  • 2012年6月 (2)
  • 2012年5月 (2)
  • 2012年4月 (1)
  • 2012年3月 (2)
  • 2012年2月 (2)
  • 2012年1月 (1)
  • 2011年12月 (3)
  • 2011年11月 (2)
  • 2011年10月 (1)
  • 2011年9月 (4)
  • 2011年8月 (3)
  • 2011年7月 (2)
  • 2011年6月 (4)
  • 2011年5月 (4)
  • 2011年4月 (2)
  • 2011年3月 (4)
  • 2011年2月 (4)
  • 2011年1月 (7)
  • 2010年12月 (7)
  • 2010年11月 (5)
  • 2010年10月 (4)
  • 2010年9月 (7)
  • 2010年8月 (7)
  • 2010年7月 (3)
  • 2010年6月 (3)
  • 2010年5月 (4)
  • 2010年4月 (4)
  • 2010年3月 (5)
  • 2010年2月 (3)
  • 2010年1月 (4)
  • 2009年12月 (3)
  • 2009年11月 (3)
  • 2009年10月 (1)
  • 2009年9月 (3)
  • 2009年8月 (2)
  • 2009年7月 (3)
  • 2009年6月 (1)
  • 2009年5月 (2)
  • 2009年4月 (4)
  • 2009年3月 (5)
  • 2009年1月 (1)
  • 2008年11月 (2)
  • 2008年7月 (5)
  • 2008年6月 (4)

文章分类

  • 行业资讯(45) (rss)
  • 软件业务知识(43) (rss)
  • 软件开发知识(33) (rss)
  • 软件测试工具(39) (rss)
  • 软件测试技术(157) (rss)
  • 软件测试管理(40) (rss)
  • 软件测试职业发展(57) (rss)

51testing软件测试网

搜索

  •  

最新评论

  • 1. re: 淘宝后台技术大揭秘,不看这篇你双十一要损失几个亿!
  • 关注官方公众号“Atstudy网校”,点击中间菜单栏“双11”,领取双十一技术内幕资料。
  • --51testing
  • 2. re: 软件测试流程的一点感悟
  • 提交缺陷时只需要描述现象即可,过多的分析可能会误导开发
  • --凡客诚品
  • 3. re: 软件测试流程的一点感悟
  • 阿达宿建德江阿斯顿
  • --凡客礼品卡
  • 4. re: 手机软件测试的经验总结
  • 很好啊~不错
  • --乐蜂网
  • 5. re: 手机软件测试的经验总结
  • 很好啊~
  • --罗莱家纺

阅读排行榜

  • 1. 软件测试流程的一点感悟(1091)
  • 2. 5年经验之谈:月薪3000到30000,测试工程师的变“行”记!(940)
  • 3. 测试自动化及软件测试工具的比较(857)
  • 4. 银行线上信贷系统如何做好接口测试?手把手教你接口工具Postman(825)
  • 5. 软件为什么要做异常测试?测试员必知的22个测试点总结!(806)

评论排行榜

  • 1. 软件测试流程的一点感悟(4)
  • 2. 软件测试的原则和经验 (4)
  • 3. 嵌入式软件测试技巧(2)
  • 4. 手机软件测试的经验总结 (2)
  • 5. 常用软件测试工具的分析与比较(1)

Powered by: 博客园
模板提供:沪江博客
IT博客 | 首页 | 发新随笔 | 发新文章 | 联系 | 聚合 | 管理

测试员跟程序员交流必备技能:报Bug的隐形规则!

不论怎么黑程序员,他们都不会生气,的确有这种情况,不过程序员并不是没有脾气,他们也是有敏感的地方,如果命中他们的要害,他们也是会不高兴的。

作为一名程序员,我首先第一个能想到的程序员的敏感点,敏感词就是“bug”,只要是一个程序员,只要你念到"bug"这一词的时候,在他的心里就会不同程度的咯噔一下,听到这个词没有一丝反应的程序员几乎是不存在的,这也算是一种正常的职业反应吧。因此有的测试人员不明白这一道理,在办公室大嗓门的高频说着“bug”也引来了程序员的不少白眼。


我想对于大部分IT公司而言,测试人员在报bug时,都会或多或少与开发的沟通存在些问题。那如何更有效地说服开发接收你的bug?

一、先来看看网友们的建议:

@小博:不要对一个程序员说:你的代码有Bug。他的第一反应是:①你的环境有问题吧;②你会用吗?如果你委婉地说:你这个程序和预期的有点不一致,你看看是不是我的使用方法有问题?他本能地会想:我去!是不是出Bug了!

@小为:程序员:运行失败了,这踏马怎么可能会失败呢?运行成功了,这踏马怎么就成功了呢?

@小峰:测试人员跟程序员报bug,要特别注意!就好比老公有外遇的时候不能直接问他:“你是不是出轨了?”他肯定一口咬定:“没有的事 放屁 !”你应该要说:“我觉得你最近有点不对劲.”他肯定吓尿了!

@小软:测试人员应该说,“快来人那,我这电脑又憋了”。

@小件:这熟悉的套路……可老程序员会跟你说:请稳定的重现一下bug(微笑脸)。

@小测:刷新啊!!多刷新几次再说!!(傲娇脸)

@小试:调bug比写一段代码更折磨人。

二、以下是一些资深老鸟给新人的一些建议

1、首先确定这是一个个实实在在的bug。

不要出现因为配置原因或者是操作错误引起的"bug",这样是会被开发"鄙视"的。作为测试人员应该尽量做到专业,尽量少给开发找麻烦,不要制造一些并不存在的bug、不要提交一些重复的bug。

2、写好bug描述。确保依照bug描述能重现BUG的过程。

这很重要!有时候开发看到一个莫名其妙的bug,描述不清楚,还无法重现,他会很生气。Bug描述精确、没有歧义,详细简洁的重现步骤,bug截图是必须的。如果是特殊的测试数据,我们还需要附带数据。

3、提升自己的专业技能。

我们应该尽量提升个人技能。要充分熟悉我们软件产品各个层面的业务,包括功能业务,代码实现逻辑,环境配置部署等。这样在说服开发接受你的bug时,才会更加做到有理有据。

4、测试应把握重点。

测试应把握重点,不要在无关紧要的地方测试过多,也不要为了无关紧要的所谓的"bug"浪费沟通成本。什么是重点,就是产品的主要功能,用户经常会用到的操作。如果是需求明确的严重问题,我相信只要是开发,他都会想法设法去修复它。

5、问题集中起来咨询开发。

把你个人需要问的问题做一下整理,集中起来问开发。为了沟通的高效率,最好是跟开发进行面对面的交流(除非你需要保留截图证据)。如果你是颜值一派或是性格可爱派,这种方法尤其可行。

6、做个聪明的测试人员

a、注意跟开发沟通的语气

要有换位思维的方式,做事情对事不对人,处理事情一定要有一颗宽容的心。只有这样,才能够很好的说服研发去修改Bug。

b、和开发人员搞好私人关系。

一旦关系好了,啥话都好说,他也不会觉得你烦。但是别因为关系好,bug就直接口头叙述,不提交到bug平台做好统计记录。

总结:

我细化报bug的标准如下(以 Bug 描述为主):

1.Bug标题清晰易懂,标准是一眼就明白需要反馈的问题;

2.提供必现的操作步骤(如果有的话),记得按第三方的角度去进行描述,最好自己可以按描述无脑操作一遍试试;

3.进行关联场景的验证,尽可能确定出现问题的关键要素,可以把验证过的场景都补充到 bug说明中;

4.确定关键要素后,尽可能的去定位问题出现的技术原因,避免只是简单的现象描述;

5.就算问题很明显,也需要截图为证,必要的时候进行录屏。

欢迎加入  51软件测试大家庭,在这里你将获得【最新行业资讯】,【免费测试工具安装包】,【软件测试技术干货】,【面试求职技巧】... 51与你共同学习,一起成长!期待你的加入: QQ                     群:                    755431660

posted @ 2019-04-09 17:44 51testing 阅读(68) | 评论 (0) | 编辑 收藏
 
开发、测试、运维等岗位薪酬体系大公开!你拖后腿了吗?

当前,企业对IT人才需求旺,学校毕业生供给旺,在供需两旺的情况下依然会有“企业招聘难、毕业生就业难”的现象。一方面,毕业生所学知识不能满足企业需求,另一方面,毕业生在择业、就业时,也缺乏对行业信息的把控。

这一切的矛盾点主要源于我们对行业的不熟悉,对市场需求的不了解。

所以,今天我要给大家普及下互联网行业的薪酬体系,可以真实反映互联网市场需求,帮助毕业生或IT人更好的选择职业发展之路。


1、软件测试

软件测试是个可以很快入门的职业,门坎不高,对技术要求不太高,但也需要测试相关的知识,能够设计测试用例,准备测试数据, 执行测试。 现在敏捷开发流行,对测试也要求懂开发知识,至少能够开发一些自动化的脚本。

测试的未来职业选择也是多样化,例如可以向技术类、产品类和管理类等方向发展。在测试人员供不应求的情况下选择软件测试这个岗位,不可谓不明智。在这万物互联,生活事事都软件化智能化的时代,软件测试人员仍旧占有一席重要之地。

在中国IT行业的迅猛发展下,越来越多的IT企业已逐渐意识到测试环节在软件产品研发中的重要性。因此,选择软件测试这个行业,必然不会后悔,而且会越老越吃香!

QA薪资——

1年~2年:4K~15K

2年以上:12K~20K

2、运维

网站运维将成为一个融合多学科(网络、系统、开发、安全、应用架构、存储等)的综合性技术岗位,给大家提供一个很好的个人能力与技术广度的发展空间。运维工作的相关经验将会变得非常重要,而且也将成为个人的核心竞争力,具备很好的各层面问题的解决能力及方案提供、全局思考能力等。

由于运维岗位所接触的知识面非常广阔,更容易培养或发挥出个人某些方面的特长或爱好,如内核、网络、开发、数据库等方面,可以做得非常深入精通、成为这方面的专家。

根据上述信息,可以判断IT技术人才需求空缺还将日益扩大,2019年IT人才短缺,而Linux运维更是IT行业中备受瞩目和青睐的人才,企业将展开激烈的人才争夺战,不失为一个创业、转型、寻求更好发展的好时机。

运维薪资——

1年~3年:6K~20K

3年以上:28K~40K

3、程序员

程序员的薪酬体系非常稳定,应届生年薪20万的基本上都是程序员,然后以每年20%+的涨幅加薪。

程序员处于互联网薪酬体系的塔尖,北上广一线城市3、4年经验的程序员普遍能拿到30~40万年薪;而他们的平均智力以及付出的努力,同样也处于塔尖的位置。

程序员薪资——

0~12个月:5K~10K

1年~2年:8K~20K

3年~5年:18K~30K

5年以上:30K~

4、UI设计师

UI的发展前景是很赞的,在两到三年前,甚至都有人推动让UI来代替产品经理来驱动。某种程度上来说,UI最好的发展方向是UE,也就是交互,然后就是用户体验优化师。

UI薪资——

0~6个月:4K~8K

6~12个月:6K~12K

1年~3年:10K~20K

3年~5年:16K~30K

5年~ :24K~

5、产品经理

通常情况下,产品经理的入门薪资比程序员低一到三档。如果不是名校毕业,应届助理的月薪可能只有五六千。但奇妙的是,产品成长曲线和名校学历一毛钱关系都没有,真的,一毛钱关系都没有,仅仅和高成长性的项目团队相关。所以应届生挑公司不如挑项目……好吧,说得好像你有得挑一样。

接下来,在毕业后两三年里,产品经理的薪酬仍然比程序员低一到三档,度过漫长而难捱的学徒生涯。一直到你成为2年+资历的熟练产品经理,薪酬水平才会接近同样是2年+资历,同等水准的熟练程序员。

再往后,资深产品经理的薪酬通常和资深程序员相当,而5年+资历的专家产品经理有可能薪酬高于专家程序员,同时有价无市——工作机会随你挑选。

产品经理薪资——

产品经理(1~2年)(9~12K)

高级产品经理(3~5年)(12~20K)

资深产品经理(5年以上)(30K+)

6、Python开发工程师

需要技能:

1.熟悉Python,掌握基本数据结构,熟悉标准数据库,认同Python设计理念;

2. 熟悉常见的Python框架,精通Tornado,flask,django优先;

3. 熟悉常见的数据库,熟练掌握Mysql,Mongodb,Redis者优先;

4. 掌握Linux操作系统,理解TCP,HTTP等网络协议;

Python开发工程师薪资——

0年~1年:9K~10K

1年~3年:10K~15K

3年以上:15K~35K+

总结:

IT行业的成长之路没有一条不充满着荆棘和困难,所以你很容易掉入不健康的自我思考和职业选择的陷阱。但只要你能全身心投入,持续改善提高,认识到自己不过是个有梦想的人,能够设身处地地思考,就可以实现自己进入IT行业的小目标了。

欢迎加入  51软件测试大家庭,在这里你将获得【最新行业资讯】,【免费测试工具安装包】,【软件测试技术干货】,【面试求职技巧】... 51与你共同学习,一起成长!期待你的加入: QQ                     群:                    755431660

posted @ 2019-04-08 17:33 51testing 阅读(106) | 评论 (0) | 编辑 收藏
 
软件测试新玩法,看这5家科技巨头如何组织质量保证工作?

对于那些正在认真寻求如何测试或者进一步改善测试效果的团队和组织来说,可以研究下业界大佬是如何组织测试和质保活动的,肯定能学到不少东西。显而易见的是,诸如谷歌、微软和亚马逊这样的公司,如果不是对产品质量给予了恰当的关注,不可能像现在这样成功。

但是对这些软件巨头们的研究表明,成功并没有放之四海而皆准的秘诀。我们可以一起来学习一下世界上最著名的五家公司是如何组织他们的质量保证工作的。


谷歌- 寻找最佳实践

谷歌,这个世界上最大的搜索引擎公司,是如何组织测试工作的呢?这要视产品和团队而定。举个例子,负责搜索引擎的团队,维护了一个庞大又严谨的测试框架。因为搜索是谷歌的核心业务,团队想要保证持续地、高质量的交付,不希望因为测试工作不到位而把产品搞砸。

为了达到这个目的,谷歌采用了一个四段式测试流程来处理搜索引擎的改动,包括:

1.由专职的、内部测试人员(谷歌员工)进行测试;

2.在众测平台上进行进一步的测试;

3.自我试用阶段,即由谷歌的员工在日常工作中来使用产品

4.Beta测试,即把产品释放给一小部分终端客户来使用。

尽管这看起来已经是一个非常完善的测试流程,但是谷歌前工程总监詹姆斯·惠特克在一段视频中仍然解释说,这里面还有可以改善的空间,这是因为负责不同阶段测试的人员之间的沟通还没达到理想状态(可能导致部分功能被多次测试或者漏测)。

但是,那些负责非核心产品的团队采用的测试流程则没有那么严格。在某些情况下,根本没有专职的测试人员来为产品构建安全网,个别产品的测试工作完全由开发人员来完成。

无论哪种情况,谷歌都很认真地对待测试工作。事实上,在谷歌,测试人员和开发人员的薪水是持平的,这种现象在其他公司并不常见。

Facebook:开发驱动测试

Facebook根本不雇佣任何专职的测试人员。这个社交媒体巨头依赖他们的开发人员去测试自己的代码(或者做交互测试)。过去,这些测试工作都是手工完成的。现如今,Facebook已经实施了各种自动化的测试方案。他们使用各种各样的测试工具,从做后台单元测试的PHPUnit,到Jest-一款由Facebook内部开发的JavaScript测试工具,再到做端到端测试的Watir。

与谷歌相似,Facebook也用内部测试来保障软件的可用性。并且,Facebook有一个堪称臭名昭彰的做法:把搞砸事情的开发者当作罪犯,给他戴上小丑的鼻子,拍照,发到内部的Facebook讨论组。

Facebook已经意识到了他们的测试流程有明显的缺陷,但是与其花很长的时间去改善,他们选择接受这些缺陷,这印证了他们说的话-社交媒体并非刚需。此外,减少对测试的关注意味着可以释放更多的资源专注去做更有价值的工作。

相比反复测试软件,Facebook倾向于使用一种被称为·金丝雀·的发布方式。即使用增量部署的策略在生产环境上测试补丁、更新或者新功能。比如,一个新功能在最开始的时候只对一小部分用户开放。

通过跟踪新功能的使用情况和反馈,公司会决定是继续扩大试用范围还是禁止这个新功能,是进一步改进还是直接放弃。

亚马逊:部署先行

与脸书相似的是,亚马逊也没有大量的专职测试人员。甚至曾有人暗示,亚马逊的测试职位微不足道。亚马逊的测试人员与开发人员的比例是1:7,这也说明了在亚马逊,测试并不是一项重要的工作。

然而,亚马逊公司本身并不这么认为。对亚马逊来说,测试与开发人员的比例只是一个输出变量,并非输入变量。换句话说,一旦公司意识到收入下降或者因为网站异常而导致客户流失,公司就会追加测试的投入。

亚马逊给人的感觉是它的开发和部署流程相当成熟(公司因每11.6秒发布一个新版本而闻名),以至于并不需要大量的、详尽的测试。它所做的,是尽可能地把产品部署和出错回滚变的简单。这样,即使发现任何错误,可以很容易将产品回滚到一个没有问题的版本。

Spotify: 分队,部落和分部

Spotify雇佣专职的测试人员,他们隶属于一些跨职能的团队,每个团队都有自己的明确使命。在Spotify,员工是按照已经小有名声的Spotify模型来组织的。Spotify模型包括以下部分:

·分队:一个分队基本上就是一个Scrum团队,分队注重原则胜过注重实践。Spotify有一句名言是这样的·规则是良好的开端,但是该破则破·。一些分队可能有多个测试人员,而另外一些分队则可能一个测试人员也没有,这完全取决于分队的使命。

·部落:隶属于同一个业务领域的一组分队的集合。属于某个分队的测试人员自然就从属于相应的部落。

·分部:为了促进员工相互之间的学习和经验分享,Spotify用分部把分散在不同分队和部落的、具有相同技能的员工组织到一起。

Spotify非常认真地对待测试工作。就像编程一样,Spotify认为测试过程是富有创造性的,有些事情不能(或者不能全部)自动化。与本文中提到的其它公司相反的是,Spotify非常依赖它的测试人员去考察和评估其产品,而不是试图把测试工作尽可能地自动化。

未来,Spotify的测试会是怎样的呢?Spotiy的测试经理,同时也是基于模型的自动化测试工具GraphWalker的创始人克里斯蒂安·卡尔说:

“未来,我们花在测试上的时间会和今天一样多。但是,自动化测试工具以及自动化测试中获得的信息将会使我们的测试工作变的不同”。

最后,一个事实是:为了最小化运转设备和维护测试环境的成本及消耗,Spotify的大量测试都是在生产环境上进行的。

微软:测试者就是工程师

微软当前的测试和开发人员的比例大致是2:3,与谷歌一样,微软付给测试人员的薪水与开发是持平的-除此之外,他们也并不被叫做测试人员,而是被称为:测试领域的软件开发工程师(或简称为SDETs)。

微软的测试人员比例如此之高,是因为微软的大量收益来自于那些交付给客户并安装在客户电脑上的产品,而不是网站或者线上服务。不管是因为缺陷还是新功能,更新这类产品都很困难(至少是非常令人讨厌的)。因此,微软投入了大量的时间,人力和财力去保证高质量地交付产品。

从IT巨头身上我们能学到什么

既然世界上最著名的五家科技公司在测试的文化、视角和流程上可以如此不同,这就说明了关于测试并没有所谓的唯一正确的道路。这五家公司分别制定了他们自己的测试流程,选择了最适合他们的方法。而且五家公司都非常成功,他们一定是采取了适合自己的正确方法,不是吗?

然而,我们还是可以从上述故事中学习到一些道理,从而应用到我们自己的测试策略中.

·从由专职测试人员为测试工作负责到人人都为测试活动负责,测试的责任范围其实是一个连续谱,在这个区间中选择哪个模式要视团队的技能而定。

·测试重要性的范畴也是一个连续谱,从未经测试的内容决不上生产环境到我们把所有内容直接放在生产环境上,如果有问题,直接在那里测。你的团队在这个区间的哪个位置,取决于失败带来的风险以及问题发生后回滚版本和解决问题的难易程度。

·自动化测试在上述五家公司中都有很重要的位置。虽然自动化实现的程度不尽相同,但是五家公司都使用工具来优化他们的测试工作,你或许也应该借鉴这个经验。

欢迎加入  51软件测试大家庭,在这里你将获得【最新行业资讯】,【免费测试工具安装包】,【软件测试技术干货】,【面试求职技巧】... 51与你共同学习,一起成长!期待你的加入: QQ                     群:                    755431660

posted @ 2019-04-04 17:33 51testing 阅读(155) | 评论 (0) | 编辑 收藏
 
程序员的噩梦, 碰到哪条你会崩溃?

听说嫁人要嫁程序员,钱多话少脾气好。这话多半是程序员自己夸自己的。程序员确实是极富幽默感的群体,善于自嘲,勇于自黑,耐受力超强,很多事可行可不行,不到不可忍绝不会冲冠一怒。不过,就是这么 nice 的人,也很有一些受不了的事儿。


1、产品改需求的时候

PM:这个很简单的,稍微弄一下就行了。

程序员的噩梦是,临下班的时候接到产品的消息,“我又做了一点小改动,你看一下?”

更噩梦的噩梦是,通宵开发了好几天后,产品说,“领导刚才改主意了,之前的那个功能还得加上。”

产品说的总是风轻云淡,程序员拿过来一看也的确不是很难,也就是重构代码而已,通宵十天就够了。

所以说,杀一个程序员不用枪,改三次需求就够了。

2、Bug不可(难以)重现

人世间最痛苦的事就是明明有个Bug在我的眼前,我却无法重现它。

四五年前,我们有个运行良好的应用突然出了状况,一到下午两点左右就会毫无征兆地崩溃,查看了日志,根本没有报任何错误。在测试环境中想尽了一切办法进行模拟,总是无法重现。

这样的现象持续了一个多月,感觉就要绝望的时候发现了蛛丝马迹,北京时间的下午两点,是意大利的早上8点,那个时候,意大利的用户会登录系统,有些特殊属性的用户做了一个操作,触发了一个年久失修,普通用户根本走不到的代码分支,导致系统直接退出。

只用一行代码就Fix了这个Bug,但是重现的过程竟然长达一个多月!

3、接手前任留下来的烂代码

对于代码的编辑,每个程序员都有他们自己的一个独特的编码风格。所以每个程序员看其他人的代码几乎都是烂代码。而一旦有程序员跳槽就必然会有其他程序员接手他的项目,然而看着这些代码,特别还是那些不写注释的代码时,你就能知道程序员的头发其实是被他们自己给抓光的。

4、懂点技术,瞎指挥

有人说不懂技术的瞎指挥很可怕,我倒是觉得懂点技术,然后指手画脚更可怕!

有个国企的项目,甲方负责人李总是个局里的二把手,不知道什么时候了解了一点编程的技术, 每次开需求会都是和我们大谈如何开发软件,他的口头禅就是: 这个需求,用个SQL从数据库一选不就出来了?!你们怎么得开发一周?!别想蒙我!

唉,他怎么能考虑到用SQL的like是效率极低的, 数据量大了是要崩溃的,我们得建立全文索引,需要用一套基于搜索的解决方案才行。

甲方的技术实力看起来这么“强悍”, 不懂技术的乙方负责人只好和稀泥:我们回去再评估一下。

懂技术的程序员在下面大眼瞪小眼。

5、写文档

代码好不容易写完了,刚刚喘口气,准备开始下一个工作,领导说,把文档也补一下,接口参数的含义都写上 ,程序员心里通常都会不爽,有所抵触,结果就是草草地写个文档出来。

为什么这样呢,因为实现功能的那些代码才是体现自己价值的,能够赚钱的工作,文档看起来只是附加品而已。工作做完了,谁愿意多干活呢?再说了,工作量估算的时候把写文档时间算进去了吗? 你都不给我时间,现在还让我写,不是让我加班吗?

如果想把工作做得漂漂亮亮,既有优雅的代码,又有完善的文档,必须得给文档工作留出时间才行。

6、缺乏时间

像大多数工作一样,制作好的软件需要时间。不幸的是,在大多数努力中,上级管理者或客户通常不愿意等待很长时间,就想得到可正确实现的理想解决方案。因此,软件开发人员常常被迫快速完成某些工作,而这可能会导致攻击,技术债务和文档缺乏,所有这些都可能会造成更多令人头痛的问题,特别是对于那些将来不得不处理这些代码的程序员而言。

7、断网、断电、内存不足

如果有一天突然代码写到一半,眼看就快要完工了,突然一下就断电,代码没保存。你会不会是上述的这个表情呢?虽然大学时候老师就教过我们写代码记得保存,但是你总是防止不了意外(笔记本除外)。不过这种事情碰到的概率还是比较低的,也没见过那个程序员吃过这种教训的亏。

8、整天坐着

除非你有带跑步机的办公桌,否则软件开发肯定不会是一个有氧活动。大多数程序员往往长时间地坐着,蜷缩在键盘上,盯着他们的计算机显示器。虽然说坐着比站着舒服,但总是这么坐着,坐久了就会变得很不舒服。这也是一件令人崩溃的事。

当程序员面对 Bug 的时候,如何机智甩锅?

当你面对 Bug 时,切勿慌张,以下措施教你轻松应对 Bug 带来的困扰。

1.打死不承认,这代码不是我写的,将锅甩出去。

2.睁眼说瞎话,在我电脑上是正常的呀,超级无辜,赚取同情分。

3.对方使用了错误的打开方式。

一定是对方的打开方式不对,重新打开试试,我神马都不知道

4.痛斥产品经理一顿,自己偷偷改好,气势不能弱,立场要坚定,迅速进入角色,完全没有 Bug 这回事,我就是王道。

以上模式可任意切换使用,但最终都逃不了,自己背地里偷偷,改 Bug 的宿命。

当然,程序员并没有太多时间去崩溃,因为还有很多班等着他们去加,很多需求等着他们去实现,很多锅等着他们去背。

2018年在加班和需求中过去了,程序员们的发际线又后退了些许,格子衫又新添了几件,而2019年会怎么样呢?

希望2019年能对程序员好一点吧。

欢迎加入  51软件测试大家庭,在这里你将获得【最新行业资讯】,【免费测试工具安装包】,【软件测试技术干货】,【面试求职技巧】... 51与你共同学习,一起成长!期待你的加入: QQ                     群:                    755431660

posted @ 2019-04-03 17:28 51testing 阅读(70) | 评论 (0) | 编辑 收藏
 
技术干货丨如何在Docker环境下搭建测试管理平台?

容器技术是目前热门话题之一,在许多互联网公司已有实际应用,对于测试者来讲需要我们主动迁移测试管理环境适应新变化。

本文将介绍如何在CentOS 7 + Docker环境中部署和配置Testlink1.9 + Mantis。


本次环境搭建操作系统选用互联网公司主流Linux系统CentOS7,容器环境选择Docker1.12。而Testlink想必测试人员都不算陌生,这是一款开源的web测试管理工具,它不仅提供了测试需求、测试设计、测试执行和测试结果分析的管理过程,而且还能和常见的Bug跟踪工具协同工作。本次我们将介绍Testlink和Mantis缺陷跟踪系统的集成,该工具很好的平衡了产品的易用性和功能的复杂度,使我们上手变得更容易。

第一部分:环境准备

首先需要在CentOS 7系统中安装Docker engine,如果已经安装,可以跳过1)2)3)4)步。

1) 从yum仓库安装docker engine

# yum install -y docker

2) 启用docker服务

# systemctl enable docker

3) 启动docker服务

# systemctl start docker

4) 查看docker服务的运行状态

# systemctl status docker

5) 使用docker pull命令拉取需要的镜像。由于testlink和mantis都需要存储相关数据,所以这里可以看到还拉取了一个mysql镜像。

# docker pull bitnami/testlink:1.9.16-r8

# docker pull vimagick/mantisbt

# docker pull mysql:5.7.20

6) 使用docker network命令中创建一个新的容器网络,可以命名为testlink-tier。这样接下来创建的mysql, testlink和manties容器将会链接到这个网络上。

# docker network create testlink-tier

第二部分:Testlink安装

7) 然后用下面的命令依次启动mysql数据库服务容器,testlink容器。

# docker run -d --name mysql-testlink \

--net testlink-tier \

-v ~/testlink/db:/var/lib/mysql \

-e MYSQL_ROOT_PASSWORD=p@ssw0rd \

-e MYSQL_ROOT_HOST=% \

-e MYSQL_DATABASE=testlinkdb \

mysql:5.7.20

8) 上面的命令中我们创建了一个mysql容器,设定root账户密码为p@ssw0rd,创建了一个名为testlinkdb的数据库,并允许root通过任何地址链接该mysql服务,并且链接到之前创建的testlink-tier容器网络。

9) 接下来用下面的命令启动testlink容器。通过mysql容器的name (mysql-testlink)连接数据库服务。

# docker run -d -p 8000:80 -p 8443:443 --name testlink \

-e MARIADB_USER=root \

-e MARIADB_PASSWORD=p@ssw0rd \

-e MARIADB_HOST=mysql-testlink \

-e MARIADB_PORT_NUMBER=3306 \

--net testlink-tier \

--volume ~/testlink/data:/bitnami/testlink \

--volume ~/testlink/apache:/bitnami/apache \

--volume ~/testlink/php:/bitnami/php \

bitnami/testlink:1.9.16-r8

10) testlink容器启动后,通过docker logs查看testlink启动是否正常。

# docker logs testlink

如果一切正常,log中会显示类似下面的信息.


11) 然后在浏览器中打开http://<host>:8000 (其中host为docker engine所在的机器ip或者域名)

登录信息如下:默认用户名:user,默认密码bitnami ,如下图所示:


第三部分:Mantis安装

12) 接下来准备启动mantis容器,首先需要使用下面的命令启动一个新的mysql容器。

# docker run -d --name mysql-mantis \

--net testlink-tier \

-v ~/mantis/db:/var/lib/mysql \

-e MYSQL_ROOT_PASSWORD=p@ssw0rd \

-e MYSQL_ROOT_HOST=% \

-e MYSQL_DATABASE=bugtracker \

-e MYSQL_USER=mantisbt \

-e MYSQL_PASSWORD=mantisbt \

mysql:5.7.20

13) 启动mantis容器

# docker run -d -p 8001:80 --name mantis \

--net testlink-tier \

vimagick/mantisbt:latest

14) 然后在浏览器中打开http://<host>:8001/admin/install.php (其中host为docker engine所在的机器ip或者域名)会进入初始安装界面,在下图中填入处填入对应的内容:


以下是对填写内容的简单说明:


15) 完成后点击Install/Upgrade Database按钮完成安装, 在浏览器中打开http://<host>:8001/即可登录Manits。

初始登录信息: 用户名: administrator 密码: root


第四部分:在Testlink中添加Mantis

在Testlink的Issue Tracker Management中可以添加Mantis接口(db模式)进行集成,如下图所示:


注意上图中的uriview和uricreate节点中的ip地址和端口需要与mantis容器的运行host ip以及端口匹配。

至此就完成了在CentOS 7的docker环境中部署testlink + mantis。

欢迎加入  51软件测试大家庭,在这里你将获得【最新行业资讯】,【免费测试工具安装包】,【软件测试技术干货】,【面试求职技巧】... 51与你共同学习,一起成长!期待你的加入: QQ                     群:                    755431660

posted @ 2019-04-02 17:27 51testing 阅读(95) | 评论 (0) | 编辑 收藏
 
点击查看:程序员式愚人节,一般人真看不懂!

今天就是愚人节了,

不好意思,

这次愚人节真的要上班,

真的不会放假!


愚人节是个幽默狂欢的日子,愚人节是个充满陷阱与欢乐的日子,在这一天朋友将变得“不再可信”,不看谁更真,就看谁的套路深!大家走过这世界上最长的路一定是愚人节的套路,俗话说先下手为强,后下手遭殃,赶紧准备好姿势,程序员式愚人节,你敢来挑战吗?

整蛊技能Get起来√










答案在这里:

图1:一个也不要,因为这是硬件问题

图2:仔细拿笔算一下,是4100

图3:继承

图4:因为 Oct 31 == Dec 25

哈哈哈,恭喜你已经掌握【程序员式愚人节整蛊秘籍】中最厉害的套路,赶快使用起来吧!当然啦,愚人节是一个非常愉快又充满刺激的节日!大家玩笑归玩笑,千万不要伤了彼此间的感情哦!

posted @ 2019-04-01 17:32 51testing 阅读(112) | 评论 (0) | 编辑 收藏
 
Python简直是万能的,这5大主要用途你一定要知道!

从2015开始国内就开始慢慢接触Python了,从16年开始Python就已经在国内的热度更高了,目前也可以算的上"全民Python"了。

众所周知小学生的教材里面已经有Python了,国家二级计算机证也需要学习Python了!

因为Python简单、入门快,是不少程序员入门的首选语言。


如果你想学Python,或者你刚开始学习Python,那么你可能会问:“我能用Python做什么?”

这个问题不好回答,因为Python有很多用途。

但是随着时间,我发现有Python主要有以下五大主要应用:

一、Web开发

Python的诞生历史比Web还要早,由于Python是一种解释型的脚本语言,开发效率高,所以非常适合用来做Web开发。

Python有上百种Web开发框架,有很多成熟的模板技术,选择Python开发Web应用,不但开发效率高,而且运行速度快。

常用的web开发框架有:Django、Flask、Tornado 等。

许多知名的互联网企业将python作为主要开发语言:豆瓣、知乎、果壳网、Google、NASA、YouTube、Facebook……

由于后台服务器的通用性,除了狭义的网站之外,很多App和游戏的服务器端也同样用 Python实现。

二、网络爬虫

许多人对编程的热情始于好奇,终于停滞。

距离真枪实干做开发有技术差距,也无人指点提带,也不知当下水平能干嘛?就在这样的疑惑循环中,编程技能止步不前,而爬虫是最好的进阶方向之一。

网络爬虫是Python比较常用的一个场景,国际上,google在早期大量地使用Python语言作为网络爬虫的基础,带动了整个Python语言的应用发展。以前国内很多人用采集器搜刮网上的内容,现在用Python收集网上的信息比以前容易很多了,如:

从各大网站爬取商品折扣信息,比较获取最优选择;

对社交网络上发言进行收集分类,生成情绪地图,分析语言习惯;

爬取网易云音乐某一类歌曲的所有评论,生成词云;

按条件筛选获得豆瓣的电影书籍信息并生成表格……

应用实在太多,几乎每个人学习爬虫之后都能够通过爬虫去做一些好玩有趣有用的事。

三、人工智能

人工智能是现在非常火的一个方向,AI热潮让Python语言的未来充满了无限的潜力。现在释放出来的几个非常有影响力的AI框架,大多是Python的实现,为什么呢?

因为Python有很多库很方便做人工智能,比如numpy, scipy做数值计算的,sklearn做机器学习的,pybrain做神经网络的,matplotlib将数据可视化的。在人工智能大范畴领域内的数据挖掘、机器学习、神经网络、深度学习等方面都是主流的编程语言,得到广泛的支持和应用。

人工智能的核心算法大部分还是依赖于C/C++的,因为是计算密集型,需要非常精细的优化,还需要GPU、专用硬件之类的接口,这些都只有C/C++能做到。

而Python是这些库的API binding,使用Python是因为CPython的胶水语言特性,要开发一个其他语言到C/C++的跨语言接口,Python是最容易的,比其他语言的门槛要低不少,尤其是使用Cython的时候。

四、数据分析

数据分析处理方面,Python有很完备的生态环境。“大数据”分析中涉及到的分布式计算、数据可视化、数据库操作等,Python中都有成熟的模块可以选择完成其功能。对于Hadoop-MapReduce和Spark,都可以直接使用Python完成计算逻辑,这无论对于数据科学家还是对于数据工程师而言都是十分便利的。

五、自动化运维

Python对于服务器运维而言也有十分重要的用途。由于目前几乎所有Linux发行版中都自带了Python解释器,使用Python脚本进行批量化的文件部署和运行调整都成了Linux服务器上很不错的选择。Python中也包含许多方便的工具,从调控ssh/sftp用的paramiko,到监控服务用的supervisor,再到bazel等构建工具,甚至conan等用于C++的包管理工具,Python提供了全方位的工具集合,而在这基础上,结合Web,开发方便运维的工具会变得十分简单。

六、Python的其他应用举例

系统编程:提供API,能方便进行系统维护和管理,Linux下标志性语言之一,是很多系统管理员理想的编程工具。

图形处理:有PIL、Tkinter等图形库支持,能方便进行图形处理。

数学处理:NumPy扩展提供大量与许多标准数学库的接口。

文本处理:Python提供的re模块能支持正则表达式,还提供SGML,XML分析模块,许多程序员利用Python进行XML程序的开发。

数据库编程:程序员可通过遵循PythonDB-API(数据库应用程序编程接口)规范的模块与MicrosoftSQLServer,Oracle,Sybase,DB2,MySQL、SQLite等数据库通信。Python自带有一个Gadfly模块,提供了一个完整的SQL环境。

网络编程:提供丰富的模块支持sockets编程,能方便快速地开发分布式应用程序。很多大规模软件开发计划例如Zope,Mnet及BitTorrent.Google都在广泛地使用它。

Web编程:应用的开发语言,支持最新的XML技术。

多媒体应用:Python的PyOpenGL模块封装了“OpenGL应用程序编程接口”,能进行二维和三维图像处理。PyGame模块可用于编写游戏软件。

黑客编程:Python有一个hack的库,内置了你熟悉的或不熟悉的函数,但是缺少成就感。

七、总结:

看到这么多应用场景是不是觉得Python非常厉害,但是Python通常不作为工程语言出现,换言之正规的软件生产不使用它,主要用java, c#, xml, c,至于为什么,因为这是软件工程的需要。

而且Python不具有完整的语法检查,但这也不影响Python现在的地位,因为Python入门快,简单,学习成本相对低,有很丰富的支持库可以被直接调用以高效地完成不同需求的工作,所以越来越多的人开始加入Python大军。

Python简单易懂的语法,使Python成为最适合初学者使用的语言,即使不是程序员,学会Python,也可以大大提升工作效率。

欢迎加入  51软件测试大家庭,在这里你将获得【最新行业资讯】,【免费测试工具安装包】,【软件测试技术干货】,【面试求职技巧】... 51与你共同学习,一起成长!期待你的加入: QQ                     群:                    755431660

posted @ 2019-04-01 17:27 51testing 阅读(102) | 评论 (0) | 编辑 收藏
 
金融软件测试前景分析,与其他软件测试的5大区别!

金融行业是国民经济发展的重中之重,直接关系到国家产业经济发展的稳定性。金融业软件测试作为整个金融产品生产周期中重要的一个环节,起着重要作用,尤其是对金融产品创新和风险控制等方面有着不可或缺的作用。


一、金融业软件测试主要特点

金融业软件系统具有集中度高、规模庞大、耦合性强、业务复杂、需求变化快等特点,这就要求金融业软件测试要比一般行业成熟度更高。

金融业软件测试的主要特点如下:

1.重视产品质量,有较完善的测试体系和测试工具。

2.测试组织规模相对较大,外包人员在总体人员中占比较高。

3.测试团队既要懂复杂的金融业务,又要懂专业的测试技术。

4.愿意探索新的测试方法,不断优化测试工作和测试流程。

二、金融行业软件测试的现状

根据某项调查,金融企业应用系统的数量,中小银行应用系统数量普遍在100个左右,有一半银行超过100个应用系统;虽然保险行业应用系统数量相对较少,但大部分保险公司拥有10-50个应用系统;而且这些数量还有进一步上涨的趋势。调查数据也表明,金融行业IT部门的测试能力目前远远低于金融机构对测试的要求。即使是IT成熟度比较高的企业,也难以覆盖所有应用系统的测试需求。金融企业的测试需要和信息科技部门的测试能力之间存在一定的差距。

三、金融测试常用的测试工具

无论作为内部测试或第三方测试,都必须采用一些自动化的测试工具来进行测试的管理和执行。测试工具主要包含以下几类:

1)测试管理工具

如:Test Director、Quality Center、Clear Quest。 

2)性能测试工具

如:Load Runner及第三方自己开发的性能测试工具。

3)自动化测试工具 

如:QARun、QTP

四、金融软件测试常见面试题

1、网上银行转账是怎么测的,设计一下测试用例。

回答思路:宏观上可以从质量模型(万能公式)来考虑,重点需要测试转账的功能、性能与安全性。设计测试用例可以使用场景法为主,先列出转账的基本流和备选流。然后设计场景,最后根据场景设计数据。实际面试中需要举出具体的例子。

1)先检查界面。

2)再测试功能:

[if !supportLists]u [endif]验证同行转账,跨行转账。

[if !supportLists]u [endif]验证转账限额。

[if !supportLists]u [endif]验证非法账户(挂失,冻结,锁定的账户)的转账。

3)在测试性能方面的。

2、定期存款到期自动转存该怎么测?

回答思路:到期肯定会有边界,所以设计里面可以考虑边界值法。自动转存(首先要搞清楚什么是自动转存。)

3、存钱该怎么测,用什么测试方法

准备思路:存钱要分类:活期、零存整取等(具体规则百度下),然后根据每类的业务规则选择合适的用例设计方法。譬如一次最少存入多少?最多一次能存入多少等。

4、实名认证你们是怎么测得?调取什么平台的资料?

实名认证接口:

1)银行卡实名认证(调用银行接口,验证卡号,姓名,身份证号码,手机号码。需要利用到手机接收到的验证码)

2)身份证实名认证(全国公民身份证号码查询服务中心,或者直接说公安接口)

5、你所熟悉的linux命令

linux:cat,more,less,head -n,tail -n,find ,| grep,ps -ef,tar,gzip,mv,cp,touch,mkdir,vi,top

也可以结合搭建环境的过程说用到的命令。

6、你们也测试后台管理吗?个人芝麻信用积分是调取哪里的资料?

测试后台管理:

1 后台也测,但是我主要测试前台,我的关注点是前台,后台只是拿来用,能配合前台正常走完流程就行。

2 后台主要对前台进行管理,主要有贷款管理,资金管理。

贷款管理:可以查看投资人的投资情况,也可以查看借款人的借款产品,对借款产品进行管理。比如审批,每期的还款提醒,预警等。

资金管理:管理查看用户的充值,审批用户的提现过程。

芝麻信用积分:调用的是支付宝的接口,芝麻信用:调用的是支付宝那边的接口(支付宝提供这样的芝麻信用服务,每查一次收取大概0.1元)

五、总结:

金融软件测试与其他软件测试有不同的之处,如下:

第一:金融软件的测试算法是测试的核心,验证测试数字在不同的场合条件下,一定要保证数据的准确性。

第二:与外部存管银行的各种接口数据的准确,稳定,安全。

第三:金融软件在整个业务过程中涉及到很多合同相关的内容的测试,合同上甚至连一个文字,一个空格都要测试到。

第四:运营报表,整个数据是给老板看的一定要保持计算和统计数据的准确性。

第五:和其他软件测试流程一样,保证业务的逻辑要正确无误。

欢迎加入  51软件测试大家庭,在这里你将获得【最新行业资讯】,【免费测试工具安装包】,【软件测试技术干货】,【面试求职技巧】... 51与你共同学习,一起成长!期待你的加入: QQ                     群:                    755431660

posted @ 2019-03-29 17:27 51testing 阅读(109) | 评论 (0) | 编辑 收藏
 
软件测试证书有用吗?教你一次性拿下ISTQB证书的秘籍!

问题一、ISTQB是什么?

ISTQB® 是国际唯一权威的软件测试资质认证机构,主要负责制订和推广国际通用资质认证框架,即“国际软件测试资质认证委员会推广的软件测试工程师认证”项目。

ISTQB® 目前拥有58个分会,覆盖包括美国、德国、英国、法国、印度等在内的120多个国家和地区。

截至目前全球范围内参加过ISTQB® 认证的软件测试工程师近830,000人,并每季度以超过50,000人的速度递增,使得ISTQB® 为测试行业的第一大认证机构。


问题二、ISTQB有哪些分类?

ISTQB®-Certified Tester 是一个基于全球统一标准规范、统一术语大纲的培训及认证体系。

它分为三个级别:

基础级/Foundation Level(CTFL)

高级/Advanced Level(CTAL)

专家级/Expert Level(CTEL)


高级/Advanced的又分成测试经理/Test Manager、测试分析师/Test Analyst、测试技术分析师/Test Technical Analyst三类,三类的考试是分开的,三类之间没有任何关联关系。

通过初级/Foundation、测试经理/Test Manager、测试分析师/Test Analyst、测试技术分析师/Test Technical Analyst任何一个考试,颁发相应的证书,但是如果想靠高级的,必须通过初级的考试。

认证特色

权威性:全球专家的智慧结晶,持证人数超过470,000;

国际性:全球统一标准规范,统一术语大纲,证书在其成员国内通用;

完整性:三个级别覆盖软件测试工程师完整职业生涯;

公正性:不隶属于任何团体与个人的第三方认证机构。

认证收益

熟练掌握软件测试核心技术、管理、流程和方法;

全面理解基于最佳实践的软件测试高级管理、技术和方法;

提高专业人员技术设计、组织和管理的技能;

通过认证考试的学员,将获得全球认可的ISTQB®证书;

全面的职业生涯规划,为职场发展添砖加瓦。

问题三、ISTQB有用吗?

一个有牌子的商品,总比没牌子的可信度高些;但是有牌子的商品,质量就一定比没牌子的商品质量好吗?不一定。ISTQB就像是一个牌子,有了这个认证,找工作时,可以拿来当叩门砖,当然如果能力就那么回事,有叩门砖也没啥用。

还有就是欧美企业可能比较熟悉ISTQB,其他企业也不一定知道ISTQB。现在ISTQB在中国的普及度不高,含金量还是比较高的,所以高级的考试应该还是蛮有用的。

问题四、ISTQB考试通过秘籍

下面奉送考试通过秘籍,由我个人验证过的秘籍。

秘籍一、看大纲,不管哪个级别的考试,都需要看大纲,因为试题是根据大纲出的,所以看大纲没错的。考初级的时候,我是什么都没看,就听听课,就过了,因为那会我在软件测试行业已经三年多了。高级考试的时候,老师反复强调要看大纲,看的人都通过了,而且分数还不低。

秘籍二、如果老师在教学的时候给一些习题做,不同意给大家拷贝拍照等,那大家注意了,这极有可能就是真题,一定记得要多看看。

问题五、考试期间答题秘籍

1)前面23道题左右的样子,考的是大纲里面的,非常简单,只需要你理解+记忆就能做;

2)语句覆盖,判定覆盖,以及覆盖率的计算最难,建议先把简单的做了之后在来这些题;

3)其他的都是大纲上有的,或者考得稍微灵活一点,把大纲上的做了一点变动,不过换汤没有换药;

4)不要存在侥幸,可以抄,全程摄像,正对两人的中间有植物遮挡,左右两边离了很远;

欢迎加入  51软件测试大家庭,在这里你将获得【最新行业资讯】,【免费测试工具安装包】,【软件测试技术干货】,【面试求职技巧】... 51与你共同学习,一起成长!期待你的加入: QQ                     群:                    755431660

posted @ 2019-03-28 17:43 51testing 阅读(122) | 评论 (0) | 编辑 收藏
 
软件测试员必备:面试时常问的15个MySQL数据库查询语句

一、什么是数据库?

数据库是按照数据结构来组织、存储和管理数据的仓库,每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据。

我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。

所以,现在我们使用关系型数据库管理系统来存储和管理的大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。


关系数据库管理系统(RDBMS)的特点:

1.数据以表格的形式出现

2.每行为各种记录名称

3.每列为记录名称所对应的数据域

4.许多的行和列组成一张表单

5.若干的表单组成database

如今已有许多商业关系数据库管理系统,如Oracle,IBM DB2和Microsoft SQL Server等。

也有许多免费的开源关系数据库,如MySQL,mSQL(mini-SQL)和嵌入式JavaDB(Apache Derby)等。

二、MySQL数据库


1、定位:

开源、多平台、关系型数据库

目前使用最广泛、流行度最高的的开源数据库。

2、特点:

功能:支持事务,符合关系型数据库原理,符合ACID,支持多数SQL规范,以二维表方式组织数据,有插件式存储引擎,支持多种存储引擎格式

部署:用编译安装的方式,或者二进制包的方式,按照“安装软件-创建实例-库表用户初始化”,可以很快完成数据库部署。

使用:使用标准的SQL语句进行数据库管理,简单SQL语句的并发和性能较好,对视图、存储过程、函数、触发器等支持的不是太好

监控:在命令行界面有一些常用的命令显示状态和性能,在图形界面方面,有比较多的开源监控工具来监控和记录数据库的状态,比如zabbix,nagios,cacti,lepus等

备份:逻辑备份 mysqldump/mysqldumper ,物理备份 用xtrabackup等工具进行备份;

高可用:MySQL高可用有多种方案,官方有基础的master-slave主从复制,新版本的innodb cluster,第三方的有MHA等高可用方案;

扩展:MySQL水平拆分,可以通过水平拆分proxy中间进行逻辑映射和拆分,扩大MySQL数据库的并发能力和吞吐量。

3、适用场景:

默认的innodb存储引擎,支持高并发,简单的绝大部分OLTP场景;

Tokudb存储引擎,使用高并发insert的场景;

Inforbright存储引擎,可以进行列压缩和OLAP统计查询场景;

4、选择注意:

使用MySQL进行OLTP业务时,需要注意数据量级,如果数据量级过大,需要进行水平拆分;

如果有OLAP需求,可以结合其他架构综合考虑。

三、测试人员面试:必问的 MySQL 查询语句

1、查看当前使用的是哪个数据库

mysql> select database();

另外,在下面2个语句的输出里也能看出当前库是哪一个

mysql> show tables;

mysql> status;

2、查看MySQL版本和状态

mysql> select VERSION();

mysql> status;

3、查看MySQL实例的当前状态(参数形式)

mysql> show status;

4、查看MySQL实例的参数

mysql> show variables;

查看最大连接数

mysql> show variables like '%max_connections%';

5、查看MySQL实例当前的进程

mysql> show processlist;

6、查询所有数据

select * from Info 查所有数据

select Code,Name from Info 查特定列

7、根据条件查

select * from Info where Code='p001' 一个条件查询

select * from Info where Code='p001' and Natio n='n001' 多条件 并关系 查询

select * from Info where Name='胡军' or Nation='n001' 多条件 或关系 查询

select * from Car where Price>=50 and Price<=60 范围查询

select * from Car where Price between 50 and 60 范围查询

8、模糊查询

select * from Car where Name like '%型' %通配符代表任意多个字符

select * from Car where Name like '%奥迪%' _通配符代表任意一个字符

select * from Car where Name like '_马%'

9、排序

select * from Car order by Price asc 按照价格升序排列

select * from Car order by Price desc 按照价格降序排列

select * from Car order by Price,Oil 按照两列进行排序,前面的为主要的

10、统计函数(聚合函数)

select count(Code) from Car 查询表中有多少条数据

select max(Price) from Car 取价格的最大值

select min(Price) from Car 取价格的最小值

select sum(Price) from Car 取价格的总和

select avg(Price) from Car 取价格的平均值

11、分组查询

select Brand from Car group by Brand having count(*)>2 查询所有系列中数量大于2的

12、分页查询

select * from Car limit 0,5 跳过几条数据取几条数据

13、去重查询

select distinct Brand from Car

14、查询建库、建表语句

mysql> show create database dbname;

指定库后才能查询建表语句

mysql> show create table tablename;

15、查询指定表的字段属性

mysql> show full columns from tablename;

或者

mysql> show full fields from tablename;

欢迎加入  51软件测试大家庭,在这里你将获得【最新行业资讯】,【免费测试工具安装包】,【软件测试技术干货】,【面试求职技巧】... 51与你共同学习,一起成长!期待你的加入: QQ                     群:                    755431660

posted @ 2019-03-27 17:31 51testing 阅读(265) | 评论 (0) | 编辑 收藏
 
仅列出标题
共55页: First 6 7 8 9 10 11 12 13 14 Last