AIソフトウェアのテスト技術の助けを借り、「品質エフェクト1」を達成

Zhushao分で記事の仕上げの総会TiD2019品質競争力で(「完全なソフトウェア・テスト」の作者)は、音声品質と効率「の団結」「AIソフトウェアのテスト技術の助けを達成します」

 

TiD2019品質競争力のアセンブリは、専門家をテストし、ソフトアライアンス標準評価チームのリーダーによる「全体のソフトウェアテスト(第3版)」の国内有名なソフトウェアを招待していZhushaoミン先生持参する参加者のための品質を「技術の助けをテストAIソフトウェアを実現します」道の統合「」素晴らしいスピーチ。状況の現在のテストおよびオートメーションからZhushaoミン先生、テストの効率を高めるためにAIとAI技術は、次の3つの領域についてのテストカバレッジを支援します。

 

現在、テストおよび状況の自動化

現在、ソフトウェアの品質工学とソフトウェア開発環境より速く、より速いペース、開発チームは、市場での競争、継続的な送達を達成するためには、ビルド、継続的インテグレーション、継続的なテストを継続する必要性の対象となります。継続的なテストは、今日のソフトウェア開発では、この究極の状態を達成するために必要なテストを究極の目標が必要です。

Googleでは、テストケースの実行には、多くの貴重な時間より短く、60秒以上にすることはできません。Googleはまた、その中に自動テストを強調しました。Googleは、よく知られたGTACを持って前に、自動化されたテストセッションです。今会議では、プロジェクトのパフォーマンスに変更されました。現時点では、パフォーマンスが徐々にそれに注意を払います。グーグル、今アリ、百度や他の大企業を含むエンジニアリング効率の部門と呼ばれる同社の検査部門や品質部門の前にパフォーマンスに注力し始めています。パフォーマンスだけでなく、高速からの反射でなく、品質を反映しています。

なぜテストを行いますか?ビジネス・サービスのための最終テスト。かどうか、私たちは、開発や顧客の問題を解決するために、最終的にはビジネス上の問題を解決するために、行うことをテストしています。開発者は、改善のための開発地域を思い出させて、少数の間違いを犯すことができ、ビルドの品質に多くの開発、およびテストの品質が保護者です。これは、チームがより良い品質の構築を支援します。品質の守護者ではないので、完全にシステムテスト、受け入れテストを行うには最後のように、品質はプロセス全体の品質を守るために守ることができます。

効率試験は、今日の社会で注目されています。ホワイトボックステスト、ブラックボックステスト、手動テスト、自動テスト、より効率的にそれ?Zhushaoミンは、手動テストの効率が時々高いが、今より少ない静的テストが行​​われ、より動的試験に導入することができます。静的テストツールは、人材の多くを投資する必要はありませんいくつかのセキュリティ脆弱性パターンの自動検出を行うには、マンパワーは結果だけを分析する必要があります。基本的に高い10%に減少し、誤警報率が高いかもしれないいくつかのツールは、それはまた、20%-30%を有することができます。

自動化された回帰テストの範囲は、アジャイル開発は確かに完全に手動テストに依存しない、成長して、効率的な実績のあるもたらすでしょう。このビューは、比較的古いですが、一般的には、ソフトウェアのテストは、自動化された回帰テストのために、より適しているが、それでも今日の環境に適用されます。

しかし、開発ツールの能力が比較的弱い、過度に心配ツール、スクリプト自体に焦点を当てている、多くの場合、ビジネス、製品を見落とし品質とカバレッジをテストします。コードとコンポーネントの顔多く、経験豊富なエンジニアの品質を確保するためのシステムおよびビジネスレベルでの探索的テスト。しかし、マシンはより密接にビジネスはまだ非常にまれであると、実際のツールと組み合わせて、今日の人工知能ツールのこのビジネスを理解し、主に廃業していることは非常に困難です。AIのテストツールは、コードを理解することができますが、データは実際には非常に少ないとビジネスを兼ね備えています。マシンが時々あるように4TBのためのオープンソースコードとして、大量のデータを必要としますが、実際のビジネスデータに基づいて比較的小さい、より多くのこれらのコードは、この分野での学習のJava、C、Python言語を行うことができ、さらに行う学習のようにバグへの自動位置決め、バグ自動車修理。しかし、実際のビジネス組み合わせた場合、このツールの企業結合はまだ非常に弱く、人々の上でテストする必要があることがわかりました。

