技术文章

这10道测试用例面试题,面试官肯定会问到

浪子不回头ぞ 提交于 2021-02-20 17:14:25
前言 软件测试面试中,测试用例是非常容被问到的一个点,今天小编就给大家把最常见的测试用例方面的问题给大家整理出来,希望对大家的面试提供帮助。 1、 什么是测试用例‍ 答:测试用例的设计就是如何覆盖所有软件表现出来的状态,即在满足输入/输出的一组条件下,软件运行是一系列有次序的、受控制的状态变化过程。 2 设计用例的好处? 答:设计用例的过程可以更深刻的理解需求,熟悉各功能点,保证尽可能全的覆盖到各测试点。也便于用例评审。 3 用例必备4个方面? 答:预置条件、执行步骤、预期结果、测试结果;用例要点:需包括与其他模块耦合关系、用例的级别,考虑哪些需求必须完成,哪些需求可以后续完成。 4 测试用例的设计理念? 答:首先要保证产品的质量,测试用例的数量并不能决定质量的好坏,要做到覆盖全面,提倡高质量的自动化测试。 5 测试用例有哪些设计方法? 答:等价类划分法、边界值分析法、功能图法、错误推测法、因果图法、场景法等。 6 何时开始设计测试用例? 答:需求文档定版后,即可开始陈列测试点和编写测试用例。 7 用例写完,我们要先做什么? 答:先自检,自检完毕,列出有疑惑的点,评审之前,把用例提前发给相关的开发、产品,预留时间告诉他们先看,再统一时间进行评审。 8 什么时候写测试点,什么时候写用例? 答: 1.如果公司只有你一个测试员,就没必要写测试用例了,写测试点,提取关键要素; 2

Spring-JPA中关于Entity继承的问题(上)

僤鯓⒐⒋嵵緔 提交于 2021-02-20 17:12:59
参考资料: https://developer.aliyun.com/article/312873 org.hibernate.WrongClassException:Object with [id=11] was not of the specified subclass: xxxx.entity(loaded object was of wrong class ... 这个错误其实是说,在构建当前的Entity1列表(LIST)的时候,发现该Entity所共用对象的另一个Entity2中,已经存在了id=11的对象,并且Entity1和Entity2的id=11的对象在结构上是不一样的,无法覆盖。 看到这个错误是不是有点蒙,像是在听天书的感觉?其实,这个Exception的本质是和JPA中hibernate的继承映射有关。 当前笔者的项目中,定义了BaseEntity,其中包含了code(编码),name(名称),elementcode(要素的tag)这些通用属性。然后,分别定义了Entity1和Entity2,且都集成自BaseEntity。Entity1和Entity2的的elementcode返回的内容不一样。举例子来描述的话,就相当于两组不同的字典要素,一个是桌子(Entity1,elementcode=桌子),一个是椅子(Entity2,elementcode=椅子)

我的第18个代码

|▌冷眼眸甩不掉的悲伤 提交于 2021-02-20 17:09:34
我的第十八个代码 #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main() { int a = 1; int ret = 1; int n = 1; int sum = 0; for (n = 1; n <= 10; n++) { ret = 1; for (a = 1; a <= n; a++) { ret = a*ret; } sum = ret + sum; } printf("%d\n", sum); return 0; }//计算1!+2!+3!……10!的结果 int main() { int a = 1; int ret = 1; int n = 1; int sum = 0; for (n = 1; n <= 10; n++) { ret = ret*n; sum = ret + sum; } printf("%d\n", sum); return 0; }//计算1!+2!+3!……10!的结果(对上面代码的优化) 来源: 51CTO 作者: 大圣? 链接: https://blog.51cto.com/15100722/2633206

区块链溯源系统平台深圳区块链溯源系统

