【打卡学习】7/21 review Qlik and learn manual testing

Qlik总结与测试概念学习-7/21

计划:10点前学习测试相关知识,之后继续学习制作报表有关内容。

前言:学习Oracle中的数据,是非常大的冲击,刚开始我连执行的按钮都找了一个小时(PL/SQL Developer),而且被数据量这么大的数据库震撼了好几天,不过现在除了找表费劲点,感觉数据信息好少啊,说句题外话如果都是只满足第一范式,我做表应该能轻松点,TAT。

首先我先默写一下之前能想起来的知识点。

第一个首先我们学习了Oracle中rownum<=10查询前十条信息(与MySQL中limit一样);wm_concat函数,通过group by的方式,将其分组后,对目标进行合并行;case when then end用于条件的合并或者查询数据库的信息想要简化,举例:(数据库中1、苹果2、香蕉3、西瓜,你可转化为1苹果 2其它的形式)当然也可以用于代码方面的简化,举例:(查找字典序等写语句非常复杂的时候也可简化语句);复习了Oracle中常见的查询,迭代查询;当需要跨数据库查询的时候,可以通过前辈们写的函数的方式进行调用,所以说要通过先看函数内部,查找目标传值的对象的方式搜索到需要查找的表(一般是字典序查找)。

第二我们学习了Qlik输入sql语句模块中subfield,TimeStamp等函数进行读入数据信息的处理;使用缓存load关键字;也学了map的方式进行映射;界面模块,主要难点是维度和度量,从绘制结果的角度具体学习了图表中KMI,柱状图,组合图,折线图等,其中表格用的最多(如果需要进行筛选,用筛选表+代码load* inline的方式进行查询的映射);查询语句count({}[id])等;查询筛选条件中if([name] like ‘电*’)red,green的方式进行判定着色。当然学习之余也有很多好玩的模板你可以使用,可以将自己的图表嵌入到具体的网页,也可以做成PPT或者快照。

SP:在学习sql代码的过程中,也会发现比如数据库中表名拼写错误的问题;或者提出自己对于学习过程中的简介,例如对于未来维护人员可能难以看懂Qlik中所写的复杂查询的代码,提出key,value形式的函数检索表示例。

第三复习了测试的部分内容,首先根据地服旅客服务流程模块反馈表,有序号,模块,菜单,子菜单,问题反馈,问题状态,预计解决时间等。然后也看到了当项目(进展到二期)进行需求变更时,需要需求变更原因,具体的设计的模块,原来是什么样子,现在要变更成什么样子,前序条件,流程图,涉及子模块的具体人员,最后签字双方确认的大致过程。

现在是9点50休息10分钟。

10点03继续开始复习。

首先测试基础概念的复习。bug是什么?简单来说是程序和需求不一致,就是bug。具体来说就是当有软件需求说明书且软件需求说明书正确的前提下,软件需求说明书内容与程序不一致就是bug,当没有软件需求说明书的时候,根据用户提出的合理需求与其对比不一致就是bug。

软件测试与调试的区别?主要分为三个,第一人员不同;第二生命周期不同;第三责任不同(黑盒测试VS白盒测试)

需求是什么?需求就是满足用户的合理期望或者正式文档的条件,即分为用户需求和软件需求。例如用户需求是邮箱登录的测试,那对于软件需求就要将其分解为若干个子模块,例如:第一个子模块邮箱登录注册可以分为功能概述,用户角色,前置条件,输入,事件响应流,输出等。

测试用例:步骤描述与期望结果。具体将要学习等价类法,边界值法等。

10点25分复习到这里结束,接下来我们要进入测试的核心内容。

前言:学习知识的过程其实就是螺旋模型,很多东西不需要你一开始就学的那么深,了解什么深层底层原理,因为其实很多知识都是在实践中出来的,就是这些底层的原理你只停留在面试八股文中很难真正学到具体到底做了什么。例如学习String的时候,你非要说底层是个final修饰的char[] value数组,但其实你只需要说String的数据不可被修改其实点到为止即可,跟不必说什么性能StringBuilder,StringBuffer,当你真正用熟练了,原因根本不需要特别去记忆。所以越学习就越发觉得八股文需要背诵,前提是熟悉起来。例如:之前做志愿面试,每次谨言慎行都录取不上,但是你说自己多自我介绍一点,然后说自己什么什么会,说的多一点就能通过,所以说吧,我还是挺反感面试的,毕竟完全不擅长这种模式。

11点15分我们复习刚刚学习的内容,首先随便扫了一眼JVM的栈、程序计数器、堆、方法区,然后我们需要开始学习软件的生命周期。主要分为6步,需求分析,计划,设计,编码,测试,维护。瀑布模型就是加上开始与结束去掉最后运维,最大的优点就是将其结构化了,最大的缺点就是1.0版本所以测试没有贯穿整个生命周期,不能尽早纠正bug,所谓的bug是简单来说是程序和需求不一致……(禁止套娃)。

然后学习了螺旋模型,其实我感觉是立体图形,和我以前小的时候设想人类的发展(在平面)就是一个不断循环的模型,在现在学习了立体模型引入了Z轴,应该就和我以前心中所想的样子映射出的大概就是螺旋模型,所以看到这个模型十分亲切,将刚刚的瀑布模型在每一层循环播放直到结束(游戏里面总说你想到第5层,他已经在第10层了就和这个含义一样)。这个模型下,项目会有很多中间版本,而且引入了其他模型不具有的风险评估,因此非常适用于大型项目,(顺带一提跟小时候想的那个人类发展史是个循环这么大的命题吻合),但是缺点也是因为引入了风险评估等项目管理的各种操作,加大了资金,人员的投入。

增量迭代的概念是又一个学习的内容,增量就好比要画个哆啦A梦,我将哆啦的圆圆的脑袋,圆圆的身子,圆圆的手,依次画好(就是增量);而迭代呢就是先画好哆啦A梦的外形框架,再不断画出哆啦a梦的细节,就是由外箱向内画。

敏捷开发是学习的重点,有很多需要拥抱的开发宣言,核心就是与用户不断进行交互,让用户走进开发,让测试贯穿项目的完整生命周期。每一次迭代都包含了软件生命周期(用户需求,需求分析与系统,设计,编码,测试)。

下午1点40我们继续开始学习。什么是软件测试,验证软件功能是否满足用户的需求。

一个优秀的测试人员所具有的的素质:

核心:1、思维模式:逆向思维;扩展性思维(多个解)

2、能力 沟通能力,文字能力,开发能力,快速学习能力

3、高度的责任感和抗压能力

4、性格 对什么事情都有好奇心,成就感;质疑精神

5、兴趣

质疑精神:学生组织期间,大一我在点心网络文化工作室对”技术至上“的文化产生了怀疑,所以到了大二当我是宣传部的管理者的时候就将阳光助学中心的“家“文化带入到了点心网络文化工作室,将原来以技术至上更贴近企业文化的宣传部变成气氛融洽的一个大家庭,同时积极引导委员在编辑推文之外也能学习其他技能,例如制作邮票,制作简历,玩狼人杀等团建活动;同时也创建了部门规章制度成册,云盘存档等。

敏捷开发中最具有代表性的就是scrum,主要由Product Owner,Scrum master,team组成。

产品经理首先整理user Story产生待做事情backlog(排好优先级),将其中部分的迭代sprint backlog作为接下来几周的待办事情排好优先级,每每日例会有scrum master召集整个team开晨会,主要叙述自己做了什么,遇到了哪些问题,将要完成什么,PO整理后生成新的User Story进行循环。

http://www.woshipm.com/pmd/1583896.html

敏捷开发的核心还是找bug,调整好心态,只是方式上轻文档,轻测试用例,更加注重流程图、自动化测试等;测试人员要多向开发人员了解需求。

接着我们学习V、W模型

V模型主要优点扩展了软件生命周期的测试分为用户需求,需求分析,概要设计,详细设计,编码,单元测试,集成测试,系统测试,验收测试;缺点依然是线性化的特征,并未有使测试贯穿整个生命周期,来降低开发成本。所以W模型,通过开始的时候用户需求时就准备验收测试,需求分析时就准备系统测试,概要设计时就准备集成测试,详细设计时就准备单元测试,大大缓解了这个问题,当然缺点是还是未能打破一个单元完成后才能完成下一个的问题,不适合现在敏捷开发的理念。(耦合度过高)补充:由于继承V模型,所以也要求项目需求不能有大的变更。

规范化配置管理

主要就是针对代码,版本号的管理。举个例子,比如测试人员发现bug,然后开发人员修改后,测试人员检验无bug就关闭缺陷,但是这个bug缺又出现在用户端。原因结果是开发人员忘记提交更新代码了。但是这里如果测试人员能够规范操作就不会发生这样的问题了。


AOP

面向切面编程,Aspect Oriented Programme,其中aspect不能解释为方面,而应该解释为切面,实际上就是一种用预编译和动态代理方式实现在不变更源代码的前提下给程序统一添加功能的技术。

当然最难的可能是与OOP之间的区别,实际上举个百度百科上的例子将雇员封装为一个对象,将权限检查封装为一个切面,两者区别为静态与动态的区别。

https://baike.baidu.com/item/AOP/1332219?fromtitle=%E9%9D%A2%E5%90%91%E5%88%87%E9%9D%A2%E7%BC%96%E7%A8%8B&fromid=6016335&fr=aladdin

Java只提供了单继承,因此具体访问类只能继承这个父类,如果具体访问类还要继承其它父类,比如另外一个如Worker的父类,将无法方便实现。
重用被打折扣,具体访问类因为也包含“锁”状态之类的相关代码,只能被重用在相关有“锁”的场合,重用范围很窄。

仔细研究这个应用的“锁”,它其实有下列特性:
“锁”功能不是具体访问类的首要或主要功能,访问类主要功能是访问数据对象,例如读取数据或更改动作。

“锁”功能其实是这个系统的一个纵向切面,涉及许多类、许多类的方法。如右图:
因此,一个新的程序结构应该是关注系统的纵向切面,例如这个应用的“锁”功能,这个新的程序结构就是aspect(方面)
在这个应用中,“锁”方面(aspect)应该有以下职责:
提供一些必备的功能,对被访问对象实现加锁或解锁功能。以保证所有在修改数据对象的操作之前能够调用lock()加锁,在它使用完成后,调用unlock()解锁。

ct)应该有以下职责:
提供一些必备的功能,对被访问对象实现加锁或解锁功能。以保证所有在修改数据对象的操作之前能够调用lock()加锁,在它使用完成后,调用unlock()解锁。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TRQxzdQp-1595381159669)(assets/锁对象.png)]

你可能感兴趣的:(Qlik,测试)