自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

JSB的博客

编程总结

  • 博客(72)
  • 收藏
  • 关注

原创 小米手机appinum点击(click)元素失效

在测试过程中,遇到这样的情况,能获取到元素,但是点击无效。原因是:在小米手机的开发者选项中,有这样一个选项–>USB调试(安全设置)允许通过USB调试修改权限或模拟点击。把这个选项打开即可。...

2019-09-24 13:07:44 1070 1

原创 vim显示行号

/etc/vimrc最后一行 set nu显示行号

2019-07-21 09:13:16 179

原创 17.提高GUI测试稳定性的关键技术

GUI自动化测试稳定性,最典型的表现形式就是,同样的测试用例在同样的环境上,时而测试通过,时而测试失败。造成GUI测试不稳定的五种因素:非预计的弹出对话框页面控件属性的细微变化被测系统的A/B测试随记的页面延迟造成控件识别失败测试数据问题对于这几种因素的解决思路:非预计的弹出对话框非预计的弹出对话框一般包含两种情况:GUi自动化测试用例执行过程中,操作系统弹出的飞鱼级...

2019-03-24 13:52:03 353

原创 16.GUI测试随记

页面对象自动生成页面对象模型的开发和维护是一件耗费时间和体力的事。页面对象自动化生成技术,它非常适用于需要维护大量页面对象的中大型GUI自动化测试项目。页面对象自动化生成技术,属于典型的“自动化中的自动化”的应用场景。它的基本思路是,你不用再手工维护Page Class了,只需要提供Web的URL,它就会自动帮你生成这个页面上所用控件的定位信息,并自动生成Page Class。需要注意的是...

2019-03-22 15:35:20 181

原创 15.GUI自动化过程中的测试数据

为了顺利进行GUI测试,往往需要准备测试数据来配合测试的进行,如果不采用事先数据准备的方式,测试效率将会大打折扣,而且还会引入大量不必要的依赖关系。GUI测试中两种常见的数据类型:一、 测试输入数据,也就是GUI测试过程中,通过界面输入的数据。二、 为了完成GUI测试而需要准备的测试数据。也就是我们需要事先准备数据。下面来说说创建测试数据的方法都有哪些:从创建的技术手段来讲,创建测试数...

2019-03-21 16:08:13 412

原创 14.GUI自动化测试中的“业务流程”

如何把控操作函数的粒度?操作函数的粒度是指,一个操作函数到底应该包含多少操作步骤才是最合适的。(如果粒度太大,就会降低操作函数的可重用性;如果粒度太小,也就失去了操作函数封装的意义。)操作函数的粒度到底该如何控制呢?脚本粒度的控制还是有设计依据可以遵循的,即往往以完成一个业务流程(business flow)为主线,抽象出其中的“高内聚低耦合”的操作步骤集合,操作函数就是由这些操作步...

2019-03-21 14:56:16 412

原创 13.脚本与数据的解耦+PageObject模型

数据驱动(Data-driven)若好几个操作中只是数据不同,其他的都相同,也就是每份代码的主题完全一致,只是其中的搜索关键词就和断言的预期结果不同。如果把第一份代码复制好几份,只改掉关键词,那这样做起来是很低效的,也难以维护。那应该怎样处理呢?就是把测试数据和测试脚本分离,也就是说测试脚本只有一份,其中需要输入数据的地方会用变量来代替,然后把测试数据单独放在一个文件中,这个存放测试输入数据...

2019-03-20 17:27:12 227

原创 12.Selenium的实现原理

对于Selenium而言,有V1.0、V2.0、V3.0这三个版本,V1.0和V2.0这两个版本的技术方案是截然不同的,V1.0的核心是Selenium RC,而V2.0的核心是WebDrier。而V3.0相比V2.0并没有本质上的变化,主要是增加了对MacOS的Safari和Windows的Edge的支持,并彻底删除了对Selenium RC的支持。Selenium 1.0的工作原理Sel...

2019-03-20 16:34:16 312

转载 CSDN官方markdown编辑器的使用方法

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Ma...

2019-03-20 15:32:17 191

原创 11.互联网产品的测试策略应该如何设计

传软件产品的测试策略设计通常采用金字塔模型。单元测试:在金字塔最底部,属于白盒测试的范围,通常由开发工程师自己完成,由于越早发现缺陷其修复成本越低,所以传统软件产品的测试策略提倡对单元测试的高投入,单元测试这一层通常都会做得比较“厚”。API测试:在金字塔的中间部分,主要针对的是各模块暴露的接口,通常采用灰盒测试方法。总体来看,API测试用例的数量会少于单元测试,但多余上层的GU...