品質の面での試験からは、コードカバレッジはちょうどより客観的な結果であるが、高品質を保証するものではありません100%のコードカバレッジなります開発は簡単に100%のコードカバレッジを行うことができますが、違法測定したり、いくつかの特別な値を入力していません。だから、このような観点、より多くの欠陥の100%のカバレッジを達成するためのコードの行を逃したことになります。今日、ほとんどの企業でも、コードの行の100%が必要とされていないカバーし、コードのビジネスラインの一部のみが80%のカバレッジを達成するために必要。コードは、制御フローとデータフローです。ラインカバレッジは、分岐制御フローが覆われています。メインのデータフローを定義し、唯一の航空宇宙、原子力産業、または変数と参照解析の定義を行いますいくつかの他の生命関連のシステムでは、ソフトウェアコードの解析を行うことはありません一般の変数を参照されます。

テストは、ビジネスの要件を満たすためです。金融テクノロジー企業や他のいくつかの交換の会社に行く前に、彼らは本当にビジネスのテストをしませんでした、とさえビジネスプロセス図ではないことが判明し、ビジネスは何の問題ということを保証することはできません。ビジネスプロセス図は、ビジネス・レベルの制御フローであり、データは、サービスを流れ。機能テストは、テストデータにより行うために、時間の前に行われますが、データは単なるデータのデータモジュールや機能が本当に全体の事業を検証しませんを確認するために、図を流しビジネスを複雑になること、そして完全にデータをもとに検証されていませんデータ・ストリーム。そのセキュリティなど、ビジネス上の意思決定、業務プロセス、ビジネスルール、事業運営、業務データ、または持続的な発展のも、将来の事業は、だから、我々は確認する必要があります。 

ビジネスユーザーの役割、ユーザーの行動、イベント、条件、シナリオ、データ、オペレーティング環境に加えて、今日以上のマイクロクラウドプラットフォームサービスアーキテクチャがあり、並びに構成パラメータの組み合わせテストを検討する必要があります。

 

均一な品質と効率性

当公司是做敏捷开发,拥有专职的测试工程师时,上述“质效合一模型”是值得大家思考和引用的。当开发做新功能的时候,针对新功能做设计、写代码,开发自动化测试比较困难,无法调试脚本,被测对象也不稳定,即使能调效率也是比较低的。所以从这个角度来讲,新功能最好用探索式测试去做,因为不用写测试用例,把省下了写测试用例的时间,来写上一个迭代的、已经通过评审/验证的、稳定的功能,并针对上一个版本的功能做自动化测试。在这样的情况下你才能更好地保证质量,又能提高效率,因为所有的回归测试是自动化的,新功能相对是未知的,用探索式测试发挥人的潜力与智慧,就更好地做到质量和效率的统一

虽然现在都在提倡自动化测试,上面这张图的数据反映了自动化测试的国际水平,但是工信部五所(赛宝)做的国内自动化测试现状调查结果比这个要差很多。这里,自动化测试做得好的只有32%左右,真正做到90%以上的只有4%。还有19%做得还可以,自动化比重超过了50%。可以看出,大多数的自动化测试实际做得不够好

 

AI提高测试效率

早期是手工测试,然后到自动化测试,到后面用健壮的TA工具与开源框架集成,得到大家的欢迎和广泛的应用。

现在行业在推云计算、大数据,希望公司可以构建一个代码库,把所有的代码都放在一起,这样可以更好地复用或者学习。公司也在云化自己的开发环境和测试环境,这样才能有更多的数据积累下来,可以实现更好的机器学习。当前基于云计算平台和大数据,基于生态链工具,可以更好地去完成自动化测试,更具有弹性。未来测试基于新的微服务架构或者其他架构,真正做到智慧、自主。在架构方面甚至在需求工程方面,正在研究这种自主的系统,算法不变可以自主扩展、动态成长。

