Automated Abstraction and Verification of RIA/Ajax Applications
Although asynchronous technologies such as Ajax make Rich Internet Applications (RIAs) responsive, they can result in unexpected behavior due to nondeterministic client-side processing and asynchronous communication. One difﬁculty in understanding such erroneous behavior lies in the unpredictable contexts of the running system. Dynamic behavior analysis techniques do not help to verify the correctness of certain “blind spots” in the execution path. In this work, we present a static approach for extracting all possible state transitions described in source code from the RIAs. Our approach is based on the assumption that user, server and self interactions with the RIAs can change the states of the application. Our method consists of four steps: 1) using given speciﬁcations of Ajax relevant to interactions as rules, 2) creating a call graph, annotating interactions on it and extracting interaction controls, 3) abstracting the call graph to extract relationships among the interactions, and 4) reﬁning the relationships with the interaction controls. By extracting the state machines of test scenarios of the correct and wrong behavior, it can help developers to pinpoint the statements in the source code that lead to the erroneous behavior. Our approach has been evaluated against a few experimental cases and we conclude that it can extract comprehensible state machines in a reasonable time.
their interactions in invariant occurrence and order. We also present a selective set of interaction invariants derived from Ajax design patterns, as input. If the application behavior breaks the design patterns, JSVerifier automatically outputs faulty execution paths for debugging. The results of our case studies show that JSVerifier can verify the interaction invariants in a feasible amount of time, and we conclude that it can help developers increase the usability of Ajax applications.
- Yuta Maezawa, Hironori Washizaki and Shinichi Honiden, “Extracting Interaction-Based Stateful Behavior in Rich Internet Applications”, In proceesings of the 16th European Conference on Software Maintenance and Reengineering (CSMR ’12), 2012. (PDF)
- 前澤 悠太, 鷲崎 弘宜, 本位田 真一, “インタラクションに着目したRich Internet Applications の欠陥発見の支援”, 情報処理学会論文誌, 特集「ソフトウェア工学」, Vol.54(No.2), 2013年02月 (PDF)
- Yuta Maezawa, Hironori Washizaki, Yoshinori Tanabe and Shinichi Honiden, “Automated Verification of Pattern-based Interaction Invariants in Ajax Applications,” Proceedings of 28th IEEE/ACM International Conference on Automated Software Engineering (ASE2013), pp.XX-YY, Silicon Valley, California, November 11-15, 2013. (PDF)
- Yuta Maezawa, Kazuki Nishiura, Hironori Washizaki, Shinichi Honiden, “Validating Ajax Applications Using a Delay-Based Mutation Technique,” Proceedings of the 29th IEEE/ACM International Conference on Automated Software Engineering (ASE 2014), Västerås, Sweden, September 15-19, 2014. (to appear)
Mutation Analysis for Ajax Application Testing
Gray-Box Testing for Web Applications and Page Object Design Pattern
Web applications are complex; they consist of many subsystems and run on various browsers and platforms. This makes it diﬃcult to conduct adequate integration testing to detect faults in the connections between subsystems or in the specic environments. Therefore, establishing an eﬃcient integration testing method with the proper test adequacy criteria and tools is an important issue. In this paper, we propose a new test coverage called template variable coverage. We also propose a novel technique for generating skeleton test code that includes accessor methods and improves the template variable coverage criterion, using a tool that we developed called POGen. Our experiments show that template variable coverage correlates highly with the capability to detect faults, and that POGen can reduce testing costs.
- Kazunori Sakamoto, Tomohiro Kaizu, Daigo Hamura, Hironori Washizaki and Yoshiaki Fukazawa, “POGen: A Test Code Generator Based on Template Variable Coverage in Gray-Box Integration Testing for Web Applications,” 16th International Conference on Fundamental Approaches to Software Engineering (FASE 2013), March 16-24, 2013.(PDF)
- 坂本一憲，海津智宏，波村大悟，鷲崎弘宜，深澤良彰, “Webアプリの動的部分に着目したグレーボックス統合テストとテンプレート変数カバレッジの提案”, 第19回 ソフトウェア工学の基礎ワークショップ FOSE 2012 in 湯布院, 2012. (PDF)
- PageObjectGenerator (POGen): Generates skeleton test code for WebDriver from html template files
- 青井翔平, 坂本一憲，鷲崎弘宜，深澤良彰, “DePoT: Webアプリケーションテストにおけるテストコード自動生成テスティングフレームワーク”, 第19回 ソフトウェア工学の基礎ワークショップ FOSE 2012 in 湯布院, 2012. (PDF)
Test Coverage Measurement and Spectrum-Based Fault (Bug) Localization
Bug localization technique is effectual approach for locating software bugs using the number of failing and passing test cases that execute the statement. However, existing bug localization tools only support one type of programming languages and one type of suspiciousness metrics. In this paper, We presents customizable bug localization framework supporting multiple programming languages and multiple suspiciousness metrics. By apply each suspiciousness metrics to multiple programming languages and comparing, we show the availability of our proposed.
- Kazunori Sakamoto, Fuyuki Ishikawa, Hironori Washizaki, and Yoshiaki Fukazawa, “Open Code Coverage Framework: A Framework for Consistent, Flexible and Complete Measurement of Test Coverage Supporting Multiple Programming Languages,” IEICE Transactions on Information and Systems, Vol.E94-D, No.12, pp.2418-2430, 2011.(PDF)
- Open Code Coverage Framework: Test-Coverage Measurement Framework supporting multiple programming languages （複数のプログラミング言語に対応したテストカバレッジ測定フレームワーク）
- 下條 清史, 坂本 一憲, 鷲崎 弘宜, 深澤 良彰, “複数言語対応かつ算出式変更可能なバグローカリゼーションフレームワークの提案”, 電子情報通信学会ソフトウェアサイエンス研究会3月 (IEICE-SIGSS), 2013. (PDF, SS13_Shimojo)
- Susumu Tokumoto, Kazunori Sakamoto, Kiyofumi Shimojo, Tadahiro Uehara and Hironori Washizaki, “Semi-automatic Incompatibility Localization for Re-engineered Industrial Software,” Proceedings of the 7th IEEE International Conference on Software Testing, Verification and Validation (ICST 2014), pp.XX-YY, Cleveland, March 31-April 4, 2014. (to appear)
Acceptance Testing utilizing UseCases
In software development using use cases, such as use-case-driven object-oriented development, test scenarios for the acceptance test can be built from use cases. However, the manual listing of execution flows of complex use cases sometimes results in incomplete coverage of the possible execution flows, particularly if the relationships between use cases are complicated. Moreover, the lack of a widely accepted coverage definition for the acceptance test results in the ambiguous judgment of acceptance test completion. We propose a definition of acceptance test coverage using use cases and an automated
generation procedure for test scenarios and skeleton codes under a specified condition for coverage while automatically identifying the execution flows of use cases. Our technique can reduce the incomplete coverage of execution flows of use cases and create objective standards for judging acceptance test completion. Moreover, we expect an improvement of the efficiency of acceptance tests because of the automated generation procedure for test scenarios and skeleton codes.
- Susumu Kariyuki, Atsuto Kubo, Hironori Washizaki and Yoshiaki Fukazawa, “Acceptance-Test based on the Inter-Use Case Relations,” The 5th World Congress for Software Quality (5WCSQ), 2011.(PDF)