2019-03-01 11:37:45 499

原创 10.软件测试工程师需要掌握的费测试知识

几个比较重要的,更好地把握测试工作的内涵和外延网站架构的核心知识容器技术云计算技术DevOps思维前端开发技术

2019-03-01 10:57:52 313

原创 9.软件测试工程师的核心竞争力

功能测试工程师(传统测试工程师)测试策略能力对于各种不同的软件测试,能够快速准确地理解需求,并在有限的时间和资源下,明确测试重点以及最适合的测试方法的能力。测试策略能力是需要你在大量实践的基础上潜移默化形成的。测试用例设计能力无论对于什么类型的测试,都能设计出高效地发现缺陷,保证产品质量的优秀测试用例。要做好测试用例设计,不仅需要深入理解被测软件的业务需求和目标用户的使用习...

2019-02-28 10:14:06 209

原创 8.测试计划

一封好的测试计划要包括:测试范围、测试策略、测试资源、测试进度和测试风险预估这五大方面。测试范围测试范围描述的是被测对象以及主要的测试内容。要明确“测什么”和“不测什么”。测试策略简单的说就是要明确“先测什么后测什么”和“如何来测”这两个问题。测试策略会要求我们明确测试的重点,以及各项测试的先后顺序。还要说吗采用什么样的测试类型和测试方法。测试资源通常包括测试人员和测试...

2019-02-27 11:16:40 119

原创 7.如何高效填写软件缺陷报告

缺陷报告是测试工程师与开发工程师交流沟通的重要桥梁,也是测试工程师日常工作的重要输出。一份高效的软件缺陷报告,应该包括缺陷标题、缺陷概述、缺陷影响、环境配置、前置条件、缺陷重现步骤、期望结果和实际结果、优先级和严重程度、变通方案、根原因分析,以及附件这几大部分。缺陷标题缺陷标题通常是别人最先看到的部分,是対缺陷的概括性描述,通常采用“在什么情况下发送了什么问题”的模式。首先,对“什么问...

2019-02-26 12:45:52 262

原创 6.测试覆盖率

测试覆盖率通常被用来衡量测试的充分性和完整性,从广义的角度来讲,测试覆盖率主要分为两大类,一类是面向项目的需求覆盖率,另一类是更偏向技术的代码覆盖率。需求覆盖率需求覆盖率是指测试对需求的覆盖率程度,通常的做法是将没一条分解后的软件需求和对应的测试建立一对多的映射关系,最终目标是保证测试可以覆盖每个需求,以保证软件产品的质量。我们通常采用ALM,Doors和TestLink等需求管理工具...

2019-02-26 11:13:27 413

原创 5.软件开发各阶段都需要哪些自动化测试技术

单元测试的自动化技术用例框架代码生成的自动化有些框架代码应该由自动化工具生成,而不是由开发者手工完成。部分测试输入数据的自动化生成自动化工具盒能够根据不同变量类型自动生成测试输入数据。比如,对于一个函数它的参数是指针,那么测试数据自动生成技术就会为输入参数自动生成“空”和“非空”两个指针。自动桩代码的生成桩代码是用来代替真实代码的临时代码。自动化工具可以对...

2019-01-28 14:34:13 579

原创 4.自动化测试

自动化测试就是把人对软件的测试行为转化为由机器执行测试行为的一种实践。什么样的项目适合自动化 测试?需求稳定,不会频繁变更自动化测试最怕的就是需求不稳定,过高的需求变更频率会导致自动化测试用例的维护成本直线上升。研发和维护周期长,需要频繁执行回归测试如果维护时间短,千辛万苦开发完成的自动化测试可能只用了一两次就不用了,项目就结束了,这样太不划算了。需要在多种平台上重复...

2019-01-27 17:05:58 229

原创 3.如何做好单元测试

首先要必须弄清楚单元测试的对象时代码,以及代码的基本特征和产生错误的原因,然后必须掌握单元测试的基本方法个主要技术手段。代码的基本特征---------------分类处理无论是开发语言还是脚本语言,都会有条件分支、循环处理和函数调用等最基本的逻辑控制,如果抛开代码需要实现的具体业务逻辑,仅看代码结构的话,你会发现所有的代码都是在对数据进行分类处理。每一次条件判定都是一次分类处理,嵌套的...

2019-01-26 13:28:33 485

原创 2.怎样设计好的测试用例

什么是好的测试用例:好的测试用例一定是一个完备的集合,它能够覆盖所有等价类以及各种边界值,而跟能否发现缺陷无关。好的测试用例必须具备以下三个特征:整体完备性:是有效测试用例组成的集合,能够完全覆盖测试需求。等价类划分的准确性:对于每个等价类都能保证只要其中一个输入测试通过,其他输入也一定测试通过。等价类集合的完备性:需要保证所有可能的边界值和边界条件都已经正确识别。最常用的测...

2019-01-08 11:39:31 1017

原创 1.用户登录的测试用例

从功能性、安全性、性能、兼容性上进行测试功能性测试:输入已注册的用户和正确的密码,验证是否登录成功输入已注册的用户名和不正确的密码,验证是否登录失败,并且提示信息要正确输入未注册的用户名和任意的密码,验证是否登录是失败,并且提示信息要正确用户名和密码两者之一为空,验证是否登录失败,并且提示信息正确如果登录功能启用了验证码功能,在用户名和密码正确的前提下,输入正确的验证码,验证是否...

2019-01-04 16:16:22 6119

原创 jsb is not in the sudoers file. This incident will be reported.

我在普通用户下使用sudo命令时,出现了jsb is not in the sudoers file. This incident will be reported.解决步骤:1.使用 su - root 命令切换到root用户下2.因为sudo命令的使用在/etc/sudoers这个里面写着,先给这个文件加写权限, chmod u+w /etc/sudoers3.打开...

2018-11-02 11:47:34 181

原创 E37: No write since last change (add ! to override)

在配置文件时,退出时,wq 和 !q和 q命令都退不出解决方法:直接用ctrl+z退出就行了

2018-11-02 11:28:26 1892

原创 多态以及它的单继承、多继承、菱形继承的对象模型

什么是多态 同一件事物在不同的场景下表现忽的多种形态。不同类的对象对同一消息做出响应,同一消息可以根据发送对象的不同而采用多种不同的行为方式。静态多态 在编译期间,确定程序的行为(确定具体调用哪个函数) 动态多态 程序运行期间,才能确定程序的运行行为 通常,虚函数是动态绑定,非虚函数是静态绑定,缺省参数值也是静态绑定实现动态多态的条件: 1.基...

2018-08-15 11:19:32 310

原创 C/C++内存管理方式

1.栈又叫堆栈,非静态局部变量/函数参数/返回值等,栈是向下增长的。 2.内存映射段是高效的I/O映射方式,用于装载一个共享的动态内存库。用户可使用系统接口创建共享内存,做进程间通信。 3.堆用于程序运行时动态内存分配,堆是向上增长的 4.数据段———存储全局数据和静态数据 5.代码段———可执行的代码/只读常量malloc / calloc /reallo...

2018-08-14 20:09:01 2533 1

原创 类和对象(下篇)

color=gray对象初始化   初始化列表:以一个冒号开始,接着是一个以逗号分隔的数据列表,每个“成员变量”后面跟着一个放在括号中的初始值或表达式。Data (int year = 1990,int month = 1,int day = 1) :_year(year); ,_month(month) ,_day(day){}注意: 每...

2018-08-14 19:45:14 121

原创 类和对象(中篇)

