CN101075208B - 应用于白盒路径测试的测试用例生成方法 - Google Patents

应用于白盒路径测试的测试用例生成方法 Download PDF

Info

Publication number
CN101075208B
CN101075208B CN2007101304697A CN200710130469A CN101075208B CN 101075208 B CN101075208 B CN 101075208B CN 2007101304697 A CN2007101304697 A CN 2007101304697A CN 200710130469 A CN200710130469 A CN 200710130469A CN 101075208 B CN101075208 B CN 101075208B
Authority
CN
China
Prior art keywords
path
circle
elementary
mark
test case
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN2007101304697A
Other languages
English (en)
Other versions
CN101075208A (zh
Inventor
金斌
李维民
蒋光明
王勇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ZTE Corp
Original Assignee
ZTE Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ZTE Corp filed Critical ZTE Corp
Priority to CN2007101304697A priority Critical patent/CN101075208B/zh
Publication of CN101075208A publication Critical patent/CN101075208A/zh
Application granted granted Critical
Publication of CN101075208B publication Critical patent/CN101075208B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种应用于白盒路径测试的测试用例生成方法,包括以下步骤:S102,对代码流程图中的所有圈进行标记;S104,生成经过代码流程图中的所有圈的至少一个分支的路径组成的主路径集;S106,利用主路径集,通过加圈法生成基本路径集;以及S108,根据基本路径集中的每条基本路径的可行情况,生成测试用例。通过本发明,可以保证不同测试人员寻找的基本独立路径集大体一致。

Description

应用于白盒路径测试的测试用例生成方法
技术领域
本发明涉及软件测试技术,更具体地涉及一种应用于白盒路径测试的测试用例生成方法。
背景技术
现有软件测试方法按照测试用例设计来区分,分为白盒测试与黑盒测试。白盒测试也称结构测试或逻辑驱动测试,它是从程序的控制结构出发进行的测试。白盒测试使用被测单元内部如何工作的信息,允许测试人员根据程序内部逻辑结构及有关信息来设计和选择测试用例,对程序的逻辑路径进行测试。基于一个应用代码的内部逻辑知识,测试是基于覆盖全部代码、分支、路径、条件的。按照覆盖标准从低到高分,分别是:语句覆盖、判定覆盖(也称为分支覆盖)、条件覆盖、判定/条件覆盖、条件组合覆盖、和路径覆盖。
覆盖程度最高的是路径覆盖。执行路径测试需要绘制程序流程图、计算圈复杂度、寻找基本路径集、导出测试用例、执行测试用例。在路径测试流程中寻找基本路径集是确定测试用例的关键。
现行的方法有两种:
一种是直接采用肉眼观察找出独立路径集的方法。该方法对于程序流程图中节点和分支比较少的情况比较有效。但存在以下问题:
(1)在路径数大于10并且程序流程图比较复杂的情况下,基本路径集寻找很困难,甚至无法寻找。
(2)该方法由不同测试人员执行会产生不同基本路径集,并生成不同的测试用例集。导致对于同一段代码没有一致的测试用例集。
(3)该方法没有对存在逻辑相关代码的情况进行处理。
(4)该方法不利于进行计算机自动化。
另一种是由McCabe开发的基线法。这种方法首先选择一个基线路径,McCabe建议选择尽可能多的判断节点的路径。接下来重新回溯基线路径,依次“翻转”每个判断点。其中,当节点外度≥2时,必须取不同的边。采用基线路径方法最好从最长的路径开始,然后对该路径中的判断依次“翻转”得到新的路径。该方法存在以下问题:
(1)因基本路径由最长路径“翻转”得到,所以基路径集中的路径较长。从而增加了测试用例的复杂度和测试难度。
(2)McCabe路径“翻转”默认的逻辑前提是代码节点不存在相关性,但由于代码中存在逻辑依赖关系,所以路径越长,存在逻辑冲突的概率越大,从而导致基本路径不可行概率变大。
(3)在某些情况下会导致大部分基本路径不可行,而必须重新寻找独立路径集。
(4)该方法没能对路径的独立性给出一个完整判定。
发明内容
鉴于以上所述的一个或多个问题,本发明提供了一种应用于白盒路径测试的测试用例生成方法。
根据本发明的应用于白盒路径测试的测试用例生成方法,包括以下步骤:S102,对代码流程图中的所有圈进行标记;S104,生成经过代码流程图中的所有圈的至少一个分支的路径组成的主路径集;S106,利用主路径集,通过加圈法生成基本路径集;以及S108,根据基本路径集中的每条基本路径的可行情况,生成测试用例。
本发明可以保证不同测试人员寻找的基本独立路径集大体一致。并且,所选择的基本独立路径集路径是最短的,从而降低了测试用例复杂度和执行难度。另外,本发明可以对路径集独立性进行判断,从而可以保证白盒测试质量。附带地,本发明为复杂代码结构下对路径的测试提供了良好的支持。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1A至图1D是根据本发明实施例的应用于白盒路径测试的测试用例生成方法及步骤的流程图;
图2是利用图1所示方法生成测试用例的过程的流程图。
具体实施方式
下面参考附图,详细说明本发明的具体实施方式。
图1A是根据本发明实施例的应用于白盒路径测试的测试用例生成方法。如图1A所示,该测试用例生成方法包括以下步骤:
S102,对代码流程图中的所有圈进行标记。
具体地,步骤S102可以包括以下步骤(如图1B所示):S1022,绘制代码流程图,计算代码流程图圈复杂度,确定图中圈的个数。S1024,虚线连接代码流程图的入口节点和出口节点,标记出图上封闭区域。S1026,确定环绕每个封闭区域的闭合路径,其中,一条闭合路径就是一个圈。以及S1028,确定所述圈的标记边,并用所述标记边对所述圈进行标记。其中,将每个圈所特有的边确定为标记边。如果圈没有特有的边,则取与已标记圈公共的边中选取一条边作为标记边。
S104,找到至少经过上述所有圈的一个分支的主路径集,同时确定主路径集中每条路径对应的圈组合。
具体地,步骤S104可以包括以下步骤(如图1B所示):S1042,选择一条经过程序某些谓词节点的最短执行路径,并且在该执行路径未能经过所有谓词节点的情况下,继续寻找下一条最短路径,直到所选择的执行路径经过所有谓词节点,并通过所选择的执行路径组成主路径集。S1044,在代码流程图中的谓词节点存在明显相关性时,需要根据相关性来调整主路径集。然后识别主路径集中每条路径中包含的圈标记,由此获得路径的对应圈组合。由主路径与圈组合之间的对应关系,获得主路径集对应的圈组合集。
S106,利用主路径集,采用加圈法生成基本路径集。
具体地,步骤S106可以包括以下步骤(如图1C所示):S1062,在步骤S104中选择的路径数小于代码流程图的圈复杂度的情况下,选择一条主路径“扩展”,每次在路径中加入一个圈标记,其中,该圈标记对应的圈不在主路径集对应的圈组合集内,直到路径中不能加入新的圈标记。接着选择下一条主路径继续进行“扩展”,直到主路径集中所有路径扩展完毕。S1064,合并“扩展”得到的路径与主路径集,获得基本路径集,并获取基本路径集对应的基本路径圈组合集。其中,在步骤S104中选择的路径数等于代码流程图的圈复杂度的情况下,直接进行步骤S108。
S108,根据基本路径集中的每条基本路径的可行情况,生成测试用例。
具体地,步骤S108可以包括以下步骤(如图1D所示):S1082,判断所述基本路径集中的每条基本路径是否可行,如果可行,则生成所述测试用例,否则进行步骤S1084;S1084,判断所述代码流程图的所述谓词节点之间是否存在明显的节点相关性;S1086,如果存在,则根据所述节点相关性对所述基本路径集进行调整,并在经过调整后的所述基本路径集中的每条基本路径都可行的情况下,生成所述测试用例,否则判断所述基本路径集中的基本路径的相关性是否与所述节点相关性一致;以及S1088,如果一致,则生成所述测试用例,否则根据所述基本路径集中的基本路径的隐式相关性对所述基本路径进行调整,并在经过调整后的所述基本路径集中的每条基本路径都可行的情况下,生成所述测试用例。
其中,如果基本路径可以只经过一对相关节点中的一个就构成完整路径,则不去除相关节点的路径。如果存在一对相关节点的判断,并且一节点判断只有在另一个节点参与的循环完成一次后才生效,则不去除这个节点的路径。如果存在一对相关节点,则修改路径经过这两个节点,并去除多余的不可行路径。然后,建立调整后基本路径集对应的圈组合集。
其中,判断所述基本路径集中的基本路径相关性是否与所述节点相关性一致的过程包括以下步骤:找到单圈只出现过一次的路径,并用该圈标记路径;找到多圈只出现过一次的路径,并用该圈组标记路径,并且该圈组中的圈为相关圈;去除已经标记的圈,获得未能分辨的圈组;走读相关代码判断未分辨圈之间的相关性,并在完全识别出圈相关性的情况下,判断识别出来的相关性是否与现有节点相关性一致,如果一致,则生成测试用例,否则路径存在隐式相关,对基本路径进行调整;在未能完全识别出圈相关性的情况下,找到路径组中与未分辨圈最密切的路径剩余圈,判断其与未分辨圈相关性,在完全识别出圈相关性的情况下,判断识别出来的相关性是否与现有节点相关性一致,如果一致,则生成测试用例,否则路径存在隐式相关,对基本路径进行调整
参考图2,说明利用图1所示方法生成测试用例的过程。首先,测试人员绘制被测代码程序的流程图。如图3所示,图中共有16个节点、24条边、1个入口、0个出口。根据图论圈复杂度计算公式:V(G)=(边的数量-节点数量+入口数)+出口节点数量,得出图3的圈复杂度为V(G)=24-16+1+0=9。
然后,测试人员找到图中的区域,如图3中大写字母标出所示。图3包含A-I共9个区域。找到每个区域对应的圈,为了理解方便,圈的编号与区域编号相同。
其中,区域A对应圈A:(2-3,3-2);区域B对应圈B:(4-5-6,4-6);区域C对应圈C:(2-3-4-5-6-7-2);区域D对应圈D:(2-3-4-5-6-7-8-14-16-2);区域E对应圈E:(14-16,14-15-16);区域F对应圈F:(8-9-12-13-8);区域G对应圈G:(12-8,12-13-8);区域H对应圈H:(9-10-8,9-12-8);区域I对应圈I:(10-11-8,10-8)。
其中,圈A对应的标记是:3-2;圈B对应的标记是:4-6;圈C对应的标记是:7-2;圈D对应的标记是:16-2;圈E对应的标记是:15-16;圈F对应的标记是:13-8;圈G对应的标记是:12-8;圈H对应的标记是:10-8;圈I对应的标记是:11-8。
找到经过所有圈的路径集和对应圈组合。对于进入循环的代码,可以将循环作为一个出口看待,所以路径4、5在节点8结束。
其中,路径1-2-3-2的对应圈组合为(A);路径1-2-3-4-6-7-2的对应圈组合为(B,C);路径1-2-3-4-6-7-8-14-16-2的对应圈组合为(B,D);路径1-2-3-4-6-7-8-9-12-8的对应圈组合为(B,G);路径1-2-3-4-6-7-8-9-10-11-8的对应圈组合为(B,I)。
由于节点4、9、14判断分支存在相关性,所以调整上述路径后得到如下基本路径:对应于圈组合(A)的路径1-2-3-2;对应于圈组合(B,C)的路径1-2-3-4-6-7-2;对应于圈组合(B,D)的路径1-2-3-4-6-7-8-14-16-2;对应于圈组合(G)的路径1-2-3-4-5-6-7-8-9-12-8;以及对应于圈组合(B,I)的路径1-2-3-4-6-7-8-9-10-11-8。
节点4、9和14的判断一致,所以减少2条路径,可以减少对节点4和节点14的分支检测。但是,节点4的判断可以不通过节点9就可以找到完整路径,因此不减少节点4的分支判断。分支14的判断需循环一次以后才能判断。需要重新增加对节点14分支的测试。路径测试原则上是每个循环至少要循环一次。这样需要对路径3进行调整。并对路径进行扩展后得到路径集如下:对应于圈组合(A)的路径1-2-3-2;对应于圈组合(B,C)的路径1-2-3-4-6-7-2;对应于圈组合(B,H,D)的路径1-2-3-4-6-7-8-9-10-8-14-16-2;对应于圈组合(G)的路径1-2-3-4-5-6-7-8-9-12-8;对应于圈组合(B,I)的路径1-2-3-4-6-7-8-9-10-11-8;对应于圈组合(F,E)的路径1-2-3-4-5-6-7-8-9-12-13-8-14-15-16-2;对应于圈组合(C)的路径1-2-3-4-5-6-7-2;对应于圈组合(F)的路径1-2-3-4-5-6-7-8-9-12-13-8;以及对应于圈组合(B,H)的路径1-2-3-4-6-7-8-9-10-8。依据上述路径集生成测试用例。
综上所述,本发明与以往技术不同的关键之处在于,从圈的角度去观察代码。把代码看成一组相互关联的圈,找到基本路径独立性与圈组合独立性之间对应关系。在代码流程图中对圈标记后,独立基本路径的寻找转化为圈组合的变换。在基本路径变换中保持圈组合的相对独立性就能够最终保持基本路径之间的独立性。在圈组合变换中遵循最简原则,保持圈组合元素的最少最终保证了独立基本路径的最短与最小。
本发明可以保证不同测试人员寻找的基本独立路径集大体一致。并且,所选择的基本独立路径集路径是最短的,从而降低了测试用例复杂度和执行难度。另外,本发明可以对路径集独立性进行判断,从而可以保证白盒测试质量。附带地,本发明为复杂代码结构下对路径的测试提供了良好的支持。
以上所述仅为本发明的实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。

Claims (7)

1.一种应用于白盒路径测试的测试用例生成方法,其特征在于,包括以下步骤:
S102,对代码流程图中的所有圈进行标记;
S104,生成经过所述代码流程图中的所有圈的至少一个分支的路径组成的主路径集;
S106,利用所述主路径集,通过加圈法生成基本路径集;以及
S108,根据所述基本路径集中的每条基本路径的可行情况,生成测试用例;
其中,所述步骤S102包括以下步骤:
S1022,创建所述代码流程图,计算所述代码流程图的圈复杂度,并根据所述圈复杂度确定所述代码流程图中的圈个数;
S1024,连接所述代码流程图的入口节点和出口节点,标记出所述代码流程图中的封闭区域;
S1026,确定围绕所述封闭区域的圈;以及
S1028,确定所述圈的标记边,并用所述标记边对所述圈进行标记;
其中,所述步骤S104包括以下步骤:
S1042,选择经过所述代码流程图的所有谓词节点的主路径组成所述主路径集;以及
S1044,根据所述主路径集中的每条主路径包含的圈标记,获取所述主路径集中的每条主路径对应的圈组合组成的主路径圈组合集;
其中,所述步骤S106包括以下步骤:
S1062,在组成所述主路径集的所述主路径的数目小于所述圈复杂度的情况下,在所述主路径集中的每条主路径中添加新圈标记,直到所述主路径中不能加入任何新圈标记为止;
S1064,合并添加了新圈标记的每条主路径组成的集合与所述主路径集,组成所述基本路径集;以及
S1066,根据所述基本路径集中的每条基本路径包含的圈标记,获取所述基本路径集中的每条基本路径对应的圈组合组成的基本路径圈组合集。
2.根据权利要求1所述的测试用例生成方法,其特征在于,在所述步骤S106中,在组成所述主路径集的所述主路径的数目等于所述圈复杂度的情况下,直接进行步骤S108。
3.根据权利要求1或2所述的测试用例生成方法,其特征在于,所述步骤S108包括以下步骤:
S1082,判断所述基本路径集中的每条基本路径是否可行,如果可行,则生成所述测试用例,否则进行步骤S1084;
S1084,判断所述代码流程图的所述谓词节点之间是否存在明显的节点相关性;
S1086,如果存在,则根据所述节点相关性对所述基本路径集进行调整,并在经过调整后的所述基本路径集中的每条基本路径都可行的情况下,生成所述测试用例,否则判断所述基本路径集中的基本路径的相关性是否与所述节点相关性一致;以及
S1088,如果一致,则生成所述测试用例,否则根据所述基本路径集中的基本路径的隐式相关性对所述基本路径进行调整,并在经过调整后的所述基本路径集中的每条基本路径都可行的情况下,生成所述测试用例。
4.根据权利要求3所述的测试用例生成方法,其特征在于,判断所述基本路径集中的基本路径相关性是否与所述节点相关性一致的过程包括以下步骤:
找出所述基本路径集中的单圈只出现过一次的基本路径并进行标记;
找出所述基本路径集中的多圈只出现过一次的基本路径并进行标记;以及
获取所述基本路径集中的未标记基本路径之间的相关性,并判断所述未标记基本路径之间的相关性与所述节点相关性是否一致。
5.根据权利要求4所述的测试用例生成方法,其特征在于,在所述步骤S1028中,将所述圈特有的边确定为标记边。
6.根据权利要求5所述的测试用例生成方法,其特征在于,在所述步骤S1028中,在所述圈不具有特有的边的情况下,将所述圈的与已标记圈共有的边之一确定为标记边。
7.根据权利要求6所述的测试用例生成方法,其特征在于,所述新圈标记对应的圈不在所述主路径集所对应的所述主路径集圈组合集中。
CN2007101304697A 2007-07-19 2007-07-19 应用于白盒路径测试的测试用例生成方法 Expired - Fee Related CN101075208B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2007101304697A CN101075208B (zh) 2007-07-19 2007-07-19 应用于白盒路径测试的测试用例生成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2007101304697A CN101075208B (zh) 2007-07-19 2007-07-19 应用于白盒路径测试的测试用例生成方法

Publications (2)

Publication Number Publication Date
CN101075208A CN101075208A (zh) 2007-11-21
CN101075208B true CN101075208B (zh) 2011-04-06

Family

ID=38976270

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2007101304697A Expired - Fee Related CN101075208B (zh) 2007-07-19 2007-07-19 应用于白盒路径测试的测试用例生成方法

Country Status (1)

Country Link
CN (1) CN101075208B (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101901183B (zh) * 2009-05-31 2012-09-19 西门子(中国)有限公司 一种过滤测试用例的方法及装置
CN102566988B (zh) * 2010-12-14 2015-04-22 苏州工业园区谱芯科技有限公司 基于用户使用流程有向图的测试用例自动生成方法及测试方法
CN103580761B (zh) * 2012-07-31 2016-08-03 重庆重邮信科通信技术有限公司 一种通信设备的测试方法和装置
CN103870382B (zh) * 2012-12-10 2018-11-09 百度在线网络技术(北京)有限公司 一种代码风险的检测方法及装置
CN104050082B (zh) * 2014-06-17 2017-04-26 南京大学 一种面向修订的条件判定覆盖的测试数据自动生成方法
CN106155898B (zh) * 2015-04-16 2020-09-01 北京搜狗科技发展有限公司 一种流程图的路径获取方法及装置
CN107566268B (zh) * 2016-06-30 2021-08-17 中兴通讯股份有限公司 以太网路径的获取方法及装置
CN106371823A (zh) * 2016-08-22 2017-02-01 广州酷狗计算机科技有限公司 生成代码块的方法及装置
CN109992498B (zh) * 2017-12-29 2022-12-02 北京京东尚科信息技术有限公司 测试用例的生成方法及系统、计算机系统
CN108536585B (zh) * 2018-03-19 2022-01-11 北京信息科技大学 数据变更影响域分析方法
CN109951355B (zh) * 2019-03-13 2022-09-06 苏州洞察云信息技术有限公司 一种用于分布式系统白盒关联路径追踪的方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1286432A (zh) * 1999-11-27 2001-03-07 深圳市中兴通讯股份有限公司 状态迁移图分解、遍历回路处理和测试用例自动生成方法
EP1236104A1 (en) * 1999-11-10 2002-09-04 Tenfold Corporation Method for computer-assisted testing of software application components
CN1402133A (zh) * 2002-09-13 2003-03-12 中国人民解放军国防科学技术大学 一种面向路径的测试数据自动生成方法
CN1920791A (zh) * 2005-08-22 2007-02-28 王彤 一种程序测试系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1236104A1 (en) * 1999-11-10 2002-09-04 Tenfold Corporation Method for computer-assisted testing of software application components
CN1286432A (zh) * 1999-11-27 2001-03-07 深圳市中兴通讯股份有限公司 状态迁移图分解、遍历回路处理和测试用例自动生成方法
CN1402133A (zh) * 2002-09-13 2003-03-12 中国人民解放军国防科学技术大学 一种面向路径的测试数据自动生成方法
CN1920791A (zh) * 2005-08-22 2007-02-28 王彤 一种程序测试系统

Also Published As

Publication number Publication date
CN101075208A (zh) 2007-11-21

Similar Documents

Publication Publication Date Title
CN101075208B (zh) 应用于白盒路径测试的测试用例生成方法
CN102110048A (zh) 用于基于框架的应用程序的回归测试选择方法和装置
CN101931395A (zh) 集成电路分析系统和方法
Zhonglin et al. An improved method of acquiring basis path for software testing
CN107367686A (zh) 一种rtl硬件木马测试向量的生成方法
CN109657464A (zh) 一种基于路径延时分析的硬件木马检测方法
CN102591641A (zh) 业务流程验证方法及系统
CN106815147A (zh) 一种测试脚本生成方法及装置
CN105224455B (zh) 一种自动生成字符串类型测试用例的方法
JP2007094891A (ja) データベースおよびこれを用いたlsi機能検証方法
CN114218781B (zh) 系统功能与可靠性、安全性及测试性综合建模分析方法
CN106126416A (zh) 一种基于流程编排的服务组合路径推导方法
CN104133747B (zh) 一种现场可编程门阵列芯片应用电路的测试方法
CN104715095B (zh) 一种图形化时钟质量检测分析的方法
Rosen How China is eating Mexico’s lunch
JP4541196B2 (ja) 故障検出改善装置、故障検出改善プログラム、故障検出改善方法
Zhang A characterization of markov equivalence classes for directed acyclic graphs with latent variables
CN102207968A (zh) 一种基于检索结果相关性判断的检索方法及装置
CN110955892A (zh) 一种基于机器学习和电路行为级特征的硬件木马检测方法
KR20080074448A (ko) 모듈 단위 자가 검출 방식 기반의 캐리 선택 덧셈기의 에러수정 방법 및 그 캐리 선택 덧셈기
CN112241975B (zh) 特征模板的匹配定位方法和匹配定位装置
US7050942B2 (en) Object state classification method and system, and program therefor
CN111460747A (zh) 一种用于集成电路设计的标准单元追踪方法
US10585449B1 (en) Clock circuitry for functionally safe systems
Majhi et al. An efficient automatic test generation system for path delay faults in combinational circuits

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20110406

Termination date: 20160719