软件测试复习文档

相关文档 软件测试定义 1.软件测试是为了发现错误。 2.软件测试应尽可能早的进行测试。 3.软件测试对象包括代码、文档、 数据。 4.软件测试的原则不包括能穷举各种情况。 5.回归测试是为了测试由于修正缺陷而更新的应用程序,以确保彻底修正了上一个版本的缺陷,并且没有引入新的软件缺陷。 6.单元测试是对软件的最小可测试单元的检查与验证。 7.测试用例包括_测试用例的编号,_测试用例的名称,输入数据,_操作步骤和预期输出结果。 8.从是否运行测试的角度可将软件测试分为动态测试和静态测试 。 9.测试不是调试的一个部分。 10.代码评审是检查源代码是否达到模块设计的要求。 11.测试是证明软件正确的方法。 白盒测试 12.在白盒测试中,(程序中存在很多判定条件,不可能实现100%的条件覆盖)( X) 13.对于逻辑表达式((a&b)||c),需要2 个测试用例才能完成条件组合覆盖。 14.逻辑覆盖法包括分支覆盖、修正条件判定覆盖、语句覆盖,不包括需求覆盖. 15.如果某测试用例集实现了某软件的路径覆盖,那么它一定同时实现了该软件的判定覆盖. 16.使用白盒测试方法时,确定测试数据的依据是指定的覆盖标准和程序的内部逻辑. 17.(a,b,c)=(2,5,8),(-4,-9,-5) 18.白盒测试的逻辑覆盖方法通常有语句覆盖,判定覆盖,条件覆盖,判定-条件覆盖,条件组合覆盖以及路径覆盖 19.环路复杂度公式有V(G)=E-N+2和V(G)=p+1 黑盒测试 20.黑盒测试是一种重要的测试策略,其测试数据来源于软件需求规格说明书 21.黑盒测试不可以覆盖所有代码。 22.黑盒测试的方法:等价类划分、边界值分析、错误推测法。(静态结构分析法)(X) 23.划分软件测试属于白盒测试还是黑盒测试的依据是是否能看到被测原数据。 24.因果图方法最终生成的是决策表。 单元测试 25.单元测试中用来模拟被测模块调用者的模块是驱动模块。 26.单元测试的内容是模块接口测试、局部数据结构测试、独立路径测试。 27.单元测试时,常用的方法是采用白盒测试,辅以黑盒测试。 28.单元测试不可放在编程阶段。 29.自底向上的集成测试策略是首先对模块调用图上的最底层模块进行测试。 30.集成测试不一定要委托第三方进行。 31.大爆炸集成是把所有的模拟一次性集成为一个完整的系统后进行测试,很容易整体测试。 32.软件集成测试分析不包括局部数据结构分析。 33.不属于集成测试的原则:语句覆盖率和分支覆盖率应达到100%。 34.集成测试工作的开始时间是体系结构设计开始。 集成测试是单元测试的基础上将所有模块按照设计要求组装成系统或子系统。 集成测试策略有中自顶向下方法、自底向上和三明治方法。 单元测试时,模拟被调用模块的是桩模块 。 集成测试方案的完成时间是详细设计之前。 单元测试时,调用被测试模块的是驱动模块。 对于严重程序的缺陷,优先级是高优先级。 测试人员验证后认为缺陷已经成功修复,说明缺陷处于关闭状态。 缺陷来源第一大原因是需求分析。 (禅道)是开源测试管理工具。 44.(录制脚本模块)不是自动化测试框架的组成部分。 45.缺陷严重程度可分为致命、严重、重要和较小。 46.测试覆盖率可分为需求覆盖和代码覆盖。 47.测试文档主要由三类组成分别是测试计划、测试用例和测试报告。 48.缺陷关闭,可以重新激活。 49.selenium不能够像页面发送鼠标滚轮操作。 50.selenium使用xpath比css选择器 性能更慢。 51.find_element_by_css_selector是通过css选择器查找网页控件。 52.find_element_by_xpath("…")通过绝对地址定位网页控件以/开头。 53.在浏览器的console要定位input的第1个元素可以使用以下$x(’//input’)[0]命令。 54.Webelement使用text可以获取标签的内容。 简答 1.有一段程序如下,请设计测试用例以满足语句覆盖要求。 if((a>2&&b<3)&&(c>4||d<5)){ statement1;} else{...

Jun 16, 2023 · 2 min · 橘子树谅

关于gpt的Vercel自配置网站

api调用网站 由于原先我是gpt的老用户,注册时送了18💲的api额度(六一试用期结束后我才用了2刀 亏麻)是fork别人现有的项目➕域名+Vercel直接配置的 能调用官方api 调用第三方api —- 第三方官方网站 截止上传博客,我一直在用,不太清楚其中的账号安全问题,迄今没发现异常账号问题。自从api试用到期后,就开始用这个网站了 ,还能看历史记录呢,唯一的缺点可能就是排版不好。 FakeGpt

Jun 12, 2023 · 1 min · 橘子树谅

关于写博客的相关markdown文档的相关操作及使用

前言 由于刚刚才建好这个网站,markdown文本编写的相关规则并不是很熟悉,所以这节博客主要是为了自己熟悉markdown文本,以供日后参考。 一、开始 我使用的是Mac端的Typora,启动很快速,写文档相对方便。hugo博客也可以用相关命令创建新的博客之类的,但我觉得在命令行敲命令只为了创建和初始化博客的相关格式有点麻烦。所以我直接用写完md文件拖拽进Post就行。刚开始写需要写一个格式: title: bolg(博客的相关标题) date:202X-XX-XX(据测试无法用.相隔) Categories: - (归档的相关分类) - tags: - (标签) - 二、Markdown相关使用 关于Markdown Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式。Markdown语法简洁明了、容易掌握,而且功能比纯文本更强,因此写博客使用它,可以让用户更加专注的写文章,而不需要费尽心力的考虑样式,相对于html已经算是轻量级语言,并且Markdown完全兼容html,也就是可以在文章里直接插入html代码。以下相关语法我将以我认为重要顺序先后介绍。 1.代码段插入 ```java 在这里是java的代码段 ``` ```py 在这里是python代码段 ``` 以下是一些相关常用的关键字 语言 关键字 C语言 cpp、c Java Java Shell Bash,shell Javascript js Go Go XML Html C# csharp CSS Css Text Text 示例 int x = 5; int y = 10; int sum = x + y; System.out.println("The sum is: " + sum); 上面是Java代码段。 2.表格插入 | 表头 | 表头 | 回车后自动生成一个表格。另外—会自动阴影下划线自动分隔,感觉有点好用。...

Jun 9, 2023 · 1 min · 橘子树谅

建站历程

初衷 很早就想要弄个人博客了,中间有一段时间有事导致计划被闲置了,只是申请了一个免费域名并解析在Cloudflare。现在有空就把这个计划重置了。 由于我想要尝试的必须是可以在Vercel能够部署的,所以我的选择挺有限的,刚开始尝试了很多其他架构的博客,比如刚开始尝试的jekyll架构的博客,却发现更改背景无果,我想着总不可能用初始模版搭建就完事了吧,黑白的文字和初始样式也太难看了,于是这个架构被我抛弃了,后面又试了Hexo架构,发现还是有很多不满意的地方。 开始尝试 于是我最后忍不了了,问了ChatGpt说:“哪个架构的个人博客比较适合小白?”他很肯定地给了我唯一的答案:Hugo的架构是最适合的。于是我开始找能够在Vercel部署的Hugo模版,有点比较难找,但还是给我找到了唯一一个大佬配置好的能用的比较满意的。 非常推荐,还有他自己的博客网站)。我配置好的网站首页在页脚也标注了。非常感谢🙏。 刚开始直接fork完用vercel部署是没有用的,会显示错误,这是我遇到的第一个问题,具体错误详情我也不想找了,最后了解到需要在原文件根目录下创建一个vercel.json文件,详情如下: { "build": { "env": { "HUGO_VERSION": "xxx"//xxx最好为你本地使用的hugo版本号 } } } ​ OK,接下来就是把作者的一些相关博客和页面的喜好设置更改就行了。看着作者的视频背景好看的不行,我也找了一个,感觉很适合做视频背景,如你所见,现在用电脑端点击首页就可以看见了。于是就去弄图床,去用Gitee+PicGo做图床,图床很成功,但是视频好像就有问题了,当时没用F12检查是什么样的错误,于是就加了原作者的微信。他告诉我他的视频床是用阿里云oss存储的,于是也去开通了阿里云的oss存储,将跨域规则添加了一个*并成功地解决了问题。 末尾 现在博客已经开始正常使用,后面再写一个熟悉MarkDown编辑的博客以熟悉博客的基本编写功能。

Jun 8, 2023 · 1 min · 橘子树谅

博客测试

测试 个人博客终于fork并设置完成,第一篇Markdown文档,回去还要再好好看看markdown的编写规则。最近高考 考生加油。

Jun 7, 2023 · 1 min · 橘子树谅

1.添加与修改 1.改校验规则 2.改表单属性名称 3.数据都在model里 4.写submit方法 编辑修改公用一个: saveOrUpdateEmp() { this.axios .request({ url: "http://localhost:8080/emp", method: this.empno ? "PUT" : "POST", data: this.ruleForm, }) 但是this.empno需要通过上一个页面传过来: handleEdit(row) { this.$router.push({ path:"/toEmp", query:{ empno:row.empno } }); 接收到的页面需要通过以下方法接收: mounted() { // 添加和更新都会调用这个方法 this.empno = this.$route.query.empno; if (this.empno) { this.info(); // 根据id查询 } }, }; 2.嵌套路由 在路由加上children: routes: [ { path: '/', name: 'index', component: index, children: [{ path: '/emp', name: 'emplist', component: empList },{ path: '/toEmp', name: 'emp', component: emp }] }, ] 在主页面加上...

1 min · 橘子树谅