color=gray类的6个默认成员函数 构造函数、拷贝构造函数、析构函数、赋值操作符重载、取地址操作符重载、const修饰的取地址操作符重载构造函数    特殊的成员函数,在创建对象时,由编译器自动来调用,并且在对象的生命周期内只调一次,来完成对象的构造以及初始化。 特性: 1.名字与类型相同 2.没有返回值类型 3.编译器来调(对象构造时,系统自动调...

2018-08-14 00:16:03 570

原创 类和对象(上篇)

类的定义class classname{ //类别:由成员函数和变量组成};//一定注意后面的分号    类中的元素称为类的成员;类中的数据称为类的属性或者类的成员变量,类中的函数称为类的方法或者类的成员函数。 类的成员函数默认就是内联的。 类的访问限定符及封装:1. public成员在类外可以直接访问;2. protected和private成员在类外(在...

2018-08-10 16:06:53 130

原创 命名空间和缺省参数和重载函数和引用和内联函数

* 命名空间 需要使用到namespace 关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。//1. 普通的命名空间namespace N1 // N1为命名空间的名称{// 命名空间中的内容,既可以定义变量,也可以定义函数int a;int Add(int left, int right){return left + right;}}...

2018-08-03 23:28:13 231

原创 其支持输入/输出/追加重定向 的shell

水平有限,只能支持简单的输入/输出/追加重定向。#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<fcntl.h>#include<sys/types.h>#include<sys/stat.h>#include<string....

2018-07-18 16:44:30 426

原创 练习open/read/write/close等文件相关系统调用接口,纵向对比fd与FILE结构体

open#include<stdio.h>#include<stdlib.h>#include<fcntl.h>int open(const char *pathname,int flags);int open(coonst char *pathname,int flag,mode_t mode);pathname:要打开或创建的目标文件fla...

2018-07-18 16:28:46 204

原创 封装fork/wait等操作, 编写函数 process_create(pid_t* pid, void* func, void* arg)

题目描述:封装fork/wait等操作, 编写函数 process_create(pid_t* pid, void* func, void* arg), func回调函数就是子进程执行的入口函数, arg是传递给func回调函数的参数. #include<stdio.h>#include<stdlib.h>#include<unistd.h>#incl...

2018-07-15 17:24:15 257

原创 调研popen/system, 理解这两个函数和fork的区别

popen 是标准c提供的一个管道创建函数,其内部操作主要是创建一个管道,调用fork创建子进程,关闭不需用的文件描述符,调用exec函数族执行popen的第一个参数。然后等到关闭。 #include “stdio.h”  FILE *popen( const char* command, const char* mode )  参数说明:  command:...

2018-07-15 15:57:02 271

原创 进程创建, 等待, 终止. 使用代码实现.

1.fork pid_ t fork(void); 返回值:子进程返回0,父进程返回子进程的id,出错返回-1当一个进程调用fork之后,就有两个二进制相同的进程。而且它们都运行到相同的地方。但每个进程都将开始它们自己的旅程。创建一个进程#include <stdio.h>#include <stdlib.h>#include &lt...

2018-07-15 09:55:34 326

原创 使用代码模拟实现僵尸进程, 孤儿进程的场景.

僵尸进程: 1.僵尸状态是一种比较特殊的状态,当进程退出并且父进程没有读取到子进程退出的返回代码时就会产生僵尸进程 2.僵尸进程会以终止状态保持在进程表中,并且会一直在等待父进程读取退出代码状态 3.所以只要子进程退出,父进程 还在运行,但父进程没有读取子进程状态,子进程进入Z状态#include<stdio.h>#include<stdlib.h&g...

2018-07-15 08:04:40 399

原创 . 调研task_struct结构体, 理解结构体中的各个字段的含义.

标识符pid_t pid; //进程的唯一标识 pid_t tgid; // 线程组的领头线程的pid成员的值 pid是进程的唯一表示,范围是0~32767,可以表示32768个进程。 在Linux系统中,一个线程组的所有线程使用和该线程组的领头线程相同的PID,并被存放在tgid成员中。(线程是程序运行的最小单位,进程是程序运行的基本单位。)进程状态进程亲属...

2018-07-14 22:45:54 255

原创 进程间的通信

匿名管道   int pipe(int fds[]); //失败的返回值是1//fds[0]从管道里读//fds[1]从管道里写举一个例子:(子进程往管道里写,父进程从管道里拿)#include<stdio.h> 2 #include<stdlib.h> 3 #include<unistd.h> 4 #include&

2018-07-12 12:45:36 176

原创 进程的调度算法

在不同环境中调度算法的一些目标: 微软雅黑 所有系统:   公平————给每个进程公平的CPU份额   策略强制执行————-保证规定的策略被执行   平衡————保持系统的所有部分都忙碌 批处理系统:   吞吐量———-每小时最大作业数   周转时间———从提交到终止间的最小时间   CPU...

2018-06-21 11:07:28 499

原创 无法打开内核设备“\\.\Global\vmx86”: 系统找不到指定的文件。是否在安装 VMwar

点击“开始→运行”,在运行框中输入 cmd 回车打开命令提示符,然后依次执行以下命令输入以下的命令并回车 net start vmci net start vmx86 net start VMnetuserif改变vmware几种服务的启动方式为: sc config vmci start= auto sc config vmx86 start= auto sc config...

2018-06-21 09:54:44 4761

原创 多个出口的迷宫,求最短路径

//stack.h#define _CRT_SECURE_NO_WARNINGS#pragma once#include <stddef.h>typedef struct point{ int row; int col;}point;#define SEQ_STACK_SIZE 100typedef struct SeqStack{ po...

2018-06-08 23:34:30 1352

原创 简单迷宫------一个出口

#define _CRT_SECURE_NO_WARNINGS#pragma once#include <stddef.h>typedef struct point{ int row; int col;}point;#define SEQ_STACK_SIZE 100typedef struct SeqStack{ point date[S...

2018-06-08 23:28:36 476

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除