心已入冬 提交于 2021-02-20 16:57:15
  区块链溯源系统是建立于区块链技术之上结合溯源来完成的系统操作,区块链溯源具有溯源本身的特性,溯源在早期,利用互联网和大数据来进行,进行货物商品的防伪假劣,溯源的原理都是一样的,经过某个编号,去查询全程记载。   区块链+追溯,其实是在传统溯源的基础上,保证了数据不被窜改。   不要以为区块链追溯和普通追溯有什么明显不同,差距只在于,传统追溯的数据在某一台记录上,黑客能够随时去入侵更改。而区块链的溯源数据,每个全节点都有一份。黑客是很难去改动某项记载的。   至于很多人疑心,假设一个冒充产品把真产品的溯源码贴上去,是不是就能绕过防卫机制。其实这里有个概念混杂,溯源不等于防伪。   有些人说区块链溯源是伪需求,由于他们错把防伪的需求强加到了溯源上。   举个例子,每个人都上过学,获得文凭学信网可查。这是学历。假如去追溯一个人的学历,必然会追溯到全过程,即小学毕业于哪个学校,中学毕业于哪个学校,大学毕业于哪个学校。这是学历溯源,更细致的还能够查到成果。   假定,一个很凶猛的黑客,入侵了学信网,改动了某个人的学历。那么他人查的时分,就会发现,这个本来毕业于某个不知名大学的某人,毕业于名牌大学。   但假如学信网是区块链的,全国各地有很多全节点。黑客则很难去窜改数据。这就保证了,你去查询某人的学历(学历溯源),记载都是真实的。   但是,假如张三拿着李四的学历查询报告

官方博文:探讨Filecoin中信誉系统的搭建要素

☆樱花仙子☆ 提交于 2021-02-20 16:55:11
信誉是高效市场中的一个重要组成部分:人们在达成交易之前必须要评估交易对手的质量度和可信度,而Filecoin同样无法避免。Filecoin作为一个协议,其定位是支持用户的不同需求和交互模式。因此,Filecoin上可以有多种信誉系统来满足网络参与者的不同需求。除了提高网络的效率和提供高质量的服务外,Filecoin上多样化、去中心化的信誉系统也能很好地支持用户的新需求。V|jasonbody 去中心化的市场需要多样的信誉系统 所有信誉系统都通过收集 多维度 数据为参与者“评级”。 该 系统对市场运作非常重要。eBay和Uber等平台根据用户反馈构建评级系统,使人们能够在知情的情况下选择购买对象或搭乘对象。有效的信誉系统可以在各方之间建立信任、提高服务质量,并培养用户和服务提供商之间的忠诚度。 对人们来说,无论是存储还是检索数据,都必须能够先对矿工进行基本判断,才能放心交易。 用户需要一种衡量矿工质量的方法, 贷款人和承销商必须能够对他们的可靠性和信用度做出判断。基于 以上 原因,Filecoin上的矿工必须基于与他们合作过的用户的反馈建立信誉。但根据不同但使用场景和用户需求,评分和信誉系统可以采取多种形式。网络参与者会对单一的信誉系统进行博弈。因此,Filecoin上的信誉系统是多样化的,旨在让用户能够表达自己的喜好以促进整个存储提供商提高服务质量。 在11月主网启动周期间

Android开发架构思考及经验总结(下)

我们两清 提交于 2021-02-20 16:53:20
前言 架构设计,到底是什么呢?基于这段时间的学习和自己的一些思考, 我认为架构是基于产品和技术所达成的一种共识 。 我不是专业的架构师,也不是经验老道的开发者。本文目的有三,一是整理这段时间的架构学习和思考以及总结这一年的开发经验教训,二是希望能够与各位朋友探讨移动端App的架构设计,三是希望我们每一个应用开发者能够拥有架构的意识。 个人的水平有限,诸多不对的地方,恳请批评指正。 提示:文中链接需要点击文章末尾处 阅读原文 才能点击。 零、 知识大纲 提示 请先阅读 《Android开发架构思考及经验总结(上)》 五、 技术 前面啰嗦了很多,终于写到这里了。对于一个开发人员来说,怎么做才是我们的关键问题所在。只会Android开发,所以以下只讨论Android。我主要从以下几个方面来谈一谈怎么做这个问题。 1、技术选型 (1)、 开发平台 移动端的开发目前主要是两大阵营Android、IOS,其他的就不多说了。 (2)、 开发工具 编译工具:Eclipse&Ant、AndroidStudio&Gradle,作为Android开发者,目前毫无疑问应该选择AndroidStudio&Gradle; 代码仓库:Git 、SVN ,工具有海龟、AndroidStudio也集成了VCS; Maven仓库:可以使用nexus创建自己的maven私服; 持续集成:Jinkens、Buildbot

js实现照片墙效果

