精华内容
下载资源
问答
  • web测试,APP测试和小程序测试特点
    千次阅读
    2022-03-14 18:27:09

    测试相同点:都是需要按照需求来进行测试

           测试流程是一样的:制定测试计划,设计测试方案,编写测试用例(每一个环节需要进行评审),执行用例
    
           测试的方法是一样的:每个软件都可以手工测试,都可以实现自动化测试;都可以进行白盒测试,也可以进行黑盒测试,还有灰盒测试...
    
           测试分析和设计的方法是一样的:测试分析指的是如何提取测试项:质量模型分析法(单个功能的测试)
                                                                       功能交互分析法(功能和功能之间集成)
                                                                       用户场景分析法 (全业务流程测试)
                                        测试设计方法指的是设计用例的(11种设计方法):等价类、边界值
    
           测试的管理工具:都会使用缺陷管理工具、测试用例管理工具
    

    测试不同点:细节上不一样

                 性能测试 :web 系统:侧重于多用户使用情况下的性能表现 ,比如 淘宝双11、全运会
                           
                            word 系统:关注打开或者保存一个大的文档时的时间,使用word的时候对资源(cpu)消耗情况
    
                 安全性测试:web 系统 :关注来自网络的攻击,信息安全,比如超市的用户数据,收银系统被黑客攻击,盗取,拿去卖钱
    
                             word 系统:不需要太多关注网络攻击,但是提供了加密功能
    

    app 和 小程序 的对比:

    ------------------------------------ web 测试 ---------------------------------------

    简单来说:WEB 测试适用于所有基于web网站的测试,是浏览器通过 url 来实现网站的功能

    测试点:功能测试、性能测试、用户界面 GUI 测试、兼容性测试、接口测试 、安全测试 等等

    功能测试:

    1、 超链接测试    
           
          1)测试是个超链接
             如果不是,直接提bug,问题:检查标签名和属性名
    
          2)测试超链接能够正常打开,不要出现 404等错误
             常见问题代码:404,500
    
         3)测试超链接的入口和目的地址是否一致,即超链接跳转到的目的地是正确的
    
         4)测试超链接的入口情况:如果是文本入口:文本要简短,精炼,正确没有错别字和歧义
    
                                  如果是图片:图片能够正常显示,图片要形象
    
                                  如果实在是找不到具体形象的图片,最好建议加上 tips
    
          测试超链接可以利用测试工具:xenu 工具等
     
    2、表单测试
    
         表单主要是用来整体提交数据的,post 方法,如果有好几个数据一起提交,就可以放在一个表单中
    
         1)测试正常提交表单,测试基本功能:合法的输入(优先级最高)
         2)测试表单的校验:测试单字段校验:必填项 (是否为空);长度(文本的长度,边界值);格式(日期的格式,邮箱的格式,密码格式);内容(非法的,比如要求数字,填非数字)
                            测试对字段联合校验:字段之间有关联,测试关联性,联动反应(比如:身份证号和出生日期;酒店的软件到店,离店日期)
                           
                            测试多值输入字段(重点关注分隔符):比如入住人,如果是多人,如何分隔,最好给出明确的分隔符提示,或者是换行添加功能
    
                            测试表单的入口和出口
    
                            测试字段取值方式的合理性
                       
                            测试字段顺序的合理性
                         
                            测试字段存在的价值:有一些字段无意义,意义不大,不建议出现
        3)GUI用户界面测试 :测试界面上的信息显示是否正确;
                             测试界面的整体布局是否合理美观;
                             测试界面的默认值;
                             测试放大缩小页面,页面还能否正常显示
    
        4)文件上传测试:测试上传文件的类型(允许的类型)、大小、个数;
                         测试重复上传、同名文件上传;
                         测试上传文件后能够查看文件;
                         测试上传时已选中文件,准备上传,删除该文件;
                         测试文件上传以后,再删除原文件,看系统是否有异常;
                         测试上传的进度:文件大的话,需要有进度条
                         测试上传的过程中取消操作;
                         测试文件删除只有,建议直接存储在磁盘上,并且要被重命名存储,防止发生冲突,数据库中只记录文件的基本信息;
    
        5)cookies 测试:查看是否有敏感信息
    
                         需求:阻止所有cookie 写入,软件cookie 中不能有信息
                         需求:允许一部分cookie 写入,阻止一部分写入 ,软件cookie中的信息是否符合需求
                         需求:测试 cookie 的加密
    
                         测试cookie的过期时间:建议不要超过半年
        6)Session 测试 :测试 session 的过期时间
    
        7)测试设计开发语言(不是重点):
    
        8)数据库测试:不是指去测试数据,而是在测试过程中用到数据库
                        
                       测试点:测试前台页面的数据是否和数据库中存储的数据一致
    

    易用性测试(在测试功能的时候就可以一并测试)

    易用性主要是用来关注有用户的感受,提升用户的感受
    
    先分析用户:年龄(儿童、青少年、老人、中年人)
                地域(中国、外国:使用习惯,比如日期习惯)
                类型(技术类(系统风格科技蓝)、环保类(绿色主题)、金融类
    
    怎么提升:界面上,外观上,要吸引人想去用
              从操作上,跟加简单
              从提示上,简单明了亲切
    

    性能测试:web 系统关注多用户使用情况,需要借助性能测试工具来完成(LR、jmeter)

         关注重点:客户端的响应时间要快(2、5、8 参考)
                   
                   服务器端:资源的使用情况
    

    整体用户界面测试:GUI 测试 排版、布局、颜色、字体等等

    兼容性测试:客户端兼容性 : 测试在不同浏览器上都能正常访问(谷歌、火狐、IE)
    重点要兼容的就是:浏览器不同类型、不同版本
    还需要测试在不同的操作系统上兼容不同的浏览器

           服务器端的兼容性:服务器端的兼容性测试主要是指同一个软件需要测试不同的web服务器版本。
                             连接不同的数据库,或者使用不同的网络环境看看是否能够正常工作。
    

    安全测试:没有完全的安全的测试,道高一尺魔高一丈
    安全测试需要用到编程技术,数据库技术,网络技术,信息安全技术等等
    1)测试认证和授权 也属于功能测试
    认证:只有合法的注册过的用户才能登录使用系统,非法的不让用

                             怎么认证更安全:认证方式:用户名、密码、验证码(图形、输入、短信)
    
                                             密码强度的策略
                                         
                                            适可而止,多则困扰,少则不安全
                             授权:权限控制   :不同级别的权限控制
                                                对不同的用户进行授权
                                                对不同的功能模块进行授权
    
                             通过登录和权限的控制来增加系统安全
                             
                             细节注意:登录失败,系统提示用户名或者密码错误
                                       未登录,直接输入登录后的页面地址,必须要重新登录
                                       连续多次登录失败,锁定用户账号
    
           2)文件上传漏洞   测试可执行文件或者脚本文件不让上传
                             测试不能只根据后缀名来判断文件的上传类型
                             测试上传的文件要有最大最小的限制,否则很容易把硬盘系统塞满
                             限制同一个IP地址不能连续多次上传文件,很有可能是恶意上传攻击
    
           3)攻击   SQL注入  在页面上输入一些特殊的信息,来改变代码中SQL的执行
                              特殊的信息一般放在第一个输入框
                              特殊的信息:比如 单引号 '(跟前面的单引号配对) ,# mysql的注释符 ,但是输入到 oracle 数据库中 ,oracle中注释 --
                     
                     DDOS 拒绝服务攻击:指的是利用合理的服务请求来占用过多的服务器资源,从而使服务器无法正常处理合法用户的请求,甚至直接导致服务器崩溃。
                            
                                        写代码或者网络协议
    
                     XSS跨站点脚本攻击:指的是往页面中插入恶意的HTML或者javascript 代码,当用户浏览网页的时候,嵌入的代码就会被执行
    

    接口测试(专项测试):集成测试阶段测试最合适,系统测试阶段也可以测试。

    ----------------------------------------------- APP 测试 -------------------------------------

    web 系统 和app 软件的对比:web 系统:淘宝网站
    app :微信

    相同点:都是软件,和其他软件的相同点一样

    不同点:架构模式不一样,测试重点不一样

    有哪些不同?

    安装测试 app有安装、升级测试、有卸载
    web 系统客户端使用的是浏览器,不需要安装

    功能测试 正常的功能实现以外,app需要额外考虑和手机的交互性测试(比如:看视频,听歌,来电话了…视频音乐暂停了,挂了电话,恢复)
    还有一些特殊模式:分屏模式,单手模式

    GUI用户界面测试 app考虑横屏,竖屏模式,是否显示正常,投屏模式,触屏滑动等等

    兼容性测试:app 兼容:不同的手机,不同手机品牌,同一品牌不同型号;手机的操作系统

    性能测试:app 耗电量,流量,内存,cpu, 温度;多用户使用

    APP测试最重要的几个测试点:

    1、功能方面目前市场上没有达到自动化水平,主要是手工测试。出现问题最多的就是:特殊符号、边界值、按钮之类。
    2、兼容性方面考虑手机的版本、型号、分辨率。不同版本是否在差异,一般低版本问题比较多。
    3、稳定性方面主要考虑:闪退、系统崩溃、没有响应等之类。
    4、易用性:界面吸引人,容易理解,操作简单,无错别字等等。
    5、性能测试关注的重点CPU占用,内存占用,电池温度。(依靠工具来实现)
    6、安装、卸载、升级必须要测试

    APP专项测试
    1、APP测试的准备
    确定APP的设备(品牌、型号、尺寸、屏幕分辨率)
    确定APP的版本及操作系统类型(iOS和Android)
    用表格记录APP的设备和版本
    2、网络测试:2G,3G,4G,Wifi,移动,联通,电信,弱网,强网
    不同网络下能正常工作,网络中断,连接,切换
    3、多任务处理,切换及意外情况处理
    正常打开被测APP
    运行APP的功能
    突然被其他应用打断(意外,短信、电话、通知)
    切换到该应用、或者、忽略该应用
    被测APP能够继续之前的操作,不发生退出或者系统崩溃
    4、手势 (长按屏幕,上下、左右滑动,双手指捏合、放大放小)
    5、消息通知及显示
    6、使用高内存的处理 (App对于读取大量图片、视频等进行高内存占用操作的处理能力)
    7、支持的文件格式
    8、APP的用户体验(横屏,字体大小设置以及美观,遵循iOS和Android的设计规范)
    9、APP响应不同的设备用户界面
    10、APP的消息显示和通知显示 (锁屏的通知,下拉通知栏的通知,应用程序消息栏)
    11、APP能否及时显示和同步数据(Web端 + PC端 + APP端 同步消息及数据)
    12、安装、升级及卸载测试
    13、安装之后的最大权限最小权限获取能否正常使用app(或给出友好提示而不是白屏)
    13、操作系统升级之后能否访问APP
    14、应用召唤
    15、多台设备登录
    16、交互测试:验证APP与系统事件交互式的运行表现

    注意:升级以后,能够访问APP,特别关注历史数据的校验

    ------------------------------------- 微信小程序的测试 ------------------------------------

    简单来讲:小程序不用安装就能使用;它的体积也非常小,每一个都不超过1M。

    微信小程序:优点 方便,免安装,释放手机内存,桌面整洁,需要的时候再用;
    缺点:依赖微信
    不是所有的用户需求都可以满足:比如游戏类
    推送消息有限制

    微信小程序特殊测试点

    1、小程序包大小不能超过3M,开发版对大小没有限制,但是体验版和正式版都有限制。
    2、页面层级跳转不能超过10次,比如分类-》居家-》布艺软装-》居家-》被枕-》居家-》。。。达到10次就无法跳转了,如果非要有这种跳转方式,需要考虑不让微信觉得是10次跳转。
    3、缓存,微信小程序为了提升用户体验,会缓存用户的页面及数据,方便下次调用时直接使用。可能产生的问题:
    (1)微信小程序缓存的数据是否和服务器端一致。实际测试时可以先访问页面,然后修改服务器上数据,再回看小程序中页面,看数据是否一致。
    (2)切换相似的页面,看是否缓存的数据会产生混乱,比如居家和餐厨两个分类,切换分类的时候,会不会因为缓存导致具体信息不发生变化。

    更多相关内容
  • 软件测试——程序控制流图,McCabe环形复杂度 根据下边的程序流程图,完成: 1.画出相应的程序控制流图; 根据上述的程序流程图画出程序控制流图 由于一个条件判断语句中复合条件表达式,故需拆开表示 2.给出...

    软件测试——程序控制流图,McCabe环形复杂度

    根据下边的程序流程图,完成:

    1

    1.画出相应的程序控制流图;

    根据上述的程序流程图画出程序控制流图

    由于一个条件判断语句中有复合条件表达式,故需拆开表示

    3

    2.给出控制流图的邻接矩阵;

    1234567
    11110000
    20111000
    30011000
    40001101
    50000111
    60000011
    70000001

    3.计算 McCabe 环形复杂度;

    McCabe 环路复杂度为程序逻辑复杂性提供定量测度。该度量用于计算程序的基本独立路径数目,也即是确保所有语句至少执行一次的起码测试数量。

    程序控制流图中有7个结点,10条边。

    故V(G) = m - n + 2 = 10 -7 + 2 = 5

    程序控制流图中有4个单判定结点

    故V(G)= d + 1 = 4 + 1 = 5

    4.找出程序的一个独立路径集合。

    一条独立路径是指,和其他的独立路径相比,至少引入一个新处理语句或一个新判断的程序通路。V(G) 值正好等于该程序的独立路径的条数。

    • 路径1:1-2-4-7
    • 路径2:1-2-4-5-7
    • 路径3:1-2-4-5-6-7
    • 路径4:1-3-4-7
    • 路径5:1-2-3-4-7
    展开全文
  • 初探微信小程序渗透测试

    千次阅读 2022-03-18 09:36:54
    初探微信小程序渗透测试

    一、前言

    日常做web或者工控相关的渗透测试,偶然的机会接了个微信小程序的项目,研究了一下

    二、初探

    我是将微信装在了模拟器上,不需要模拟器也可以,方法有很多

    不需要模拟器可直接设代理 burpsuite 抓包

    我使用的是夜神模拟器配合 burpsuite 进行抓包,我的夜神模拟器内设系统Android 5.0的版本,版本老的话易于兼容,新的版本都是7.0以上,抓取 HTTPS 包需要配置一些东西,很麻烦,大家可以按照我的版本搭建。

    接下来开始配置抓包环境

    ipconfig查看一下我们本机的ip
    在这里插入图片描述
    在burpsuite添加上代理,端口可随意设置,无要求
    在这里插入图片描述
    打开夜神模拟器,在 WLAN 选择手动代理,并设置代理地址和代理端口,与 burpsuite 的设置对应
    在这里插入图片描述

    保存后,打开浏览器访问ip:port,我这里是192.168.201.96:8888,点击CA Certificate下载证书
    在这里插入图片描述
    由于我这边之前安装好了,详细说一下操作步骤吧
    下载好证书后,打开文件管理器,在sdcard->Download目录中可以看到下载下来的证书
    在这里插入图片描述
    将cacert.der更名为cacert.cer,也就是将后缀改成cer,然后到手机设置->安全中,选择从 SD 卡安装
    在这里插入图片描述
    在这里插入图片描述
    安装好了后,打开浏览器访问百度看看,burpsutie能抓包就说明环境配置成功了

    反编译微信小程序代码包

    在模拟器登录上微信,访问一个小程序,等到小程序全部加载完了后,就可以在模拟器中找到一个文件夹,里面便存放着小程序的代码包

    打开文件管理器,在data/data/com.tencent.mm/MicroMsg会生成一个md5加密命名的文件夹(如果同时有多个文件夹不容易识别的情况,可以选择把MicroMsg文件夹所有内容删除掉,再去重新打开微信小程序,就会得到唯一一个MD5加密命名的文件夹啦,其实看一下文件创建时间就能知道是哪个了)
    在这里插入图片描述
    在该文件夹下的appbrand/pkg目录下找到.wxapkg后缀结尾的文件,其中只有几MB大小的就是刚刚打开的小程序的代码包了
    在这里插入图片描述
    点击勾选之后,来到根目录下的mnt/shared/App目录,打开右上角三个.的功能菜单选择粘贴选择项,将文件复制到该文件夹
    在这里插入图片描述
    在这里插入图片描述
    这个文件夹是与你电脑本机的共享文件夹,点开电脑文件夹,打开文件夹“AppShare”,就能查看到这个代码包了
    在这里插入图片描述
    在这里插入图片描述
    接下来将这个文件进行反编译得到源码

    1、需要配置Nodejs环境(下载地址:https://nodejs.org/zh-cn/download)
    2、下载反编译工具(下载地址:https://wwi.lanzouq.com/i4CM8zr395e)
    3、大多数的小程序代码包会有加密,附上一个解码工具(下载地址:https://wwi.lanzouq.com/iPqZbzr3a2h)

    简单讲一下配置nodejs环境:
    根据自己电脑系统及位数选择,我这里选择windows64位.msi格式安装包,因为不想再配环境变量了,安装的时候默认自己配了
    在这里插入图片描述
    .msi.zip格式区别:

    .msi是Windows installer开发出来的程序安装文件,它可以让你安装,修改,卸载你所安装的程序。说白了.msi就是Windows installer的数据包,把所有和安装文件相关的内容封装在一个包里。
    .zip是一个压缩包,解压之后即可,不需要安装

    安装完成后,.msi格式的安装包已经将node.exe添加到系统环境变量path中,如果你下载的是.zip格式,因为没有安装过程,所以需要手动将node.exe所在目录添加到环境变量path中,查看系统变量验证
    在这里插入图片描述
    安装好后验证一下,打开CMD窗口输入node -v查看版本
    在这里插入图片描述
    接下来安装脚本运行环境,依次输入下列命令

    npm install esprima -g
    npm install css-tree -g
    npm install cssbeautify -g
    npm install vm2 -g
    npm install uglify-es -g
    npm install js-beautify -g
    npm install escodegen -g
    

    在这里插入图片描述
    全部安装好了后,下面开始正式反编译了!
    1、首先将之前获取的代码包解密,利用解密工具,很幸运的是,我访问的这个小程序代码包未加密
    在这里插入图片描述
    2、将下载好的反编译工具wxappUnpacker解压,打开文件夹,在该文件夹打开cmd
    在这里插入图片描述
    3、输入命令node wuWxapkg.js 代码包所在位置,回车即可开始反编译
    在这里插入图片描述
    在这里插入图片描述
    结束后就可在代码包的位置出现一个同名的文件夹,该文件夹就是反编译成功的源码包啦
    在这里插入图片描述
    源码包拿到后,就可以很舒服的看js代码了
    在这里插入图片描述首先挨个js文件点开看,js编程很灵活,招架不住文件太多了,直接上工具!
    代码审计工具大家应该都用过,我这里推荐我用的审计工具Fortify SCA ,审计速度快但误报不少,还算好用,界面简单明了
    这里发现有很多地方存在硬编码加密密钥漏洞,任何有权访问代码的人都可以访问加密密钥。应用程序发布后,除非对程序进行修补,否则无法更改加密密钥。有权访问此信息的员工可以使用此信息闯入系统。如果攻击者可以访问应用程序的可执行文件,他们可以提取加密密钥值。危害还是很大的。
    在这里插入图片描述
    收获不多,但初探过程很有意思,大家可以试一试

    三、下面附上某社区的文章,同样是对微信小程序的,比较详细的审计及漏洞验证方法,供大家学习

    其他类型漏洞案例
    下面举例其他类型的漏洞审计案例,这里目的是为了说明小程序有哪些漏洞可以挖

    信息泄露

    反编译出来的源码泄露登录账号密码,这里是因为在 js 文件中写死了账号密码,只做了前端验证导致的漏洞,从下面贴的两个小程序源码中可以看到
    图片

    图片
    在时间稍稍往前的小程序中,还经常会有泄露小程序secret的情况,简直就是把打开保险箱的密码放在你面前

    未授权接口

    仔细翻找 js 文件能找到不少未鉴权的 api 接口(可以着重注意配置文件,不少配置文件都会写上路由列表),例如该 api 返回大量用户敏感信息
    图片
    测试未授权时,有一些小技巧:例如当在 GET 或者 POST 传参中有token等鉴权参数,例如

    GET /api/GetUserInfo?id=xxx&token=xxxx HTTP/1.1
    

    可以尝试将token参数的值置空或者删除token参数,往往能 bypass 鉴权,我已经遇见好多次这种情况了。举例一个案例:
    该微信小程序可以注册用户,注册账号登录之后抓包,我的账号数据包如下

    GET /wx/queryOrders?orderState=&serviceUid=&repairUid=6864&pageNum=1&pageSize=20&uid=6864&token=9938C366-XXXX-XXXX-XXXX-9C7709D8C9E8
    

    当我尝试将uid参数改成其他用户时,返回权限不足,尝试将token删除

    GET /wx/queryOrders?orderState=&serviceUid=&pageNum=1&pageSize=200&uid=2000
    

    图片
    除此之外,测试一些参数,比如手机号,不知道该系统用户手机号时,可以试试像上面说的将其置空,往往运气好能碰上系统后端查询使用的模糊查询为空时返回所有信息,下面贴图的案例就是将手机号参数置空后,成功获取到账号详细信息
    图片

    越权漏洞

    下面案例举例一个通过 Cookie 中的参数进行鉴权的漏洞,可以通过修改NetId中的值来遍历获取用户信息。此类漏洞的挖掘在鉴权处的源码,审计时可以着重审计其验证流程
    图片

    当时也是依靠这个漏洞获取到 VPN 账号密码,得以进入内网渗透

    逻辑漏洞

    使用 burpsuite 抓取管理员登录数据包,获取返回包
    图片

    该处在login.js文件登录判断条件中,源码判断返回为 0 时登录成功,所以我们将返回包从 1 改成 0 即可登录成功。
    图片

    还有 任意密码重置 ,该处漏洞倒也是在黑盒中无意发现,在修改密码处需要验证对应账号接收到的短信验证码。但怀着尝试的心态通过 buspsuite 抓包绕过 js 限制,随意填写验证码便可以重置任意用户密码,不细心就会很容易忽视的点
    图片

    appid和secret的利用

    当时测试数据的时候,发现添加字符%%会导致其后端报错,返回appid和secret

    图片
    获取到的appid和secret可以到微信的官方接口去自由生成微信小程序的命脉AccessToken
    图片

    拿到 AccessToken,相当于可以控制整个小程序了,并且 AccessToken 微信每天只能生成20次,不断请求满20次的话可以使小程序崩溃无法使用。
    在这里插入图片描述

    写到最后

    个人感觉,微信小程序的渗透我觉得最重要的还是仔细审计一下反编译得到的源码,源码里才都是宝贝

    展开全文
  • 文章目录白盒测试概念白盒测试方法--控制测试语句覆盖判定覆盖(分支覆盖)条件覆盖判定-条件覆盖条件组合覆盖路径覆盖路径测试基路径测试循环测试控制流图基本控制流图复合逻辑下的控制流图图矩阵环形复杂度 ...

    白盒测试概念

    • 又叫结构测试,逻辑驱动测试。把测试对象看作一个打开的盒子,测试人员依据程序内部逻辑结构相关信息,设计或选择测试用例,对程序所有逻辑路径进行测试 。
    • 白盒测试法考虑的是测试用例对程序内部逻辑的覆盖程度。最彻底的白盒法是覆盖程序的每一条路径,但是由于程序中一般含有循环,所以路径的数目极大,要执行每一条路径是不可能的,只能希望覆盖的程序尽可能高些。
      在这里插入图片描述

    白盒测试方法–控制流测试

    逻辑覆盖:根据被测程序的逻辑结构设计测试用例。测试的重点在于判定框。
    在这里插入图片描述
    在这里插入图片描述

    语句覆盖

    • 设计若干条测试用例,使程序中每条可执行语句(所有的方框)至少执行一次。

    判定覆盖(分支覆盖)

    • 设计测试用例,使程序中的每个逻辑判断的取真和取假的分支至少经历一次。无法确定判定内部条件的错误。

    条件覆盖

    • 设计若干测试用例,使程序的每个判定中的每个条件的可能取值至少满足一次。
      在这里插入图片描述
      在这里插入图片描述

    判定-条件覆盖

    • 使判定中每个条件的可能取值至少满足一次,并且使每个判定分支至少执行一次。
    • 同时满足判定、条件两种覆盖标准。
    • 缺点在于没有考虑两个条件的组合情况。
      在这里插入图片描述

    条件组合覆盖

    • 使得每个判断表达式中条件的各种可能组合都至少出现一次。
      在这里插入图片描述
      在这里插入图片描述

    路径覆盖

    • 设计足够多的测试用例,覆盖程序中的每条可能路径。
    • 上述满足条件组合覆盖的测试用例不能覆盖路径acd。
      在这里插入图片描述

    路径测试

    基路径测试

    • 如果把覆盖的路径数压缩到一定限度内,例如程序中的循环体只执行零次和一次,就成为基路径测试。
    • 通过分析程序控制流图的环路的复杂性,导出基本路径集合(独立路径),从而设计测试用例,保证这些路径至少通过一次。
    • 独立路径
      • 独立路径必须包含一条在定义之前不曾用到的边。(每一条新的路径都包含了一条新边)
      • 控制流图中所有独立路径的集合就构成了基本路径集。
    • 程序环形复杂性
      • 程序的环路复杂性即McCabe复杂性度量,又叫圈复杂度。
      • 从程序环路复杂性可导出程序基本路径集合中的独立路径条数。
    • 基本路径测试步骤
      • 导出程序的控制流图;
      • 计算控制流图的环路复杂度V(G);
      • 确定只包含独立路径的基本路径集;
      • 设计测试用例。
        在这里插入图片描述

    循环测试

    • 简化循环的假设
      • 不进入循环
      • 只进入一次循环
    • 简单循环测试需设计五种测试
      • 零次循环;
      • 一次循环;
      • 两次通过循环;
      • m次通过循环,m<循环最大次数;
      • n-1,n次通过循环。其中n是允许通过循环的最大次数。
    • 嵌套循环可按照下面的方法进行测试
      • 从最内层循环开始,将所有其它层的循环设置为最小值;
      • 对最内层循环使用简单循环的全部测试。
      • 由内向外构造下一个循环的测试。测试时保持所有外层循环的循环变量取最小值,并使其它嵌套内层循环的循环变量取“典型”值;
      • 反复进行,直到测试所有的循环。
    • 串接循环
      • 两个或多个简单的循环串接在一起,称为串接循环。
      • 如果两个或多个循环毫不相干,则应作为独立的简单循环测试。
      • 如果两个循环串接起来,而第一个循环是第二个循环的初始值,则这两个循环并不是独立的。如果循环不独立,则推荐使用嵌套循环的方法进行测试。
    • 非结构循环
      • 不能测试,尽量重新设计给结构化的程序结构后再进行测试。

    控制流图

    • 控制流图将程序流程图中结构化构件改用一般有向图的形式表示。
    • 控制流图是退化的程序流程图,图中每个处理都退化成一个结点,流线变成连接不同结点的有向弧。
    • 控制流图中的基本元素
      • 节点和边
        • 节点由带标号的圆圈表示比如一个处理框序列和一个条件判定框(假设不包含复合条件)。
        • 控制流线由带箭头的弧或线表示,可称为边。它代表程序中的控制流。
      • 其中,由边和节点围成的面积称为区域。当计算区域数时,应该包括图外部未被围起来的那个区域。
      • 注意:在选择或多分支结构中,分支的汇聚处应有一个汇聚节点。

    基本控制流图

    在这里插入图片描述

    复合逻辑下的控制流图

    在这里插入图片描述
    在这里插入图片描述

    图矩阵

    • 图矩阵是控制流图的矩阵表示形式。
    • 有m个节点的控制流图矩阵,是一个m*m矩阵,A=(a(i, j)),其中a(i, j)是1,当且仅当从节点i到节点j有一条弧,否则该元素为0。
      在这里插入图片描述

    环形复杂度

    • 概念
      • 环形复杂度也称为圈复杂度,它是一种为程序逻辑复杂度提供定量尺度的软件度量。
      • 环形复杂度的应用–可以将环形复杂度用于基本路径方法,它可以提供程序基本集的独立路径数量。
    • 计算环形复杂度的方法
      • 控制流图中区域的数量对应于环形复杂度。
      • 给定控制流图G的环形复杂度V(G),定义为V(G) = E-N+2,其中E是控制流图中边的数量,N是控制流图中的节点数量。
      • 给定控制流图G的环形复杂度V(G),也可定义为V(G) = P+1,其中P是控制流图G中判定节点的数量。
    展开全文
  • (1) 画出相应的程序控制流图; (2) 给出控制流图的邻接矩阵; (3) 计算 McCabe 环形复杂度; (4) 找出程序的一个独立路径集合。 1. 画出相应的程序控制流图 2. 给出控制流图的邻接矩阵 1 2 3 4 5 6 7 1 1...
  • 软件测试工具都有哪些

    万次阅读 多人点赞 2018-08-20 11:35:38
    小编今天把软件测试常见的工具列了一下,看看没有你现在在用的? 开源测试管理工具:Bugfree、Bugzilla、TestLink、mantis 开源功能自动化测试工具:Watir、Selenium、MaxQ、WebInject 开源性能自动化测试工具:...
  • 计算机组成原理实验:微程序控制实验

    万次阅读 多人点赞 2021-02-07 15:20:32
    通过一个微程序控制程序实验,了解微程序控制的的组成原理、工作原理,同时掌握微程序的编制、写入,观察微程序的翻译机器指令的运行过程。 四、实验内容: 微程序控制器的基本任务是完成当前指令的翻译和执行,即将...
  • 软件测试控制流图

    万次阅读 多人点赞 2019-12-04 13:29:28
    简称流图,是对程序流程图进行简化后得到的,它可以更加突出的表示程序控制流的结构。 控制流图中包含两种图形符号: 节点 控制流线 如何画控制流图 常见结构的控制流图: 图1:常见结构的程序控制流图 对于复合...
  • 本课题主要通过微信小程序心里健康测试系统来达到早预防早干预。 本系统主要采用spring开发框架制。使用的技术mysql数据库、mybatis驱动框架以及tomcat服务端部署,用到的集成开发工具主要是IDEA和jdk1.8。 关键词...
  • 每个项目都应该有测试部门,测试就应该有测试计划,但应该先知道测试计划内容都应该有哪些,该怎么写?(本人初步认为内容应该以下几点,下面的测试计划是一个简单的例子) 1. 概述 1.1 编写目的 1.2 项目背景 ...
  • 设计和开发控制程序

    万次阅读 2019-03-11 20:17:00
    程序规定了对研发项目设计控制,确保新产品满足设计输入的要求,达到正确地提供满足顾客所有要求的产品的目的。 2适用范围 本程序适用于本公司研发项目的控制。 3定义 3.1项目经理:...
  • 使用小程序自动化 SDK,直接执行以下命令: npmi miniprogram-automator --save-dev 使用 首先开启工具安全设置中的CLI/HTTP调用功能。 必须开启以上选项,否则 SDK 将无法正常启动工具自动化功能。 然后直接...
  • 程序测试方案初探

    千次阅读 2017-11-27 11:06:43
    从微信小程序发布这段时间,陆陆续续开发了不少小程序相关的项目,总结了一些通用性的组件,但是对于小程序如何做测试,依然是一头雾水,直到做了不少的项目,积累的一些经验和开源库之后才理清如何做测试,下面将会...
  • 随着测试工程师技能和工资待遇的提升,甚至一部分的开发人员开始转入测试岗位,跨入自动化领域的测试攻城狮越来越多。在自动化测试领域,自动化工具肯定占据了核心的位置。本文总结了常用的测试自动化工具和框架,...
  • 一、实验学时 4学时 二、实验目的 (1)掌握微程序控制器的工作原理和组成结构;...微程序控制器是以保存在只读存储器内的专用程序代替逻辑控制电路。这种只读存储器被称为控制存储器,它以微程序形式保存微控制...
  • 程序控制器之微程序控制器构成

    千次阅读 2017-12-11 11:25:40
    程序控制器构成
  • 白盒测试题目 测试用例+程序流程图

    千次阅读 2019-04-20 14:56:44
    测试用例: 语句覆盖: x=4 y=6 z=9 判定覆盖 : 1. x=4 y=6 z=9 2. x=2 y=4 z=11 条件覆盖: 1. x=4 y=6 z=92. x=2 y=4 z=11 判定/条件覆盖: 1. x=4 y=6 z=92. x=2 y=4 z=11 组合覆盖: 1...
  • 软件测试的类型有哪些

    千次阅读 2019-10-24 15:28:06
    软件测试的类型包括数据和数据库完整性测试、白盒测试、功能测试、UI测试、性能测试、安全性和访问控制测试、故障转移和恢复测试、配置测试等。软件测试的工作是发现问题并整理报告上交,提交给开发工程师确认对软件...
  • 对应于黑盒测试,白盒测试要求测试人员打开软件黑盒,去了解开发人员的代码实现细节,这些细节包括数据流和控制流 数据流方面:进出组件的数据是否能被正确地处理、组件中用于计算使用的数据是否被正确使用、是否...
  • 最近在学软件测试,学到了画,控制流图 圈复杂度 独立路径 测试用例,这里,有些不理解,就网上查了下,发现好多老哥写错了,大佬写的甚至收费79。 我试着写写,如果不足的,大家提提意见,别喷我。 题目如下: ...
  • 软件测试—第六章白盒测试基本路径测试

    千次阅读 多人点赞 2019-11-07 21:28:01
    只要搞清了各种流程,就可以设计出高质量的测试用例来,而不用太多测试方面的经验。 二是在测试时间较紧的情况下,可以有的放矢的选择测试用例,而不用完全根据经验来取舍。 2,什么是基本路径法 从一个程序的...
  • DHT11程序分析和测试

    万次阅读 多人点赞 2019-02-27 19:18:27
    本篇文章对于DHT11进行测试,并且提供程序思路 先看一下DHT11的数据 目前DHT11读出的湿度小数和温度小数都为0(和DHT11的版本有关),它采用单总线协议,但是和DS18B20的不同在于,它没有复杂的控制字节,以及...
  • 白盒测试(程序流程图)

    万次阅读 2016-04-30 21:05:57
    白盒测试又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。...在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。贯穿程序的独立路径数是天文数字。 常用
  • 微信 小程序 APP 渗透测试方案

    千次阅读 2020-05-11 09:55:26
    1 、APP渗透测试简介 模拟黑客对应用进行安全性测试,审计其风险,提供解决方案。可帮助企业全面发现业务漏洞及风险。 在黑客之前找到可导致企业数据泄露、资损、业务被篡改等危机的漏洞,企业可对漏洞进行应急响应...
  • 在这篇文章中,我们将讲解白盒测试的基本概念,以及四大常用的白盒测试方法。
  • 2021年软件测试面试题大全

    万次阅读 多人点赞 2020-11-30 15:16:59
    简述测试流程: 1、阅读相关技术文档(如产品PRD、UI设计、产品流程图等)。 2、参加需求评审会议。 3、根据最终确定的需求文档编写测试计划。 4、编写测试用例(等价类划分法、边界值分析法等)。 5、用例评审...
  • 十七、程序控制流图的画法

    千次阅读 2021-06-16 22:19:05
    定义:控制流图是程序流程图的一种简化,它可以更加突出的表示程序控制流的结构。控制流图只有以下两种简单的图示符号: 1、节点:以标编号的圆圈表示,表示基本的程序块,可以是一个单独的语句,也可以是多个顺序...
  • 常见的软件测试方法

    千次阅读 2020-10-25 00:00:34
    软件测试作为一个技术岗位,也是自己的技术划分的,按照市场上常见的分类,可以分为白盒测试技术、黑盒测试技术以及介于二者之间的灰盒测试技术,每种测试技术更自己独特的分析方法。 1.白盒测试技术 1)代码...
  • 安全测试面试常见问题有哪些

    千次阅读 2021-11-19 14:39:44
    软件测试需要定期在这样的应用程序上进行,以识别威胁并立即采取行动。 什么是漏洞 漏洞可以被定义为任何系统的弱点(Vulnerability),入侵者或bug可以通过该系统进行攻击。如果系统没有严格执行安全性测试,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,013,868
精华内容 405,547
关键字:

属于控制测试的程序有哪些