未来人更多地是做分析、做设计、建模、训练模型。所有的执行应该交给工具去做的。而且在今天是有这个条件,有大量的数据,许多算法也都是成熟的。Google提供了TensorFlow(TF)或其他的一些平台,但这些是脱离业务的。针对自己的业务,需要大量的分析来构建对应的模型。另外人机交互智能更有价值,不能完全靠机器, Google搞AlphaGo,先是AlphaGo做出来才了有AlphaZero,还是要有一个过程。人工智能或者机器人,或者未来的测试机器人是需要人去训练的。就相当于把测试工程师的经验和知识,对业务流程和业务场景的理解赋能给机器人。让工具与用户见面,跟业务有更强的绑定。现在人类可以给工具做按钮、菜单、文字、图标的识别训练,但它还不能真正的认知业务流程。东南大学、复旦大学正在研究知识图谱,在特定的业务领域可以帮助计算机去提高认知。

一般来讲,人工智能有计算智能、感知智能、认知智能,现在计算智能和感知智能已经相对比较成熟,但认知智能比较弱,要让人工智能真正去理解人类业务还是比较困难的。需要人类构建业务流程或者知识图谱,让机器去理解、学习。

人工智能需要靠很大的人力,没有大量的数据标识,机器是不会去识别或者做预测的。所以有时候讲在某些落后地区,非一、二线城市会有大量的人相当于民工一样在做数据标识,这个过程就会比较慢。

人工智能的算法不一定要有数据标识,监督学习需要标识数据,还有无监督学习、强化学习。目前无监督的学习更受欢迎,有更好地应用和发展。

从单元测试扩展到系统测试,文字识别变成图像识别来处理。不管是汽车电子还有其他的领域,可以把有限状态机或者是基于模型测试跟人工智能测试结合起来,测试效果会更好一些。在移动应用这方面的计算能力比较弱一些,可以用多个机器人去模拟用户的操作。在游戏行业,腾讯、华为、网易等公司在测试上应用AI能力方面有了良好应用成果,与高清摄像头结合,可以做到更多的场景识别、人工智能辅助决策,实时游戏控制等。(具体见演讲PPT)

 

AI技术助力于测试覆盖率

AI技术助力于测试覆盖率,可以借助AI提高功能测试覆盖率、源码测试覆盖率、回归测试覆盖率、系统非功能性测试覆盖率等。同时,也可以借助关键字引导的搜索策略以提高测试覆盖率。

回归测试利用AI,选择40%测试用例集可以达到80%的测试覆盖率。通过针对关键字索引提高测试覆盖率。例如:Eggplant AI导入已有测试资产创建模型、使用智能算法选择最佳测试集运行测试,基于模型算法能最大程度减少构建与维护的成本。Eggplant AI的测试覆盖率与以前相比,有很大提高,达到80%-90%。

通过遗传算法和对源码“编译时插桩”的方式自动生成测试用例,以探索二进制程序内部新的执行路径,而且能够不断优化执行路径,从而获得高效的模糊测试策略。这样可以大大提高源码测试覆盖率。

使用NLP进行E2E Web测试依赖项检测验证所有依赖关系,并使用一个新的恢复算法来确保在最终的测试依赖关系,提高回归测试覆盖率。

Peach Fuzzer模糊测试工具通过代理和状态机感知状态,实时调整变异策略,从而发现应用程序中更多的安全性漏洞,可以提高系统非功能性测试覆盖率。

朱少民老师认为未来的AI理想状态有两种,第一种是结合MBT与AI合力相助测试。第二种是探索式测试(ET)与AI结合, AI智能生成代码,ET给AI喂数据、加速AI模型的训练。(具体见演讲PPT)

如要下载PPT,关注《软件质量报道》公众号,输入“质效合一”获取。

其它参考:

发布了209 篇原创文章 · 获赞 32 · 访问量 246万+

おすすめ

転載: blog.csdn.net/KerryZhu/article/details/104029218