情到浓时终转凉″ 提交于 2021-02-20 16:52:58
本次要实现的是一个照片墙的效果,如下图,很多图片随机的摆放在窗口中,当点击到某一张的时候,该张图片出现出现在窗口的水平垂直居中的位置。 首先,我们需要简单的结构处理图片,为了方便操作,引用了一个js库: underscore.js ,因为图片的数量是不固定的,这里我们采用动态添加的方式生成li,再在li里面添加图片。 <! DOCTYPE html > < html lang ="en" > < head > < meta charset ="UTF-8" > < title ></ title > < style > * { margin : 0 ; padding : 0 ; border : none ; list-style : none ; } html, body, ul { width : 100% ; height : 100% ; } #ps { position : relative ; } #ps li { width : 250px ; height : 360px ; box-shadow : 0 0 10px #000 ; } </ style > </ head > < body > < ul id ="ps" ></ ul > < script src ="js/Underscore-min.js" ></ script > < script >

Java实现树结构数据的递归与非递归遍历

天涯浪子 提交于 2021-02-20 16:52:37
树结构的递归与非递归的遍历 递归在很多情况下我们都会使用,比如著名的汉诺塔问题、二分查找等,有时候我们遍历一棵树形数据结构的数据也会需要用到递归,但并不是绝对。原因是:以递归遍历一棵树型结构的数据为例,递归会不断的调用当前方法,以深度遍历方式沿着一条支路走到底,然后再回来执行下一条支路。这种情况下在调用当前方法之后,编译器将这个方法的所有参数和返回地址压入栈中,在这种情况下当前线程若又去调用了一遍当前这个方法,而当这个支路又足够深,那么积攒起来的栈中内容就会越来越多,直到发生内存溢出。 因此在树形数据结构足够深的时候,我们需要用另一种方法来遍历这些数据,这种方法是通过宽度遍历,从树的顶层开始遍历,遍历完这一层后,遍历下一层,当下一层都遍历到后再遍历下一层,依次继续向下遍历,这种方式可以用while循环来实现。 树形结构的数据的递归遍历的Java伪代码: // 深度遍历代码 TreeNode parent; // 要遍历的顶层节点 pubic void traverse(TreeNode parent) { List<TreeNode> childs = getChilds(parent); // parent的所有直接子节点 if (childs != null) { for (child : childs) { // ------------ // 获取child内容,或其他处理

SpringMVC入门详解及案例

徘徊边缘 提交于 2021-02-20 16:51:27
Spring MVC浅入浅出——不吹牛逼不装逼 前言 上文书说了Spring相关的知识,对Spring来了个浅入浅出,大家应该了解到,Spring在三层架构中主做Service层,那还有Web层,也就是Controller层,这个就由SpringMVC来解决了。SpringMVC是Web层的一个框架,它是Spring的组成部分,可以先看看下面这张图: SpringMVC工作原理 MVC模式在之前我已经写过博客了《 Web开发模式 》,学SpringMVC之前有必要先看一下MVC模式。 SpringMVC框架主要由DispatcherServlet、处理器映射、控制器、视图解析器、视图组成,其工作流程如下: 客户端请求提交到DispatcherServlet; 由DispatcherServlet控制器寻找一个或多个HandlerMapping,找到处理请求的Controller; DispatcherServlet将请求提交到Controller; Controller调用业务逻辑处理后返回ModelAndView; DispatcherServlet寻找一个或多个ViewResolver视图解析器,找到ModelAndView指定的视图; 视图负责将结果显示到客户端。 在SpringMVC工作流程中包含4个SpringMVC接口,即DispatcherServlet

Lambda 表达式 C#

此生再无相见时 提交于 2021-02-20 16:50:55
“Lambda 表达式”是一个匿名函数,它可以包含表达式和语句,并且可用于创建委托或表达式树类型。 所有 Lambda 表达式都使用 Lambda 运算符 => ,该运算符读为“goes to”。 该 Lambda 运算符的左边是输入参数(如果有),右边包含表达式或语句块。 Lambda 表达式 x => x * x 读作“x goes to x times x”。可以将此表达式分配给委托类型,如下所示: delegate int del(int i); static void Main(string[] args) { del myDelegate = x => x * x; int j = myDelegate(5); //j = 25 } 创建表达式树类型: using System.Linq.Expressions; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Expression<del> myET = x => x * x; } } } => 运算符具有与赋值运算符 (=) 相同的优先级,并且是右结合运算符。 Lambda 在基于方法的 LINQ 查询中用作标准查询运算符方法(如 Where )的参数。 使用基于方法的语法在 Enumerable