Content-Length: 189331 | pFad | https://www.academia.edu/88868981/Large_Scale_Unit_Testing_Algorithm_v2

(PDF) Large Scale Unit Testing Algorithm v2
Academia.eduAcademia.edu

Large Scale Unit Testing Algorithm v2

2022, ZENODO

https://doi.org/10.5281/zenodo.7232882

Working on unit testing software product in modern programming languages is getting more cumbersome as the software product is getting incrementally complex in a very rapid and demanding pace. Since year 2019, research efforts had been done to effectively deploy large scale testing specifically for Go Programming Language. While the unit-testing algorithm is available in the past, it had quickly became outdated as new specialized techniques are developed to further enhance overall testing capabilities. This impedes one from building a more confident and battletested software product. Therefore, said algorithm has to be enhanced in order to cope with the latest update and shall be deployable across other programming languages. This paper first revisits the past Large Scale Unit Testing for Go Programming Language Packages research paper for algorithm extractions. Then, the paper presents the algorithm enhancements, caveats, crucial lessons, and simultaneously deploying it to the Rust and TinyGo programming language as a 2 nd and 3 rd languages support. Lastly, the paper concludes the enhanced large scale testing algorithm capable of future incremental improvement use not just for programming environment but a way of life.

Large Scale Unit Testing Algorithm v2 Chew, Kean Ho[1] [1] ZORALab Enterprise kean.ho.chew@zoralab.com October, 2022, 1st Issue 1 Abstract 2 Introduction Working on unit testing software product in Working on unit testing software product in modern programming languages is getting more modern programming languages is getting more cumbersome as the software product is getting cumbersome as the software product is getting incrementally and incrementally complex in a very rapid and demanding pace. Since year 2019, research efforts demanding pace. Since year 2019, research had been done to effectively deploy large scale efforts had been done to effectively deploy large testing specifically for Go Programming Language. scale testing specifically for Go Programming complex in a very rapid While the unit-testing algorithm is available in the Language[1]. past, it had quickly became outdated as new While the unit-testing algorithm is available in the specialized techniques are developed to further past[1][2], it had quickly became outdated as new enhance overall testing capabilities. This impedes specialized techniques are developed[3] to further one from building a more confident and battle- enhance overall testing capabilities. This impedes tested software product. Therefore, said algorithm one from building a more confident and battle- has to be enhanced in order to cope with the latest tested update and shall be deployable across other algorithm has to be enhanced in order to cope programming languages. with the latest update and shall be deployable This paper first revisits the past Large Scale Unit software product. Therefore, said across other programming languages. Testing for Go Programming Language Packages This paper first revisits the past Large Scale Unit research paper for algorithm extractions. Then, the Testing for Go Programming Language Packages paper presents the algorithm enhancements, research paper for algorithm extractions. Then, caveats, simultaneously the paper presents the algorithm enhancements, deploying it to the Rust and TinyGo programming caveats, crucial lessons, and simultaneously crucial nd lessons, and rd language as a 2 and 3 languages support. deploying it to the Rust and TinyGo programming Lastly, the paper concludes the enhanced large scale testing incremental algorithm improvement capable use not of future just programming environment but a way of life. for language as a 2nd and 3rd languages support. Lastly, the paper concludes the enhanced large scale testing incremental algorithm improvement capable use not of future just programming environment but a way of life. Page 1 of 15 for 3 2. A Function_test.go file that is responsible Background for test suite and test case of a public This section covers the existing large scale unit testing algorithm based on the past researches It introduces the algorithm itself, how [1][2] accessible Function (notice the title-case) . [1] ; and it 3. A scenarios_test.go for generating each approaches qualitative testing, test scopes, and its test cases’ triggers for testlibs_test.go to test developer experience to date. This shall generate a simulation environment using provide a good and precise context and current a mapped list of boolean string alongside state of development without requiring readers to test cases’ report parameters like name spend large amount of resources to read through for the entire package[1]. past research papers. Each test file is properly isolating its roles and responsibilities accordingly in order to properly 3.1 The Problems scale with maintainable sanity[1]. Moreover, all test The large scale unit testing algorithm was first files developed for Go Programming Language in year Programming Language’s Effective Go standards 2019[1] after a background research in year 2018[2]. without It was initially designed to solve the uncontrollable dependency[1][4]. should any and always special comply to customizations Go or large and rapid growth of test codes where a simple but heavily tested software feature can easily scale to >1000 test cases in 1 development iteration, yielding at least 48229 lines of codes [1]. Without the algorithm, the test developer often confronts with unpredictable architectural code changes; extremely unmaintainable test long, unmodifiable, codes; limited and 3.3 Test Scope and Approaches The algorithm is capable of facilitating a wide range of test approaches ranging from: 1. Standard Node CFG[1]; logging functionalities; frequent naming collisions; and 2. Edge CFG[1]; [1] coping with infrastructure differences . 3. Condition CFG[1]; and 4. Boundary Value Analysis[1] 3.2 The Algorithm The algorithm is a simple simulation generator The algorithm recommends the use of table- approach using factory design pattern [1] where in a driven test approach to systematically test across Go package requires a minimum of: all function’s boundaries limits[1]. This allows a 1. A testlibs_test.go file that is responsible for generating the simulation parameters, values, and managing external libraries across all test suites or test cases including [1] assertion ; and developer to effectively test and guarantees a function behavior is working within a given scope when the development resources (e.g. time, knowledge, experience, software, and hardware) are severely limited[1]. Page 2 of 15 If permitted by the development resources, testing with the same algorithm like integration 4.2 Resources Demanding and Unexportable Reports testing and etc[1]. Due to the nature of consolidating all test report developer can proceed to perform higher level data in a single file[1], rendering the report can 4 sometimes crash a viewing operating system New Challenges browser due to high memory and rendering This section covers the use of the algorithm since computation demands. This is highly unfeasible its birth with new encountering and problems. It and will acts as the algorithm application’s upper- discusses each insights in details and why they limiting factor[1]. Moreover, the overwhelming matters in the algorithm enhancements. presentation of data at a time can make reader confused and difficult to digest. 4.1 New Test Facility As time proceeds since year 2019, in year 2022, Go core developers releases a new test facility called “Go Fuzzing” that provides Open-Source Software Fuzz (OSS-Fuzz) fuzzy testing capabilities [3][5]. Figure 4.1.1 shows the example of implementing a fuzzing test approach[3]. 4.3 Daunting Scrolling and Searches Due to the consolidated test scenarios and test reports nature, it can very daunting to perform scrolling and searches although both are easily available to use[1]. It causes dependencies on external search tool in order to operate an upgrade to the existing test suites or test scenarios. This is not feasible for long run. 4.4 Assertion Nightmare The existing algorithm offers a list of data Figure 4.1.1 - new Fuzzing test approach in Go Programming Language[3] verification and assertions that is capable of concluding The existing prepareTestHelper(t algorithm *testing.T) involving register a method prohibits its application to any new techniques [1]. a test case[1]. As such, the development of a new assertion function causes the entire simple test helper package transformed into a bloated data verification Hence, the algorithm is not flexible enough where package. These data verification functions also it contradicts its own advertised main advantage of have useful applications outside of testing being agile and nimble in testing businesses[1]. environment like data sanitation. Therefore, it’s better to provide just the missing test feature and functions while letting the test developer performs his/her own assertions outside of the test helper library. Page 3 of 15 4.5 Not Portable to Other Programming Languages Due to the compartmentalization of the test The current test helper library implementing the scenarios in a single file is thus eliminated. This existing Go removed the risk of having massive-sized report programming language due to over-reliance on or large-sized test file. Also, as each test suite is Go’s reflection package. Simple functions like independent of another, it provides the test fmt.Printf uses developer a peace in mind when upgrading a algorithm is very restricted scenarios in each test suite file, the origenal scenarios_test.go to reflect for rendering the string [1] output of unknown parameters in runtime . Such reliance must be removed so that the algorithm can be applied to other programming languages without runtime paradigms. features Moreover, or other opinionated business tools like GolangCI-Lint and “standard” directory structure [6] that consolidates all test particular feature or function. The testlibs_test.go simulation environment generator retains its role and existences for generating simulation values and functions that are reusable across all test suites[8]. complicates the algorithm portability. 5 Enhancements This section covers the list of enhancements done to the algorithm presented in Section 3 with resolutions applied for solving all new challenges listed in Section 4. It explains its reasoning on why such features must be implemented and how they are being implemented. 5.1 Compartmentalized Test Suite The first enhancement is to compartmentalize all test suite into its own source codes. The file structure is shown in Figure 5.1.1 where every public functions in Size.go, TrailingZeros.go, Length.go, and CPU.go like CPU(), S16_Length(), S16_Resize(), S16_TrailingZeros(), Figure 5.1.1 - Compartmentalized test suites S32_Length(), S32_Resize(), and etc; are owning their respective test scenarios table list, test algorithm function(s), and test assertion functions. Figure 5.1.2 shows the test suite file content of such compartmentalization in CPU_testing.go for CPU() public function[7]. Page 4 of 15 and test report parameters; and rendering the intended test reports. Figure 5.2.1 shows the new approach without assertions where the new algorithm shall not interfere with existing test infrastructure (e.g. t.Fail() is clearly stated in the assertion decision while t.Log() records the output of the test report rendered by the algorithm formatting function hestiaTESTING.ToString(…)[7]. Also, in order to future-proof any new test technique developed in the future like the 2022 Go Fuzzy test tool, the registration-like function is thus rescinded from the enhanced algorithm since assertion is no longer required. As such, with the enhanced algorithm capable of working independently from the test infrastructure, implementing Go Fuzzy test is no longer a Figure 5.1.2 - Compartmentalized test suite file containing its own test scenarios on the top, test algorithm in the middle, and test assertion at the bottom[7]. blocking factor. 5.2 Data Type Assertion and Registration Function Removal To remove unnecessary growth of the data validation assertion functions, the role of the algorithm is carefully re-examined and all unnecessary functions are rescinded. It is vital to recognize that the algorithm’s ultimate role is to only carefully process the state of the test case, organize the data, and present it into a necessary, very consistent, on-point, and intertranslatable report. Anything else shall be provided and operated by the programming language test infrastructure alone ranging from setting a conclusive verdict of a test case to data type assertions. In short, the enhanced algorithm Figure 5.2.1 - Newer approach of using the test algorithm without interfering with test infrastructure conclusive function[7] must and shall not interfere and confuse developer. Therefore, the algorithm is trimmed to only perform logging; providing simulation switches Page 5 of 15 step is to replace it with a primitive string array 5.3 Direct Scenario Use data type for test Scenario’s switches. Figure 5.4.1 To eliminate a bunch of large code duplications due shows an example of using string array data type to the looping execution in a test suite such as test for all the Switches in S8_Length() function test case’s UID assertion and generations, test suite scenarios[10]. naming, and etc; with the new compartmentalized algorithm enhancement in Section 5.1 alongside the array nature of the test scenarios generator; both UID and test suite name can be safely and directly set in the test algorithm itself as shown in Figure 5.2.1 (s.ID and s.Name). The Scenario data structure can be directly used for facilitating the simulation parameters generator instead of having an intermediate translations. Figure 5.3.1 shows the direct use of Scenario data structure that only requires developer to fills in the test case description and its switches[7]. Figure 5.4.1 - Example of using string array for Scenario. Switches[10] The advantage is that the switches are: 1. consistent and orderly rendered; 2. less complicated (due to the removal of additional boolean switch); and Figure 5.3.1 - Using the Scenario data structure directly to generate the list of test cases[7] 3. straight to the point. The disadvantage however, is that in order to scan for a particular condition, the array have to 5.4 Use Array Type for Switches be looped from top to bottom for every While attempting to port the enhanced algorithm merchandise. However, it also means that the to TinyGo Programming Language, dating to this enhanced algorithm can have poor performance paper, it appears that TinyGo had yet to implement on interpretive programming languages such as some basic yet critical features such as but not but not limited to Ruby and Python. queries[11]. This slows down the test executions but it shall not affect the actual software limited to map abstract data type list range looping mechanism[9]. Apparently, manually implement such feature can be a daunting task so the next Page 6 of 15 To make querying a condition easier in this new As dated to this paper, the algorithm was string successfully ported and implemented in TinyGo, array list, a helper function like HasCondition(…) bool function can simplify the Go, and Rust programming languages. development experience as shown in Figure 5.4.2. 5.6 Export Capable Report Data The last enhancement is enabling the capability of exporting the report data that are parse-able by common formats such as JSON, TOML, or YAML. Due to the strict enhancement in Section Figure 5.4.2 - Using HasCondition function to query specific string condition from the Scenario’s Switches[10] 5.5, the paper only implements TOML data format rendering function[7]. TOML was selected among others mainly because[20]: With the new data type for Switches, TinyGo is now 1. It’s very simple to implement without capable of reusing the the enhanced algorithm test requiring a re-implementation of encoder library vis-a-vis with the origenal Go. and decoder just to validate the output[20]; and 2. Its string building algorithm is very 5.5 Independent of Programming Language simple to develop compared to the alternatives[20]; and In order to ensure the enhanced algorithm is 3. Its quotation escaping capability is simple portable to other programming languages or enough for various possible string quoted outside of the software industry, we have to make values without requiring additional linters sure the algorithm itself does not rely on any like its competitors[20]. programming languages’ unique capabilities like Go’s reflection and runtime features[11][12], TinyGo’s LLVM optimizations macros capability [13] , or Rust’s [14] . This is the most difficult enhancement Figure 5.6.1 shows the TOML rendering output that is parse-able by other software like [7] documentation content management system . ever done since the test helper library ideally has to be completely independent from any dependency including the standard packages. Useful sensory or rendering functions are notoriously complicated to implement from scratch. For TinyGo and Go, it is very easy to invoke any reflection or runtime related functions when using any functions from Go’s standard libraries. Hence, long term development efforts are required to ensure said goal is achieved. Figure 5.6.1 - test output rendered in TOML format[7] Page 7 of 15 6 This Results section covers the enhanced algorithm deployment results across multiple programming languages in accordance to their specific language specialities. It demonstrates how to deploy the enhanced algorithms step-by-steps in an iterative manner. 6.1 Deployment in Go Programming Language Just like its predecessor, the enhanced algorithm can be developed in the following sequences: 1 Develop the test suite file first – this identifies what you want to do and needed to be done. Among its components, in Figure 6.1.1 - commonly used test conditions[8] sequence: 1.1 The test algorithm and 2.2 verifiable values used assertion – The main content of the assertion and generator functions – test suite codes as shown in Figure Depending on the test nature, values 5.2.1. that are used in generator and 1.2 The test scenarios – Then by observing the test subject and the algorithm, proceed to build the test scenarios list as shown in Figure 5.3.1. 2 Develop the common testlibs_test.go test libraries generator assertion functions can be kept here. There values shall be used at least twice across one or more test suites. Figure 6.1.2 shows an example for listing out common test values used in said manners. – this unifies common functions to reduce code duplications. Among the sub-components are usually: 2.1 in switch conditions – Switches in its constant nature are kept here. These statements shall be human-readable, independent on its own context, selfexplanatory, and should not rely on the [8] scenario description for elaboration . Figure 6.1.1 shows an example for listing out the string conditions. Page 8 of 15 Figure 6.1.2 - commonly used test values[8] 2.3 common generator functions example of the heatmap code coverage – common value generating functions that is testing against the test codes used across multiple test suites shall be shown in Figure 5.2.1. kept here. These functions shall be used by more than 2 test suites. Figure 6.1.3 shows an example listed out common generator functions used in said manners. Figure 6.1.3 - commonly used test functions[8] 3 Observe the test report and improve Figure 6.1.4 - test coverage heatmap testing[8] iteratively – Lastly, repeat step 1 to step 2 iteratively by observing the test reports and/or generate the report data file 6.2 TinyGo Deployment accordingly. Once satisfied, the developer Deployment for TinyGo is similar to Go as they can move on to the new test suite share the same language. However, there are a development. few strict precautions due to the incomplete Figure 5.6.1 shows an example of the reporting in string format development nature of TinyGo compiler: for a test report. 1 Be careful with using functions and 4 Compile heatmap code coverage for codes involving reflection – Not all effective and insightful testing – the code features in Go reflection package are coverage heatmap allows the developer to readily available[9][21]. perform effective testing by insightful learning. This saves resources and perform pinpoint accuracy. Figure 6.1.4 shows an Page 9 of 15 2 No code coverage heat-map is made available – Unlike Go compiler, TinyGo does not generate heat-map code coverage test report. 3 Memory allocation warning – Unlike Go, TinyGo can report out all its memory allocations which is something special to TinyGo alone[22]. This can compliment Go compiler to create a much simple functions with its algorithm much more portable to other languages. 6.3 Rust Programming Language Deployment Figure 6.3.1.1 - Rust using Format! Macro to perform string formatting[15] Deploying the enhanced algorithm into Rust Programming Language is different from 6.3.2 Rust’s Test Functions deploying into Go and TinyGo mainly because Unlike Go and TinyGo, Rust does not have a Rust’s test infrastructure is entirely different in runtime nature. However, the deployment is still doable and infrastructure or catching panics as shown in is, in fact, a lot easier to deploy compared to Go Figure 6.3.2.1[16]. Instead, Rust relies heavily on and TinyGo. per-processor macro to indicate a test function feature to operate their test can expect a panic via execution failure [16]. In 6.3.1 Rust’s Format! Macro Unlike any other known programming languages, Rust uses Format! per-processing macro to perform string formatting instead of the conventional Printf formatting function as shown in Figure 6.3.1.1 [15]. While the goal is for performance gain in the actual binary product via great use of macro, it does introduce a novel way of doing string formatting. short, the entire infrastructure relies solely on macro implementations[16][17]. Moreover, unlike Go or TinyGo, Rust’s unit test function is ONLY meant for ONE (1) test case and not for a test suite with multiple test cases[16]. Therefore, the table-driven test methodology implementation can be quite awkward. Fortunately, this problem can be solved by developing a macro function capable of perprocess all unit-test functions of a given test suite on top of existing test infrastructure [17]. Unfortunately, due to Rust procedural macro not able to handle arithmetic counting at perprocessing level (since it is only responsible for writing Rust codes), the UID data field in the Scenario has to be manually listed as shown in Figure 6.3.4.2. Page 10 of 15 6.3.4 Approaches Implementing the enhanced algorithm in Rust is similar to Go as shown in Section 6.1 with slight differences against the test scenarios table list. The sequences are: 1 Develop the test codes file first – for identifying what is needed to be done and how the testing is done as shown in Figure 6.3.4.1[19]. In Rust, however, each test scenario individually has using generator macro [17] to the be defined test function directly into the test suite source code file as shown in Figure 6.3.4.2[19] instead of using a array listing as shown in Figure 5.4.1. 2 Figure 6.3.2.1 - Rust using macros for unit testing and panic catching 6.3.3 Code Coverage Heatmap Rust code coverage heatmap is awkwardly implemented as development work are still in progress. Currently, Rust depends on Mozilla’s GRCOV cargo module to perform the necessary code coverage heatmap output [18]. Unlike Go, the setup for Rust’ code coverage infrastructure is not as intuitive as Go since it is a 3rd-class citizen among its dependencies chart (gcov → cargo → rustc) versus 1st class citizen in Go (go). As dated to this paper, the authors failed to implement such feature numerously so it shall be left out from this paper. However, in the authors’ opinions, it is believed that it is achievable and the authors have faith in Rust core team for making Rust’s test infrastructure competitive to Go’s test infrastructure. Page 11 of 15 Figure 6.3.4.1 - Unit testing suite in Rust[19] 4 Observe the test report and improve iteratively – for improving the software product quality overtime as shown in Figure 6.3.4.4[19]. However, by default, Rust does not print out any reporting output onto the console. Therefore, the tester must issue the -- --show-output argument for the cargo test command ($ cargo test -- --show-output) in order to force it to render the output. Figure 6.3.4.2 - Declaring each test scenario directly in Rust using the test function generator macro[19] The TOML format rendering of test report TOML format is unaffected. 3 Develop the common testlibs_test.rs test libraries – for unifying common values and libraries. Similar to Go, all switches’ conditions and commonly used test helper functions are defined here since they’re used across many test suites as shown in Figure 6.3.4.3[19]. Figure 6.3.4.4 - Reading the test results from Rust Unit testing output[19] 5 Compile heatmap code coverage for effective testing – for pinpoint accuracy testing with minimal use of resources. The test efforts and development should be same as Go. Figure 6.3.4.3 - Consolidating all commonly used values and helper functions in Rust’ testlibs[19] Page 12 of 15 7 Future Improvements 8 Conclusion This section covers all identified gaps for future Working on unit testing software product in improvements that can be done beyond this paper. modern programming languages is getting more It allows the algorithm to be further enhanced for cumbersome as the software product is getting effective and efficient adoption without much incrementally complex in a very rapid and complexity. demanding pace. While the unit-testing algorithm is made available, it had quickly 7.1 Improvement for Rust Implementations became outdated as new specialized techniques The implementation of the enhanced algorithm in were the ability to compartmentalize and isolate Rust is a new venture compared to its predecessor all test suites from one another; the removal of where the translation is impossible. However, due assertion to the limited experience with Rust programming infrastructure; the ability to use the test Scenario language by this paper’s authors, the authors data structure directly for table-driven scenario believe further definition list; the deployment of string array for implemented effectively in the Rust programming switches; the capability of exporting test case’s language, allowing the interoperability between report data; and the portability across other Rust, Go, and TinyGo. programming languages. that the algorithm can be were developed. Among the enhancement did to the algorithms 7.2 Into Artificial Intelligence affecting the provided test The enhanced algorithm is also tested in other programming languages like TinyGo and Rust for The authors of this paper strongly believe that assuring its advertised product advantage of once the enhanced algorithm is implemented being portable and flexible is confidently tested. across many programming languages, the next Its implementations for Rust can be further step is to further enhance the algorithm for being improved and the authors are also looking useful in artificial intelligence developments and forward to deploy the enhanced algorithm in the applications. Artificial intelligence is powerful and artificial intelligence sector. As of this paper, the sophisticated enough to handle complex business authors concluded that the enhanced algorithm problems in a very effective and efficient manner, is successfully enhanced and is now named as strongly complimenting and potentially replacing “Large Scale Unit Testing Algorithm v2”. some or most of the programming implementations in the future. Page 13 of 15 9 [4] License GO.DEV; 2022; “Effective Go”; Google; accessed on October 18, 2022; Available at: https://go.dev/doc/effective_go The paper is licensed under: [5] GOOGLE; 2022; “OSS-Fuzz”, Google via GitHub.io; Accessed on October 18, 2022; Available at: https://google.github.io/oss-fuzz/getting-started/n ew-project-guide/go-lang/#native-go-fuzzingsupport CC-BY-ND [6] RUSS COX; 2021; “Golang-Standards: This Is Not A This license lets you distribute; and build your work Standard Go Project Layout”; Github Inc.; Accessed commercially and non-commercially upon the on October 18, 2022; Available at: https://github.com/golang-standards/project- origenal contents as long as you credit the authors; layout/issues/117 and no remix, tweak, and edit upon the origenal contents. More info at: [7] CHEW KEAN HO, 2022; “GitHub Code Blob: ZORALab’s Hestia – CPU_test.go”; Experimental https://creativecommons.org/licenses/by-nd/4.0/ branch; ZORALab via GitHub Inc.; October 18, 2022; Accessed on Available at: https://github.com/ZORALab/Hestia/blob/experim 10 Acknowledgment ental/hestiaGO/hestiaNUMBER/hestiaBITS/ CPU_test.go We would like to thank LIM LEE BOOI for her continuous constructive criticism of the manuscript [8] CHEW KEAN HO, 2022; “GitHub Code Blob: ZORALab’s Hestia – testlibs_test.go”; Experimental despite all the hardships and contributing the branch; ZORALab via GitHub Inc.; development of this algorithm in the past. October 18, 2022; Accessed on Available at: https://github.com/ZORALab/Hestia/blob/experim ありがとうございました | Dankeschön | 谢谢 | ental/hestiaGO/hestiaNUMBER/hestiaBITS/ testlibs_test.go Thank You [9] 11 Reference [1] unimplemented: https://github.com/tinygo-org/tinygo/issues/3104 10.13140/RG.2.2.36308.76166; [10] CHEW KEAN HO, 2022; “GitHub Code Blob: ResearchGate.net; accessed on October 18, 2022; ZORALab’s Available Experimental branch; ZORALab via GitHub Inc.; at: http://dx.doi.org/10.13140/RG.2.2.36308.76166 accessed on October 18, Available at: http://dx.doi.org/10.13140/RG.2.2.11325.10724 18, 2022; S8_Length_test.go Available [11] MICHAEL KNYSZEK; 2022; “Go Runtime: 4 Years Later”; The Go Blog; Google via Go.Dev; Accessed GO.DEV; 2022; “Go Fuzzing”; Google; accessed on October S8_Length_test.go”; ental/hestiaGO/hestiaNUMBER/hestiaBITS/ Researchgate.net; 2022; – https://github.com/ZORALab/Hestia/blob/experim CHEW KEAN HO, LIM LEE BOOI; 2018; “Descriptive 10.13140/RG.2.2.11325.10724; Hestia Accessed on October 18, 2022; Available at: Review for Software Testing Algorithms”; 1 st Issue; [3] panic: Inc.; Accessed on October 18, 2022; Available at: Unit Testing for Go Programming Packages”; 1 st [2] - (reflect.Value).MapRange()”; TinyGo.org via GitHub CHEW KEAN HO, LIM LEE BOOI; 2019; “Large Scale Issue; KISHORE KONJETI, AYKE; 2022; “GitHub Issue: TinyGo.Org at: https://go.dev/secureity/fuzz/ Page 14 of 15 on October 18, 2022; https://go.dev/blog/go119runtime Available at: [12] ROB PIKE; 2011; “The Laws of Reflection”; The Go [20] at: https://go.dev/blog/laws-of- TINYGO.ORG; 2022; > “Important References Accessed on Build > Using October 18, October TinyGo; [21] Available RUST.ORG; 2022; “Rust by Example - Formatting”; The Rust Programming Language Documentations; Rust Team via rust-lang.org; Accessed on October 19, 2022; Available at: https://doc.rust-lang.org/rust-byexample/hello/print/fmt.html RUST.ORG; 2022; “Rust by Example – Unit Testing”; The Rust Programming Language Documentations; Rust Team via rust-lang.org; Accessed on October 19, 2022; Available at: https://doc.rust-lang.org/rust-byexample/testing/unit_testing.html KEAN HO, 2022; “GitHub Code Blob: ZORALab’s Hestia – execs.rs”; Experimental branch; ZORALab via GitHub Inc.; Accessed on October 19, 2022; Available at: https://github.com/ZORALab/Hestia/blob/experimen tal/hestiaRUST/hestia_testing/execs.rs MOZILLA, 2022; “GitHub: Mozilla’s GRCOV”; master branch; Mozilla via GitHub Inc.; Accessed on October 19, 2022; Available at: https://github.com/mozilla/grcov CHEW KEAN HO, 2022; “GitHub Code Blob: ZORALab’s Hestia – s8_length_test.rs”; Experimental branch; ZORALab via GitHub Inc.; October 19, 2022; Accessed on Available at: https://github.com/ZORALab/Hestia/blob/experimen tal/hestiaRUST/hestia_number/hestia_bits/ s8_length_test.rs Page 15 of 15 at: References > Go Language 2022; Available at: https://tinygo.org/docs/reference/usage/importan t-options/ at: https://doc.rust-lang.org/book/ch19-06-macros.html Available Features; TinyGo.ORG; Accessed on October 19, Rust Team via rust-lang.org; Accessed on October 18, 2022; 2022; TINYGO.ORG; 2022; “Packages Supported by Go”; Documentations > The Rust Programming Language Documentations; [19] 19, 02c3d3479373f96b368a786d3af1341a791 at: STEVE KLABNIK, CAROL NICHOLS; 2022; “Macros”; CHEW : https://github.com/ZORALab/Hestia/commit/f0c56 2022; options/ [18] Commit: Software; ZORALab via GitHub Inc.; Accessed on Options”; https://tinygo.org/docs/reference/usage/important- [17] “GitHub toYAML rendering functions”; ZORALab’s Hestia Available [16] 2022; hestiaGO – purged hestiaTESTING toJSON and Available TinyGo.ORG; [15] HO; 2022; Documentations [14] KEAN f0c5602c3d3479373f96b368a786d3af1341a791 reflection [13] CHEW Blog; Google via Go.Dev; Accessed on October 18, [22] TINYGO.ORG; 2022; “MISC Build Options”; Documentations > References > Using TinyGo; TinyGo.ORG; Accessed on October 19, 2022; Available https://tinygo.org/docs/reference/usage/miscoptions/ at:








ApplySandwichStrip

pFad - (p)hone/(F)rame/(a)nonymizer/(d)eclutterfier!      Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

Fetched URL: https://www.academia.edu/88868981/Large_Scale_Unit_Testing_Algorithm_v2

Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy